@@ -1,642 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_81475C0
|
||||
sub_81475C0: @ 81475C0
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
ldr r0, _08147600 @ =sub_8147654
|
||||
bl CreateTask
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
ldr r1, _08147604 @ =gTasks
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strh r1, [r0, 0x8]
|
||||
strh r5, [r0, 0xA]
|
||||
ldr r0, _08147608 @ =gUnknown_846B4AC
|
||||
lsls r5, 4
|
||||
adds r5, r0
|
||||
ldr r1, [r5]
|
||||
adds r0, r4, 0
|
||||
bl _call_via_r1
|
||||
adds r0, r4, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08147600: .4byte sub_8147654
|
||||
_08147604: .4byte gTasks
|
||||
_08147608: .4byte gUnknown_846B4AC
|
||||
thumb_func_end sub_81475C0
|
||||
|
||||
thumb_func_start sub_814760C
|
||||
sub_814760C: @ 814760C
|
||||
push {lr}
|
||||
ldr r0, _08147630 @ =sub_8147654
|
||||
bl FindTaskIdByFunc
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0xFF
|
||||
beq _08147638
|
||||
ldr r0, _08147634 @ =gTasks
|
||||
lsls r1, r2, 2
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
movs r0, 0x2
|
||||
strh r0, [r1, 0x8]
|
||||
movs r0, 0x1
|
||||
b _0814763A
|
||||
.align 2, 0
|
||||
_08147630: .4byte sub_8147654
|
||||
_08147634: .4byte gTasks
|
||||
_08147638:
|
||||
movs r0, 0
|
||||
_0814763A:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_814760C
|
||||
|
||||
thumb_func_start sub_8147640
|
||||
sub_8147640: @ 8147640
|
||||
push {lr}
|
||||
ldr r0, _08147650 @ =sub_8147654
|
||||
bl FuncIsActiveTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08147650: .4byte sub_8147654
|
||||
thumb_func_end sub_8147640
|
||||
|
||||
thumb_func_start sub_8147654
|
||||
sub_8147654: @ 8147654
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
ldr r1, _08147678 @ =gTasks+0x8
|
||||
adds r4, r0, r1
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x3
|
||||
beq _081476A0
|
||||
cmp r0, 0x3
|
||||
bgt _0814767C
|
||||
cmp r0, 0x2
|
||||
beq _08147682
|
||||
b _081476D6
|
||||
.align 2, 0
|
||||
_08147678: .4byte gTasks+0x8
|
||||
_0814767C:
|
||||
cmp r0, 0x4
|
||||
beq _081476BC
|
||||
b _081476D6
|
||||
_08147682:
|
||||
ldr r1, _0814769C @ =gUnknown_846B4AC
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r4, r2]
|
||||
lsls r0, 4
|
||||
adds r1, 0x8
|
||||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x3
|
||||
strh r0, [r4]
|
||||
b _081476D6
|
||||
.align 2, 0
|
||||
_0814769C: .4byte gUnknown_846B4AC
|
||||
_081476A0:
|
||||
ldr r0, _081476B8 @ =gUnknown_846B4AC
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
lsls r1, 4
|
||||
adds r0, 0xC
|
||||
adds r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r5, 0
|
||||
bl _call_via_r1
|
||||
b _081476D6
|
||||
.align 2, 0
|
||||
_081476B8: .4byte gUnknown_846B4AC
|
||||
_081476BC:
|
||||
ldr r0, _081476DC @ =gUnknown_846B4AC
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
lsls r1, 4
|
||||
adds r0, 0x4
|
||||
adds r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r5, 0
|
||||
bl _call_via_r1
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
_081476D6:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081476DC: .4byte gUnknown_846B4AC
|
||||
thumb_func_end sub_8147654
|
||||
|
||||
thumb_func_start sub_81476E0
|
||||
sub_81476E0: @ 81476E0
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r1, 0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
movs r1, 0x6
|
||||
ldrsh r0, [r4, r1]
|
||||
lsls r0, 3
|
||||
ldr r1, _081477B0 @ =gUnknown_846B42C
|
||||
adds r0, r1
|
||||
bl LoadCompressedSpriteSheet
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r4, r2]
|
||||
lsls r0, 3
|
||||
ldr r1, _081477B4 @ =gUnknown_846B43C
|
||||
adds r0, r1
|
||||
bl LoadSpritePalette
|
||||
movs r5, 0
|
||||
movs r3, 0x10
|
||||
ldrsh r0, [r4, r3]
|
||||
cmp r5, r0
|
||||
bge _08147748
|
||||
_08147714:
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
ldr r1, _081477B8 @ =gUnknown_846B494
|
||||
adds r0, r1
|
||||
movs r2, 0x12
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r3, 0x14
|
||||
ldrsh r2, [r4, r3]
|
||||
ldrb r3, [r4, 0xE]
|
||||
bl CreateSprite
|
||||
lsls r1, r5, 1
|
||||
adds r1, r4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r1, 0x1A]
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r5, r0
|
||||
blt _08147714
|
||||
_08147748:
|
||||
movs r5, 0
|
||||
movs r2, 0x10
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r5, r0
|
||||
bge _081477A4
|
||||
movs r7, 0x3
|
||||
movs r3, 0xD
|
||||
negs r3, r3
|
||||
mov r12, r3
|
||||
ldr r6, _081477BC @ =gSprites
|
||||
_0814775C:
|
||||
lsls r0, r5, 1
|
||||
adds r0, r4
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
lsls r2, r0, 4
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
adds r2, r6
|
||||
ldrb r1, [r4, 0xC]
|
||||
ands r1, r7
|
||||
lsls r1, 2
|
||||
ldrb r3, [r2, 0x5]
|
||||
mov r0, r12
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strb r0, [r2, 0x5]
|
||||
adds r3, r2, 0
|
||||
adds r3, 0x3E
|
||||
ldrb r0, [r3]
|
||||
movs r1, 0x4
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldrh r0, [r4, 0xA]
|
||||
strh r0, [r2, 0x30]
|
||||
mov r3, r8
|
||||
strh r3, [r2, 0x34]
|
||||
strh r5, [r2, 0x36]
|
||||
ldrh r0, [r4, 0x1A]
|
||||
strh r0, [r2, 0x38]
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r5, r0
|
||||
blt _0814775C
|
||||
_081477A4:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081477B0: .4byte gUnknown_846B42C
|
||||
_081477B4: .4byte gUnknown_846B43C
|
||||
_081477B8: .4byte gUnknown_846B494
|
||||
_081477BC: .4byte gSprites
|
||||
thumb_func_end sub_81476E0
|
||||
|
||||
thumb_func_start sub_81477C0
|
||||
sub_81477C0: @ 81477C0
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r4, r0, 2
|
||||
adds r4, r0
|
||||
lsls r4, 3
|
||||
ldr r1, _08147840 @ =gTasks+0x8
|
||||
adds r4, r1
|
||||
movs r5, 0
|
||||
strh r5, [r4, 0x4]
|
||||
strh r5, [r4, 0x6]
|
||||
strh r5, [r4, 0x8]
|
||||
movs r1, 0x3C
|
||||
strh r1, [r4, 0xA]
|
||||
strh r5, [r4, 0xC]
|
||||
strh r5, [r4, 0xE]
|
||||
movs r1, 0x3
|
||||
strh r1, [r4, 0x10]
|
||||
movs r1, 0x78
|
||||
strh r1, [r4, 0x12]
|
||||
movs r1, 0x58
|
||||
strh r1, [r4, 0x14]
|
||||
adds r1, r4, 0
|
||||
bl sub_81476E0
|
||||
movs r0, 0x1C
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r5, _08147844 @ =gSprites
|
||||
adds r0, r5
|
||||
movs r1, 0x4
|
||||
bl StartSpriteAnim
|
||||
movs r0, 0x1C
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldr r1, _08147848 @ =0x0000ffe0
|
||||
strh r1, [r0, 0x24]
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
movs r1, 0x5
|
||||
bl StartSpriteAnim
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
movs r1, 0x20
|
||||
strh r1, [r0, 0x24]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08147840: .4byte gTasks+0x8
|
||||
_08147844: .4byte gSprites
|
||||
_08147848: .4byte 0x0000ffe0
|
||||
thumb_func_end sub_81477C0
|
||||
|
||||
thumb_func_start sub_814784C
|
||||
sub_814784C: @ 814784C
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r5, 0
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r0, _08147860 @ =gTasks+0x8
|
||||
adds r4, r1, r0
|
||||
b _08147880
|
||||
.align 2, 0
|
||||
_08147860: .4byte gTasks+0x8
|
||||
_08147864:
|
||||
lsls r0, r5, 1
|
||||
adds r0, r4
|
||||
movs r2, 0x1A
|
||||
ldrsh r1, [r0, r2]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _081478B0 @ =gSprites
|
||||
adds r0, r1
|
||||
bl DestroySprite
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
_08147880:
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r5, r0
|
||||
blt _08147864
|
||||
ldr r1, _081478B4 @ =gUnknown_846B42C
|
||||
movs r2, 0x6
|
||||
ldrsh r0, [r4, r2]
|
||||
lsls r0, 3
|
||||
adds r0, r1
|
||||
ldrh r0, [r0, 0x6]
|
||||
bl FreeSpriteTilesByTag
|
||||
ldr r1, _081478B8 @ =gUnknown_846B43C
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r4, r2]
|
||||
lsls r0, 3
|
||||
adds r0, r1
|
||||
ldrh r0, [r0, 0x4]
|
||||
bl FreeSpritePaletteByTag
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081478B0: .4byte gSprites
|
||||
_081478B4: .4byte gUnknown_846B42C
|
||||
_081478B8: .4byte gUnknown_846B43C
|
||||
thumb_func_end sub_814784C
|
||||
|
||||
thumb_func_start sub_81478BC
|
||||
sub_81478BC: @ 81478BC
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x34
|
||||
ldrsh r1, [r6, r0]
|
||||
lsls r0, r1, 2
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
ldr r1, _08147900 @ =gTasks+0x8
|
||||
adds r5, r0, r1
|
||||
movs r1, 0x16
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r2, 0xA
|
||||
ldrsh r1, [r5, r2]
|
||||
bl __modsi3
|
||||
cmp r0, 0
|
||||
bne _081479CE
|
||||
ldrh r2, [r5, 0x16]
|
||||
movs r3, 0x16
|
||||
ldrsh r1, [r5, r3]
|
||||
movs r3, 0x14
|
||||
ldrsh r0, [r5, r3]
|
||||
cmp r1, r0
|
||||
beq _081479CE
|
||||
strh r2, [r5, 0x14]
|
||||
movs r1, 0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, 0x4
|
||||
bhi _081479C8
|
||||
lsls r0, 2
|
||||
ldr r1, _08147904 @ =_08147908
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08147900: .4byte gTasks+0x8
|
||||
_08147904: .4byte _08147908
|
||||
.align 2, 0
|
||||
_08147908:
|
||||
.4byte _0814791C
|
||||
.4byte _0814792A
|
||||
.4byte _0814792A
|
||||
.4byte _0814793E
|
||||
.4byte _08147988
|
||||
_0814791C:
|
||||
adds r2, r6, 0
|
||||
adds r2, 0x3E
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x5
|
||||
negs r0, r0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
_0814792A:
|
||||
movs r0, 0x31
|
||||
bl PlaySE
|
||||
ldrh r1, [r6, 0x32]
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r6, 0
|
||||
bl StartSpriteAnim
|
||||
b _081479C8
|
||||
_0814793E:
|
||||
movs r0, 0x15
|
||||
bl PlaySE
|
||||
ldrh r1, [r6, 0x32]
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r6, 0
|
||||
bl StartSpriteAnim
|
||||
ldr r4, _08147984 @ =gSprites
|
||||
movs r2, 0x1C
|
||||
ldrsh r0, [r5, r2]
|
||||
lsls r1, r0, 4
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
adds r1, r4
|
||||
adds r1, 0x3E
|
||||
ldrb r3, [r1]
|
||||
movs r2, 0x5
|
||||
negs r2, r2
|
||||
adds r0, r2, 0
|
||||
ands r0, r3
|
||||
strb r0, [r1]
|
||||
movs r3, 0x1E
|
||||
ldrsh r1, [r5, r3]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
adds r0, 0x3E
|
||||
ldrb r1, [r0]
|
||||
ands r2, r1
|
||||
strb r2, [r0]
|
||||
b _081479C8
|
||||
.align 2, 0
|
||||
_08147984: .4byte gSprites
|
||||
_08147988:
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x3E
|
||||
ldrb r0, [r1]
|
||||
movs r2, 0x4
|
||||
orrs r0, r2
|
||||
strb r0, [r1]
|
||||
ldr r3, _081479C4 @ =gSprites
|
||||
movs r0, 0x1C
|
||||
ldrsh r1, [r5, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
adds r0, 0x3E
|
||||
ldrb r1, [r0]
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r5, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
adds r0, 0x3E
|
||||
ldrb r1, [r0]
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
movs r0, 0x4
|
||||
strh r0, [r5]
|
||||
b _081479CE
|
||||
.align 2, 0
|
||||
_081479C4: .4byte gSprites
|
||||
_081479C8:
|
||||
ldrh r0, [r6, 0x32]
|
||||
adds r0, 0x1
|
||||
strh r0, [r6, 0x32]
|
||||
_081479CE:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81478BC
|
||||
|
||||
thumb_func_start sub_81479D4
|
||||
sub_81479D4: @ 81479D4
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r4, r0, 2
|
||||
adds r4, r0
|
||||
lsls r4, 3
|
||||
ldr r5, _08147A28 @ =gTasks+0x8
|
||||
adds r6, r4, r5
|
||||
movs r0, 0x31
|
||||
bl PlaySE
|
||||
ldr r2, _08147A2C @ =gSprites
|
||||
movs r0, 0x1A
|
||||
ldrsh r1, [r6, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x1C
|
||||
adds r0, r1
|
||||
ldr r1, _08147A30 @ =sub_81478BC
|
||||
str r1, [r0]
|
||||
movs r0, 0x1A
|
||||
ldrsh r1, [r6, r0]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
adds r0, 0x3E
|
||||
ldrb r2, [r0]
|
||||
movs r1, 0x5
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
strb r1, [r0]
|
||||
subs r5, 0x8
|
||||
adds r4, r5
|
||||
movs r0, 0x3
|
||||
strh r0, [r4, 0x8]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08147A28: .4byte gTasks+0x8
|
||||
_08147A2C: .4byte gSprites
|
||||
_08147A30: .4byte sub_81478BC
|
||||
thumb_func_end sub_81479D4
|
||||
|
||||
thumb_func_start sub_8147A34
|
||||
sub_8147A34: @ 8147A34
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0xC
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r0, _08147A88 @ =gTasks+0x8
|
||||
adds r4, r1, r0
|
||||
ldr r0, _08147A8C @ =gReceivedRemoteLinkPlayers
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08147A98
|
||||
ldr r1, _08147A90 @ =gRecvCmds
|
||||
ldrh r0, [r1, 0x2]
|
||||
ldr r5, _08147A94 @ =0x00007fff
|
||||
cmp r0, r5
|
||||
bne _08147A5C
|
||||
ldrh r0, [r1, 0x4]
|
||||
strh r0, [r4, 0x16]
|
||||
_08147A5C:
|
||||
bl GetMultiplayerId
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08147A9E
|
||||
ldrh r0, [r4, 0x18]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x18]
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
movs r2, 0xC
|
||||
bl memset
|
||||
mov r0, sp
|
||||
strh r5, [r0]
|
||||
mov r1, sp
|
||||
ldrh r0, [r4, 0x18]
|
||||
strh r0, [r1, 0x2]
|
||||
mov r0, sp
|
||||
bl RfuPrepareSend0x2f00
|
||||
b _08147A9E
|
||||
.align 2, 0
|
||||
_08147A88: .4byte gTasks+0x8
|
||||
_08147A8C: .4byte gReceivedRemoteLinkPlayers
|
||||
_08147A90: .4byte gRecvCmds
|
||||
_08147A94: .4byte 0x00007fff
|
||||
_08147A98:
|
||||
ldrh r0, [r4, 0x16]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x16]
|
||||
_08147A9E:
|
||||
add sp, 0xC
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8147A34
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -1,438 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_846AFE8:: @ 846AFE8
|
||||
.incbin "graphics/misc/unk_846B008.gbapal"
|
||||
|
||||
gUnknown_846B008:: @ 846B008
|
||||
.incbin "graphics/misc/unk_846B008.4bpp.lz"
|
||||
|
||||
gUnknown_846B42C:: @ 846B42C
|
||||
obj_tiles gUnknown_846B008, 0x0c00, 0x2000
|
||||
null_obj_tiles
|
||||
|
||||
gUnknown_846B43C:: @ 846B43C
|
||||
obj_pal gUnknown_846AFE8, 0x2000
|
||||
null_obj_pal
|
||||
|
||||
gUnknown_846B44C:: @ 846B44C
|
||||
obj_image_anim_frame 0x00, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B454:: @ 846B454
|
||||
obj_image_anim_frame 0x10, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B45C:: @ 846B45C
|
||||
obj_image_anim_frame 0x20, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B464:: @ 846B464
|
||||
obj_image_anim_frame 0x40, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B46C:: @ 846B46C
|
||||
obj_image_anim_frame 0x30, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B474:: @ 846B474
|
||||
obj_image_anim_frame 0x50, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846B47C::
|
||||
.4byte gUnknown_846B44C
|
||||
.4byte gUnknown_846B454
|
||||
.4byte gUnknown_846B45C
|
||||
.4byte gUnknown_846B464
|
||||
.4byte gUnknown_846B46C
|
||||
.4byte gUnknown_846B474
|
||||
|
||||
gUnknown_846B494:: @ 846B494
|
||||
spr_template 0x2000, 0x2000, gOamData_AffineOff_ObjNormal_32x32, gUnknown_846B47C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846B4AC:: @ 846B4AC
|
||||
@ This is a 2D array with one row.
|
||||
@ Why this was done this way is beyond me.
|
||||
@ The data that follow this row are not at all function pointers.
|
||||
.4byte sub_81477C0, sub_814784C, sub_81479D4, sub_8147A34
|
||||
|
||||
gUnknown_846B4BC:: @ 846B4BC
|
||||
.2byte 0x0001, 0x0002, 0x0004, 0x0001, 0x0007, 0x0000, 0x000a, 0x0001, 0x000b, 0x0001, 0x000d, 0x0001, 0x000e, 0x0001, 0x0013, 0x0001
|
||||
.2byte 0x0014, 0x0001, 0x0019, 0x0000, 0x001b, 0x0000, 0x001d, 0x0000, 0x0020, 0x0000, 0x0023, 0x0000, 0x0025, 0x0000, 0x0027, 0x0002
|
||||
.2byte 0x002b, 0x0002, 0x002e, 0x0001, 0x0034, 0x0000, 0x0036, 0x0002, 0x0038, 0x0001, 0x003a, 0x0001, 0x003c, 0x0002, 0x0045, 0x0002
|
||||
.2byte 0x005a, 0x0001, 0x0062, 0x0001, 0x0066, 0x0002, 0x0068, 0x0000, 0x0084, 0x0002, 0x0085, 0x0000, 0x008a, 0x0001, 0x008c, 0x0001
|
||||
.2byte 0x0098, 0x0002, 0x009b, 0x0001, 0x009e, 0x0000, 0x00a7, 0x0001, 0x00ac, 0x0000, 0x00ad, 0x0000, 0x00ae, 0x0002, 0x00af, 0x0002
|
||||
.2byte 0x00b3, 0x0000, 0x00b6, 0x0002, 0x00b7, 0x0002, 0x00bf, 0x0002, 0x00c2, 0x0002, 0x00cc, 0x0002, 0x00d1, 0x0000, 0x00d5, 0x0002
|
||||
.2byte 0x00d8, 0x0000, 0x00da, 0x0002, 0x00dc, 0x0000, 0x00e4, 0x0001, 0x00e7, 0x0000, 0x00e9, 0x0000, 0x00ec, 0x0001, 0x00ee, 0x0002
|
||||
.2byte 0x00ef, 0x0001, 0x00f0, 0x0001, 0x00f6, 0x0001, 0x0115, 0x0001, 0x0118, 0x0002, 0x011b, 0x0000, 0x011c, 0x0000, 0x011e, 0x0001
|
||||
.2byte 0x0120, 0x0000, 0x0121, 0x0000, 0x0122, 0x0001, 0x0123, 0x0002, 0x0125, 0x0002, 0x0127, 0x0002, 0x012a, 0x0001, 0x0188, 0x0000
|
||||
.2byte 0x0189, 0x0000, 0x0137, 0x0002, 0x0132, 0x0002, 0x012d, 0x0001, 0x0172, 0x0000, 0x015e, 0x0002, 0x013b, 0x0000, 0x0142, 0x0000
|
||||
.2byte 0x0163, 0x0000, 0x017e, 0x0001, 0x0164, 0x0002, 0x0151, 0x0001, 0x0161, 0x0001, 0x0162, 0x0001, 0x0182, 0x0000, 0x0183, 0x0000
|
||||
.2byte 0x016b, 0x0002, 0x016f, 0x0002, 0x0153, 0x0002, 0x0141, 0x0002, 0x015f, 0x0000, 0x014c, 0x0002, 0x0158, 0x0002, 0x0186, 0x0001
|
||||
.2byte 0x0168, 0x0000, 0x015a, 0x0000, 0x0175, 0x0001, 0x018b, 0x0001
|
||||
|
||||
gUnknown_846B64C:: @ 846B64C
|
||||
.4byte sub_8148344
|
||||
.4byte sub_81483D0
|
||||
.4byte sub_8148464
|
||||
.4byte sub_81484D0
|
||||
.4byte sub_81485C8
|
||||
.4byte sub_81486C4
|
||||
.4byte sub_8148760
|
||||
.4byte sub_81487B4
|
||||
.4byte sub_814881C
|
||||
|
||||
gUnknown_846B670:: @ 846B670
|
||||
.4byte sub_8148398
|
||||
.4byte sub_8148418
|
||||
.4byte sub_81484B0
|
||||
.4byte sub_814856C
|
||||
.4byte sub_8148664
|
||||
.4byte sub_8148724
|
||||
.4byte sub_8148760
|
||||
.4byte sub_8148800
|
||||
.4byte sub_814881C
|
||||
|
||||
gUnknown_846B694:: @ 846B694
|
||||
.2byte 0x001a, 0x001f, 0x0024, 0x0029, 0x002e, 0x0033, 0x0038, 0x003d
|
||||
|
||||
gUnknown_846B6A4:: @ 846B6A4
|
||||
.2byte 0x0000, 0x0001, 0x0001, 0x0002
|
||||
|
||||
gUnknown_846B6AC:: @ 846B6AC
|
||||
.2byte 0x0058, 0x005f, 0x00dd, 0x00fe
|
||||
|
||||
gUnknown_846B6B4:: @ 846B6B4
|
||||
.byte 0xfd, 0xfa, 0xf8, 0xf6, 0xf3, 0xf1, 0xef, 0xed, 0xeb, 0xe9, 0xe7, 0xe5, 0xe4, 0xe3, 0xe2, 0xe2, 0xe2, 0xe4, 0xe5, 0xe6, 0xe7, 0xe9, 0xea, 0xec, 0xee, 0xef, 0xf1, 0xf3, 0xf5, 0xf8, 0xfa, 0xfc
|
||||
.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfa, 0xf7, 0xf5, 0xf2, 0xf0, 0xee, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe2, 0xe2, 0xe4
|
||||
.byte 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf5, 0xf7, 0xfa, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0xfd, 0xfa, 0xf7, 0xf5, 0xf3, 0xf1, 0xef, 0xed, 0xeb, 0xe9, 0xe7, 0xe5, 0xe4, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe4, 0xe4, 0xe5, 0xe5, 0xe6, 0xe7, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2
|
||||
.byte 0xf4, 0xf5, 0xf7, 0xfa, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
gUnknown_846B744:: @ 846B744
|
||||
.4byte 0, 0, 50, 100, 200, 500
|
||||
|
||||
gUnknown_846B75C:: @ 846B75C
|
||||
.2byte 0x008a, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093
|
||||
|
||||
gUnknown_846B76C:: @ 846B76C
|
||||
.4byte 5000, 1
|
||||
.4byte 8000, 2
|
||||
.4byte 12000, 3
|
||||
.4byte 16000, 4
|
||||
.4byte 20000, 5
|
||||
|
||||
gUnknown_846B794:: @ 846B794 gbapal
|
||||
.incbin "graphics/link_games/unk_846B794.gbapal"
|
||||
|
||||
gUnknown_846B7B4:: @ 846B7B4 gbapal
|
||||
.incbin "graphics/link_games/unk_846B7B4.gbapal"
|
||||
|
||||
gUnknown_846B7D4:: @ 846B7D4 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846B7D4.4bpp.lz"
|
||||
|
||||
gUnknown_846BA00:: @ 846BA00 bin.lz
|
||||
.incbin "graphics/link_games/unk_846BA00.bin.lz"
|
||||
|
||||
gUnknown_846BBB0:: @ 846BBB0 gbapal
|
||||
.incbin "graphics/link_games/unk_846BBB0.gbapal"
|
||||
|
||||
gUnknown_846BBD0:: @ 846BBD0 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846BBD0.4bpp.lz"
|
||||
|
||||
gUnknown_846C520:: @ 846C520 bin.lz
|
||||
.incbin "graphics/link_games/unk_846C520.bin.lz"
|
||||
|
||||
gUnknown_846C8D8:: @ 846C8D8 gbapal
|
||||
.incbin "graphics/link_games/unk_846C8D8.gbapal"
|
||||
|
||||
gUnknown_846C8F8:: @ 846C8F8 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846C8F8.4bpp.lz"
|
||||
|
||||
gUnknown_846D3A8:: @ 846D3A8 bin.lz
|
||||
.incbin "graphics/link_games/unk_846D3A8.bin.lz"
|
||||
|
||||
gUnknown_846D8D4:: @ 846D8D4
|
||||
.4byte 0x000001b0
|
||||
@ {
|
||||
@ .bg = 0,
|
||||
@ .charBaseIndex = 0,
|
||||
@ .mapBaseIndex = 27,
|
||||
@ .screenSize = 0,
|
||||
@ .paletteMode = 0,
|
||||
@ .priority = 0,
|
||||
@ .baseTile = 0x0000
|
||||
@ }
|
||||
.4byte 0x000025e6
|
||||
@ {
|
||||
@ .bg = 2,
|
||||
@ .charBaseIndex = 1,
|
||||
@ .mapBaseIndex = 30,
|
||||
@ .screenSize = 2,
|
||||
@ .paletteMode = 0,
|
||||
@ .priority = 2,
|
||||
@ .baseTile = 0x0000
|
||||
@ }
|
||||
.4byte 0x000016c9
|
||||
@ {
|
||||
@ .bg = 1,
|
||||
@ .charBaseIndex = 2,
|
||||
@ .mapBaseIndex = 12,
|
||||
@ .screenSize = 3,
|
||||
@ .paletteMode = 0,
|
||||
@ .priority = 1,
|
||||
@ .baseTile = 0x0000
|
||||
@ }
|
||||
.4byte 0x000031df
|
||||
@ {
|
||||
@ .bg = 3,
|
||||
@ .charBaseIndex = 3,
|
||||
@ .mapBaseIndex = 29,
|
||||
@ .screenSize = 0,
|
||||
@ .paletteMode = 0,
|
||||
@ .priority = 3,
|
||||
@ .baseTile = 0x0000
|
||||
@ }
|
||||
|
||||
gUnknown_846D8E4:: @ 846D8E4
|
||||
.byte 0, 19, 0, 6, 2, 2
|
||||
.2byte 0x0013
|
||||
.byte 0, 8, 0, 6, 2, 2
|
||||
.2byte 0x001f
|
||||
.byte 255, 0, 0, 0, 0, 0
|
||||
.2byte 0x0000
|
||||
|
||||
gUnknown_846D8FC:: @ 846D8FC
|
||||
.4byte 0, sub_8149DC8
|
||||
.4byte 1, sub_8149F64
|
||||
.4byte 2, sub_8149FD0
|
||||
.4byte 3, sub_814A03C
|
||||
.4byte 4, sub_814A0C8
|
||||
.4byte 5, sub_814A174
|
||||
.4byte 6, sub_814A218
|
||||
.4byte 7, sub_814A264
|
||||
.4byte 9, sub_814A3AC
|
||||
.4byte 8, sub_814A308
|
||||
|
||||
gUnknown_846D94C:: @ 846D94C
|
||||
.string "IES$"
|
||||
|
||||
gUnknown_846D950:: @ 846D950
|
||||
.byte 0x00, 0x02, 0x03
|
||||
|
||||
gUnknown_846D953:: @ 846D953
|
||||
.byte 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
|
||||
gUnknown_846D960:: @ 846D960
|
||||
obj_tiles gUnknown_8479688, 0, 800
|
||||
|
||||
gUnknown_846D968:: @ 846D968
|
||||
obj_pal gUnknown_8479668, 800
|
||||
|
||||
gUnknown_846D970::
|
||||
.2byte 0x0006, 0x0008, 0x0010, 0x0008
|
||||
|
||||
gUnknown_846D978::
|
||||
.2byte 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008
|
||||
|
||||
gUnknown_846D984::
|
||||
.2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x0010, 0x0008, 0x0014, 0x0006
|
||||
|
||||
gUnknown_846D994::
|
||||
.2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008, 0x0014, 0x0006
|
||||
|
||||
gUnknown_846D9A8:: @ 846D9A8
|
||||
.4byte gUnknown_846D970
|
||||
.4byte gUnknown_846D978
|
||||
.4byte gUnknown_846D984
|
||||
.4byte gUnknown_846D994
|
||||
|
||||
gUnknown_846D9B8::
|
||||
.2byte 0x0058, 0x0098
|
||||
|
||||
gUnknown_846D9BC::
|
||||
.2byte 0x0058, 0x0078, 0x0098
|
||||
|
||||
gUnknown_846D9C2::
|
||||
.2byte 0x0038, 0x0058, 0x0098, 0x00b8
|
||||
|
||||
gUnknown_846D9CA::
|
||||
.2byte 0x0038, 0x0058, 0x0078, 0x0098, 0x00b8
|
||||
|
||||
gUnknown_846D9D4:: @ 846D9D4
|
||||
.4byte gUnknown_846D9B8
|
||||
.4byte gUnknown_846D9BC
|
||||
.4byte gUnknown_846D9C2
|
||||
.4byte gUnknown_846D9CA
|
||||
|
||||
gUnknown_846D9E4:: @ gbapal
|
||||
.incbin "graphics/link_games/unk_846D9E4.gbapal"
|
||||
|
||||
gUnknown_846DA04:: @ gbapal
|
||||
.incbin "graphics/link_games/unk_846DA04.gbapal"
|
||||
|
||||
gUnknown_846DA24:: @ 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846DA24.4bpp.lz"
|
||||
|
||||
gUnknown_846DB44:: @ 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846DB44.4bpp.lz"
|
||||
|
||||
gUnknown_846DD18:: @ 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846DD18.4bpp.lz"
|
||||
|
||||
gUnknown_846DE48:: @ 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846DE48.4bpp.lz"
|
||||
|
||||
gUnknown_846DF44:: @ 4bpp.lz
|
||||
.incbin "graphics/link_games/unk_846DF44.4bpp.lz"
|
||||
|
||||
gUnknown_846E0B0:: @ 846E0B0
|
||||
obj_tiles gUnknown_846DA24, 0x0600, 5
|
||||
obj_tiles gUnknown_846DB44, 0x0c00, 6
|
||||
obj_tiles gUnknown_846DD18, 0x0600, 7
|
||||
obj_tiles gUnknown_846DE48, 0x0600, 8
|
||||
obj_tiles gUnknown_846DF44, 0x0200, 10
|
||||
|
||||
gUnknown_846E0D8:: @ 846E0D8
|
||||
obj_pal gUnknown_846D9E4, 5
|
||||
obj_pal gUnknown_846DA04, 6
|
||||
|
||||
gUnknown_846E0E8:: @ 846E0E8
|
||||
spr_template 0, 0, gUnknown_846E170, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E100:: @ 846E100
|
||||
.2byte 0x0060, 0x0060, 0x0060, 0x0072, 0x0078, 0x0078, 0x0078, 0x0072, 0x0060, 0x0060, 0x0046, 0x0050, 0x0060, 0x0072, 0x0078, 0x0080
|
||||
.2byte 0x0078, 0x0072, 0x0060, 0x0050, 0x0032, 0x0048, 0x0060, 0x0072, 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048, 0x002a, 0x0048
|
||||
.2byte 0x0060, 0x0072, 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048
|
||||
|
||||
gUnknown_846E150:: @ 846E150
|
||||
.2byte 0x0010, 0x0028, 0x0048, 0x0068, 0x0088, 0x00a8, 0x00c8, 0x00e0
|
||||
|
||||
gUnknown_846E160:: @ 846E160
|
||||
.4byte gUnknown_846E220
|
||||
.4byte gUnknown_846E238
|
||||
.4byte gUnknown_846E250
|
||||
.4byte gUnknown_846E268
|
||||
|
||||
gUnknown_846E170::
|
||||
.4byte 0xc0000000, 0x00000800
|
||||
|
||||
gUnknown_846E178::
|
||||
.4byte 0x80008000, 0x00000800
|
||||
|
||||
gUnknown_846E180::
|
||||
.4byte 0x80000000, 0x00000800
|
||||
|
||||
gUnknown_846E188::
|
||||
.4byte 0x80004000, 0x00000800
|
||||
|
||||
gUnknown_846E190::
|
||||
obj_image_anim_frame 0x0000, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E198::
|
||||
obj_image_anim_frame 0x0008, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1A0::
|
||||
obj_image_anim_frame 0x0010, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1A8::
|
||||
obj_image_anim_frame 0x0018, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1B0::
|
||||
obj_image_anim_frame 0x0020, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1B8::
|
||||
obj_image_anim_frame 0x0028, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1C0::
|
||||
obj_image_anim_frame 0x0000, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1C8::
|
||||
obj_image_anim_frame 0x0010, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1D0::
|
||||
obj_image_anim_frame 0x0020, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1D8::
|
||||
obj_image_anim_frame 0x0030, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1E0::
|
||||
obj_image_anim_frame 0x0040, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1E8::
|
||||
obj_image_anim_frame 0x0050, 1
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E1F0::
|
||||
.4byte gUnknown_846E190
|
||||
.4byte gUnknown_846E198
|
||||
.4byte gUnknown_846E1A0
|
||||
.4byte gUnknown_846E1A8
|
||||
.4byte gUnknown_846E1B0
|
||||
.4byte gUnknown_846E1B8
|
||||
|
||||
gUnknown_846E208::
|
||||
.4byte gUnknown_846E1C0
|
||||
.4byte gUnknown_846E1C8
|
||||
.4byte gUnknown_846E1D0
|
||||
.4byte gUnknown_846E1D8
|
||||
.4byte gUnknown_846E1E0
|
||||
.4byte gUnknown_846E1E8
|
||||
|
||||
gUnknown_846E220::
|
||||
spr_template 5, 5, gUnknown_846E178, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E238::
|
||||
spr_template 6, 5, gUnknown_846E180, gUnknown_846E208, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E250::
|
||||
spr_template 7, 5, gUnknown_846E188, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E268::
|
||||
spr_template 8, 5, gUnknown_846E188, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E280::
|
||||
.4byte 0x40000000, 0x00000400
|
||||
|
||||
gUnknown_846E288::
|
||||
obj_image_anim_frame 0x0000, 0
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E290::
|
||||
obj_image_anim_frame 0x0000, 4
|
||||
obj_image_anim_frame 0x0004, 4
|
||||
obj_image_anim_frame 0x0008, 4
|
||||
obj_image_anim_frame 0x000c, 4
|
||||
obj_image_anim_loop 1
|
||||
obj_image_anim_frame 0x0000, 4
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_846E2AC::
|
||||
.4byte gUnknown_846E288
|
||||
.4byte gUnknown_846E290
|
||||
|
||||
gUnknown_846E2B4:: @ 846E2B4
|
||||
spr_template 10, 5, gUnknown_846E280, gUnknown_846E2AC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_846E2CC:: @ 846E2CC
|
||||
.byte 0, 1, 1, 28, 9, 15
|
||||
.2byte 0x0001
|
||||
|
||||
gUnknown_846E2D4:: @ 846E2D4
|
||||
.4byte gUnknown_841CB78
|
||||
.4byte gUnknown_841CB88
|
||||
.4byte gUnknown_841CB94
|
||||
@@ -3289,46 +3289,46 @@ gString_Help:: @ 841CB49
|
||||
gString_HelpSystem_ClearTo8:: @ 841CB4E
|
||||
.string "{CLEAR_TO 8}$"
|
||||
|
||||
gUnknown_841CB52:: @ 841CB52
|
||||
gText_SpacePoints2:: @ 841CB52
|
||||
.string " points$"
|
||||
|
||||
gUnknown_841CB5A:: @ 841CB5A
|
||||
gText_SpaceTimes3:: @ 841CB5A
|
||||
.string " time(s)$"
|
||||
|
||||
gUnknown_841CB63:: @ 841CB63
|
||||
gText_PkmnJumpRecords:: @ 841CB63
|
||||
.string "POKéMON JUMP RECORDS$"
|
||||
|
||||
gUnknown_841CB78::
|
||||
gText_JumpsInARow::
|
||||
.string "Jumps in a row:$"
|
||||
|
||||
gUnknown_841CB88::
|
||||
gText_BestScore2::
|
||||
.string "Best score:$"
|
||||
|
||||
gUnknown_841CB94::
|
||||
gText_ExcellentsInARow::
|
||||
.string "EXCELLENTS in a row:$"
|
||||
|
||||
gUnknown_841CBA9:: @ 841CBA9
|
||||
gText_AwesomeWonF701F700:: @ 841CBA9
|
||||
.string "Awesome score! You've\n"
|
||||
.string "won {DYNAMIC 01} {DYNAMIC 00}!$"
|
||||
|
||||
gUnknown_841CBCA:: @ 841CBCA
|
||||
gText_FilledStorageSpace2:: @ 841CBCA
|
||||
.string "There's no room left now.$"
|
||||
|
||||
gUnknown_841CBE4:: @ 841CBE4
|
||||
gText_CantHoldMore:: @ 841CBE4
|
||||
.string "You can't hold any more!$"
|
||||
|
||||
gUnknown_841CBFD:: @ 841CBFD
|
||||
gText_WantToPlayAgain2:: @ 841CBFD
|
||||
.string "Want to play again?$"
|
||||
|
||||
gUnknown_841CC11:: @ 841CC11
|
||||
gText_SomeoneDroppedOut2:: @ 841CC11
|
||||
.string "Somebody dropped out.\n"
|
||||
.string "The link will be canceled.$"
|
||||
|
||||
gUnknown_841CC42:: @ 841CC42
|
||||
gText_SavingDontTurnOffPower:: @ 841CC42
|
||||
.string "SAVING…\n"
|
||||
.string "DON'T TURN OFF THE POWER.$"
|
||||
|
||||
gUnknown_841CC64:: @ 841CC64
|
||||
gText_CommunicationStandby4:: @ 841CC64
|
||||
.string "Communication standby…$"
|
||||
|
||||
.string "SAVING...\n"
|
||||
|
||||
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 582 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 284 B |
|
Before Width: | Height: | Size: 322 B After Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 335 B After Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -15,6 +15,11 @@ struct DigitObjUtilTemplate
|
||||
const struct SpritePalette *spritePal;
|
||||
};
|
||||
|
||||
extern const u16 gUnknown_8479668[];
|
||||
extern const u32 gUnknown_8479688[];
|
||||
extern const u32 gUnknown_8479748[];
|
||||
|
||||
bool32 DigitObjUtil_Init(u32 count);
|
||||
void DigitObjUtil_Teardown(void);
|
||||
bool32 DigitObjUtil_CreatePrinter(u32 id, s32 num, const struct DigitObjUtilTemplate *template);
|
||||
void DigitObjUtil_PrintNumOn(u32 id, s32 num);
|
||||
|
||||
@@ -148,8 +148,7 @@ struct PokemonJumpResults // possibly used in the game itself?
|
||||
u16 field2;
|
||||
u16 excellentsInRow;
|
||||
u16 field6;
|
||||
u16 field8;
|
||||
u16 fieldA;
|
||||
u32 field8;
|
||||
u32 bestJumpScore;
|
||||
};
|
||||
|
||||
|
||||
@@ -183,6 +183,7 @@ typedef struct UnkRfuStruct_2
|
||||
|
||||
extern struct GFtgtGname gHostRFUtgtGnameBuffer;
|
||||
extern u8 gHostRFUtgtUnameBuffer[];
|
||||
extern GF_RFU_MANAGER Rfu;
|
||||
|
||||
// GameFreak signatures
|
||||
void AddTextPrinterToWindow1(const u8 *str);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef GUARD_MINIGAME_COUNTDOWN_H
|
||||
#define GUARD_MINIGAME_COUNTDOWN_H
|
||||
|
||||
void StartMinigameCountdown(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority);
|
||||
bool32 IsMinigameCountdownRunning(void);
|
||||
|
||||
#endif //GUARD_MINIGAME_COUNTDOWN_H
|
||||
@@ -2,9 +2,122 @@
|
||||
#define GUARD_POKEMON_JUMP_H
|
||||
|
||||
#include "main.h"
|
||||
#include "link.h"
|
||||
|
||||
struct PokemonJump1_MonInfo
|
||||
{
|
||||
u16 species;
|
||||
u32 otId;
|
||||
u32 personality;
|
||||
};
|
||||
|
||||
struct PokemonJump1_82E4
|
||||
{
|
||||
int unk0;
|
||||
int unk4;
|
||||
u8 filler8[0x4];
|
||||
u16 unkC;
|
||||
u16 unkE;
|
||||
u16 unk10;
|
||||
u16 unk12;
|
||||
int unk14;
|
||||
int unk18;
|
||||
u8 unk1C[11];
|
||||
};
|
||||
|
||||
struct PokemonJump2
|
||||
{
|
||||
int unk0;
|
||||
u16 unk4;
|
||||
u8 unk6;
|
||||
u8 filler7[0xa - 0x7];
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u16 filler10;
|
||||
u16 unk12;
|
||||
u16 unk14;
|
||||
u32 unk18;
|
||||
u16 unk1C[5];
|
||||
u8 txtBuff[2][0x40];
|
||||
u8 strBuff[0x100];
|
||||
u16 tilemapBuffer[0x4000]; // Bug: way larger than it should be
|
||||
struct Sprite *unk81A8[MAX_RFU_PLAYERS];
|
||||
struct Sprite *unk81BC[MAX_RFU_PLAYERS];
|
||||
struct Sprite *unk81D0[8];
|
||||
u8 filler81F0[0xC];
|
||||
u8 unk81FC[MAX_RFU_PLAYERS];
|
||||
};
|
||||
|
||||
struct PokemonJump1Sub
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
void ResetPokeJumpResults(void);
|
||||
bool32 IsSpeciesAllowedInPokemonJump(u16 species);
|
||||
void StartPokemonJump(u16 species, MainCallback callback);
|
||||
u16 sub_81499A4(void);
|
||||
u16 sub_81499B4(void);
|
||||
struct PokemonJump1_MonInfo *sub_81499C0(u8 multiplayerId);
|
||||
u8 *sub_81499E0(u8 multiplayerId);
|
||||
|
||||
void sub_814A95C(int id);
|
||||
void sub_8149CEC(struct PokemonJump2 *);
|
||||
void sub_8149D24(void);
|
||||
void sub_8149D40(int);
|
||||
bool32 sub_8149D68(void);
|
||||
void sub_814A3E4(void);
|
||||
bool32 sub_814A408(void);
|
||||
void sub_814A468(u16 itemId, u16 quantity);
|
||||
void sub_814A53C(u16 itemId);
|
||||
void sub_814A5B4(u16 itemId);
|
||||
bool32 sub_814A62C(void);
|
||||
void sub_814A6CC(void);
|
||||
void sub_814A940(u32 id, s16 y);
|
||||
void sub_814AA48(u8 multiplayerId);
|
||||
bool32 sub_814A6FC(void);
|
||||
void sub_814AA24(int);
|
||||
s8 sub_814A744(void);
|
||||
int sub_814A98C(u8 flags);
|
||||
void sub_814AA34(u16);
|
||||
void sub_814AA60(u8 multiplayerId);
|
||||
int sub_814AA78(int multiplayerId);
|
||||
void sub_814AA8C(void);
|
||||
void sub_814AAA0(void);
|
||||
void sub_814AAB4(int);
|
||||
int sub_814AAC8(void);
|
||||
void sub_8149A6C(struct PokemonJump1_MonInfo *arg0);
|
||||
bool32 sub_8149A90(int multiplayerId, struct PokemonJump1_MonInfo *arg0);
|
||||
void sub_8149AF8(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
|
||||
bool32 sub_8149B7C(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
|
||||
void sub_8149BF4(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2);
|
||||
bool32 sub_8149C24(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3);
|
||||
bool32 sub_8149C90(struct PokemonJump1_82E4 *arg0, int multiplayerId);
|
||||
bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow);
|
||||
void sub_814B4E8(void);
|
||||
|
||||
void sub_814AD6C(struct PokemonJump2 *);
|
||||
void sub_814B294(struct PokemonJump2 *);
|
||||
void sub_814B43C(struct PokemonJump2 *);
|
||||
bool32 sub_814B460(void);
|
||||
void sub_814B348(struct PokemonJump2 *, int);
|
||||
void sub_814AF0C(struct PokemonJump2 *, int);
|
||||
void sub_814ADCC(struct PokemonJump2 *, struct PokemonJump1_MonInfo *,s16, s16, u8);
|
||||
void sub_814B240(struct PokemonJump2 *,s16, s16, u8);
|
||||
void sub_814AFE8(struct PokemonJump2 *, int multiplayerId);
|
||||
void sub_814B080(struct PokemonJump2 *, int multiplayerId);
|
||||
bool32 sub_814B010(struct PokemonJump2 *, int multiplayerId);
|
||||
void sub_814B0A8(struct PokemonJump2 *);
|
||||
void sub_814B134(struct PokemonJump2 *);
|
||||
void sub_814B168(struct PokemonJump2 *, int multiplayerId);
|
||||
bool32 sub_814B190(struct PokemonJump2 *);
|
||||
|
||||
#endif // GUARD_POKEMON_JUMP_H
|
||||
|
||||
@@ -113,8 +113,6 @@ u8 sub_80DA45C(void);
|
||||
bool8 sub_80DA4A0(void);
|
||||
u8 Save_LoadGameData(u8 saveType);
|
||||
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
|
||||
u32 sub_8153634(u8 sector, u8* src);
|
||||
void sub_8153688(u8 taskId);
|
||||
u32 TryWriteSpecialSaveSection(u8 sector, u8* src);
|
||||
void sub_80DA634(u8 taskId);
|
||||
|
||||
|
||||
@@ -1126,4 +1126,19 @@ extern const u8 gJPText_NewTrainerHasComeToSevii[];
|
||||
extern const u8 gJPText_PleaseWaitAMoment[];
|
||||
extern const u8 gJPText_WriteErrorUnableToSaveData[];
|
||||
|
||||
// pokemon_jump
|
||||
extern const u8 gText_WantToPlayAgain2[];
|
||||
extern const u8 gText_SavingDontTurnOffPower[];
|
||||
extern const u8 gText_SomeoneDroppedOut2[];
|
||||
extern const u8 gText_CommunicationStandby4[];
|
||||
extern const u8 gText_AwesomeWonF701F700[];
|
||||
extern const u8 gText_FilledStorageSpace2[];
|
||||
extern const u8 gText_CantHoldMore[];
|
||||
extern const u8 gText_SpacePoints2[];
|
||||
extern const u8 gText_SpaceTimes3[];
|
||||
extern const u8 gText_JumpsInARow[];
|
||||
extern const u8 gText_BestScore2[];
|
||||
extern const u8 gText_ExcellentsInARow[];
|
||||
extern const u8 gText_PkmnJumpRecords[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
||||
@@ -274,8 +274,12 @@ SECTIONS {
|
||||
src/mevent_show_news.o(.text);
|
||||
src/menews_jisan.o(.text);
|
||||
src/seagallop.o(.text);
|
||||
asm/pokemon_jump.o(.text);
|
||||
asm/pokemon_jump_2.o(.text);
|
||||
src/pokemon_jump.o(.text);
|
||||
src/pokemon_jump_2.o(.text);
|
||||
src/pokemon_jump_3.o(.text);
|
||||
src/pokemon_jump_4.o(.text);
|
||||
src/pokemon_jump_5.o(.text);
|
||||
src/pokemon_jump_6.o(.text);
|
||||
asm/berry_crush.o(.text);
|
||||
asm/berry_crush_2.o(.text);
|
||||
asm/berry_crush_3.o(.text);
|
||||
@@ -565,7 +569,11 @@ SECTIONS {
|
||||
src/menews_jisan.o(.rodata);
|
||||
src/menews_jisan.o(.rodata.str1.4);
|
||||
src/seagallop.o(.rodata);
|
||||
data/pokemon_jump.o(.rodata);
|
||||
src/pokemon_jump.o(.rodata);
|
||||
src/pokemon_jump_2.o(.rodata);
|
||||
src/pokemon_jump_4.o(.rodata);
|
||||
src/pokemon_jump_5.o(.rodata);
|
||||
src/pokemon_jump_6.o(.rodata);
|
||||
data/berry_crush.o(.rodata);
|
||||
src/wireless_communication_status_screen.o(.rodata);
|
||||
src/braille_text.o(.rodata);
|
||||
|
||||
@@ -34,7 +34,7 @@ void StartMinigameCountdown(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriori
|
||||
gTasks[taskId].tSubpriority = subpriority;
|
||||
}
|
||||
|
||||
bool8 IsMinigameCountdownRunning(void)
|
||||
bool32 IsMinigameCountdownRunning(void)
|
||||
{
|
||||
return FuncIsActiveTask(Task_MinigameCountdown);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "battle_anim.h"
|
||||
#include "decompress.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "task.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void sub_8147654(u8 taskId);
|
||||
static void sub_81477C0(u8 taskId);
|
||||
static void sub_814784C(u8 taskId);
|
||||
static void sub_81479D4(u8 taskId);
|
||||
static void sub_8147A34(u8 taskId);
|
||||
|
||||
static const u16 gUnknown_846AFE8[] = INCBIN_U16("graphics/misc/unk_846B008.gbapal");
|
||||
static const u32 gUnknown_846B008[] = INCBIN_U32("graphics/misc/unk_846B008.4bpp.lz");
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_846B42C[] = {
|
||||
{gUnknown_846B008, 0x0C00, 0x2000},
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct SpritePalette gUnknown_846B43C[] = {
|
||||
{gUnknown_846AFE8, 0x2000},
|
||||
{}
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B44C[] = {
|
||||
ANIMCMD_FRAME(0x00, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B454[] = {
|
||||
ANIMCMD_FRAME(0x10, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B45C[] = {
|
||||
ANIMCMD_FRAME(0x20, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B464[] = {
|
||||
ANIMCMD_FRAME(0x40, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B46C[] = {
|
||||
ANIMCMD_FRAME(0x30, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_846B474[] = {
|
||||
ANIMCMD_FRAME(0x50, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_846B47C[] = {
|
||||
gUnknown_846B44C,
|
||||
gUnknown_846B454,
|
||||
gUnknown_846B45C,
|
||||
gUnknown_846B464,
|
||||
gUnknown_846B46C,
|
||||
gUnknown_846B474
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846B494[] = {
|
||||
{
|
||||
.tileTag = 0x2000,
|
||||
.paletteTag = 0x2000,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_846B47C,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
},
|
||||
};
|
||||
|
||||
static const TaskFunc gUnknown_846B4AC[][4] = {
|
||||
{ sub_81477C0, sub_814784C, sub_81479D4, sub_8147A34 }
|
||||
};
|
||||
|
||||
// Unused, but looks like it was intended to be a hook
|
||||
UNUSED u8 sub_81475C0(u8 data1, u8 priority)
|
||||
{
|
||||
u8 taskId;
|
||||
struct Task * task;
|
||||
|
||||
taskId = CreateTask(sub_8147654, priority);
|
||||
task = &gTasks[taskId];
|
||||
task->data[0] = 1;
|
||||
task->data[1] = data1;
|
||||
gUnknown_846B4AC[data1][0](taskId);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
// Unused, but looks like it was intended to be a hook
|
||||
UNUSED bool32 sub_814760C(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
taskId = FindTaskIdByFunc(sub_8147654);
|
||||
if (taskId == 0xFF)
|
||||
return FALSE;
|
||||
gTasks[taskId].data[0] = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Unused, but looks like it was intended to be a hook
|
||||
UNUSED bool32 sub_8147640(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_8147654);
|
||||
}
|
||||
|
||||
static void sub_8147654(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
{
|
||||
case 2:
|
||||
gUnknown_846B4AC[data[1]][2](taskId);
|
||||
data[0] = 3;
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_846B4AC[data[1]][3](taskId);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_846B4AC[data[1]][1](taskId);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81476E0(u8 taskId, s16 *data)
|
||||
{
|
||||
u8 i;
|
||||
struct Sprite *sprite;
|
||||
|
||||
LoadCompressedSpriteSheet(&gUnknown_846B42C[data[3]]);
|
||||
LoadSpritePalette(&gUnknown_846B43C[data[4]]);
|
||||
for (i = 0; i < data[8]; i++)
|
||||
data[13 + i] = CreateSprite(&gUnknown_846B494[data[2]], data[9], data[10], data[7]);
|
||||
for (i = 0; i < data[8]; i++)
|
||||
{
|
||||
sprite = &gSprites[data[13 + i]];
|
||||
sprite->oam.priority = data[6];
|
||||
sprite->invisible = TRUE;
|
||||
sprite->data[1] = data[5];
|
||||
sprite->data[3] = taskId;
|
||||
sprite->data[4] = i;
|
||||
sprite->data[5] = data[13];
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81477C0(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
data[2] = 0;
|
||||
data[3] = 0;
|
||||
data[4] = 0;
|
||||
data[5] = 60;
|
||||
data[6] = 0;
|
||||
data[7] = 0;
|
||||
data[8] = 3;
|
||||
data[9] = 120;
|
||||
data[10] = 88;
|
||||
sub_81476E0(taskId, data);
|
||||
|
||||
StartSpriteAnim(&gSprites[data[14]], 4);
|
||||
gSprites[data[14]].pos2.x = -32;
|
||||
|
||||
StartSpriteAnim(&gSprites[data[15]], 5);
|
||||
gSprites[data[15]].pos2.x = 32;
|
||||
}
|
||||
|
||||
static void sub_814784C(u8 taskId)
|
||||
{
|
||||
u8 i = 0;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
for (i = 0; i < data[8]; i++)
|
||||
DestroySprite(&gSprites[data[13 + i]]);
|
||||
FreeSpriteTilesByTag(gUnknown_846B42C[data[3]].tag);
|
||||
FreeSpritePaletteByTag(gUnknown_846B43C[data[4]].tag);
|
||||
}
|
||||
|
||||
static void sub_81478BC(struct Sprite *sprite)
|
||||
{
|
||||
s16 *data = gTasks[sprite->data[3]].data;
|
||||
|
||||
if (data[11] % data[5] != 0)
|
||||
return;
|
||||
if (data[11] == data[10])
|
||||
return;
|
||||
|
||||
data[10] = data[11];
|
||||
switch (sprite->data[2])
|
||||
{
|
||||
case 0:
|
||||
sprite->invisible = FALSE;
|
||||
case 1:
|
||||
case 2:
|
||||
PlaySE(SE_KON);
|
||||
StartSpriteAnim(sprite, sprite->data[2]);
|
||||
break;
|
||||
case 3:
|
||||
PlaySE(SE_PIN);
|
||||
StartSpriteAnim(sprite, sprite->data[2]);
|
||||
gSprites[data[14]].invisible = FALSE;
|
||||
gSprites[data[15]].invisible = FALSE;
|
||||
break;
|
||||
case 4:
|
||||
sprite->invisible = TRUE;
|
||||
gSprites[data[14]].invisible = TRUE;
|
||||
gSprites[data[15]].invisible = TRUE;
|
||||
data[0] = 4;
|
||||
return;
|
||||
}
|
||||
sprite->data[2]++;
|
||||
}
|
||||
|
||||
static void sub_81479D4(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlaySE(SE_KON);
|
||||
gSprites[data[13]].callback = sub_81478BC;
|
||||
gSprites[data[13]].invisible = FALSE;
|
||||
gTasks[taskId].data[0] = 3;
|
||||
}
|
||||
|
||||
static void sub_8147A34(u8 taskId)
|
||||
{
|
||||
u16 packet[6];
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (gReceivedRemoteLinkPlayers != 0)
|
||||
{
|
||||
if (gRecvCmds[0][1] == 0x7FFF)
|
||||
data[11] = gRecvCmds[0][2];
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
data[12]++;
|
||||
memset(packet, 0, sizeof(packet));
|
||||
packet[0] = 0x7FFF;
|
||||
packet[1] = data[12];
|
||||
RfuPrepareSend0x2f00(packet);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data[11]++;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
#include "global.h"
|
||||
#include "link_rfu.h"
|
||||
#include "pokemon_jump.h"
|
||||
|
||||
struct MonInfoPacket
|
||||
{
|
||||
u8 id; // packet id
|
||||
u16 species;
|
||||
u32 personality;
|
||||
u32 otId;
|
||||
};
|
||||
|
||||
void sub_8149A6C(struct PokemonJump1_MonInfo *arg0)
|
||||
{
|
||||
struct MonInfoPacket packet;
|
||||
packet.id = 1;
|
||||
packet.species = arg0->species;
|
||||
packet.otId = arg0->otId;
|
||||
packet.personality = arg0->personality;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
bool32 sub_8149A90(int multiplayerId, struct PokemonJump1_MonInfo *arg0)
|
||||
{
|
||||
struct MonInfoPacket packet;
|
||||
|
||||
if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
|
||||
return FALSE;
|
||||
|
||||
memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
|
||||
if (packet.id == 1)
|
||||
{
|
||||
arg0->species = packet.species;
|
||||
arg0->otId = packet.otId;
|
||||
arg0->personality = packet.personality;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
struct UnkPacket2
|
||||
{
|
||||
u8 id; // packet id
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
void sub_8149AE0(u32 arg0)
|
||||
{
|
||||
struct UnkPacket2 packet;
|
||||
packet.id = 2;
|
||||
packet.unk4 = arg0;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
struct UnkPacket3
|
||||
{
|
||||
u8 id; // packet id
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3_0:5;
|
||||
u8 unk3_1:3;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u32 unk8_0:15;
|
||||
u32 unk8_1:17;
|
||||
};
|
||||
|
||||
void sub_8149AF8(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
|
||||
{
|
||||
struct UnkPacket3 packet;
|
||||
packet.id = 3;
|
||||
packet.unk8_1 = arg1->unk8;
|
||||
packet.unk3_0 = arg1->unk1;
|
||||
packet.unk1 = arg1->unk0;
|
||||
packet.unk6 = arg1->unk2;
|
||||
packet.unk8_0 = arg1->unk4;
|
||||
packet.unk2 = arg0->unk10;
|
||||
packet.unk3_1 = arg0->unk14;
|
||||
packet.unk4 = arg0->unkE;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
bool32 sub_8149B7C(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
|
||||
{
|
||||
struct UnkPacket3 packet;
|
||||
|
||||
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
|
||||
return FALSE;
|
||||
|
||||
memcpy(&packet, &gRecvCmds[0][1], sizeof(packet));
|
||||
if (packet.id != 3)
|
||||
return FALSE;
|
||||
|
||||
arg1->unk8 = packet.unk8_1;
|
||||
arg1->unk1 = packet.unk3_0;
|
||||
arg1->unk0 = packet.unk1;
|
||||
arg1->unk2 = packet.unk6;
|
||||
arg1->unk4 = packet.unk8_0;
|
||||
arg0->unk10 = packet.unk2;
|
||||
arg0->unk14 = packet.unk3_1;
|
||||
arg0->unkE = packet.unk4;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
struct UnkPacket4
|
||||
{
|
||||
u8 id; // packet id
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u16 unk4;
|
||||
u8 unk6;
|
||||
u16 unk8;
|
||||
};
|
||||
|
||||
void sub_8149BF4(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2)
|
||||
{
|
||||
struct UnkPacket4 packet;
|
||||
packet.id = 4;
|
||||
packet.unk1 = arg0->unk10;
|
||||
packet.unk2 = arg0->unk14;
|
||||
packet.unk3 = arg0->unk18;
|
||||
packet.unk4 = arg0->unkE;
|
||||
packet.unk6 = arg1;
|
||||
packet.unk8 = arg2;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
bool32 sub_8149C24(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3)
|
||||
{
|
||||
struct UnkPacket4 packet;
|
||||
|
||||
if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
|
||||
return FALSE;
|
||||
|
||||
memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
|
||||
if (packet.id != 4)
|
||||
return FALSE;
|
||||
|
||||
arg0->unk10 = packet.unk1;
|
||||
arg0->unk14 = packet.unk2;
|
||||
arg0->unk18 = packet.unk3;
|
||||
arg0->unkE = packet.unk4;
|
||||
*arg2 = packet.unk6;
|
||||
*arg3 = packet.unk8;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8149C90(struct PokemonJump1_82E4 *arg0, int multiplayerId)
|
||||
{
|
||||
struct UnkPacket4 packet;
|
||||
|
||||
if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
|
||||
return FALSE;
|
||||
|
||||
memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
|
||||
if (packet.id != 4)
|
||||
return FALSE;
|
||||
|
||||
arg0->unk10 = packet.unk1;
|
||||
arg0->unk14 = packet.unk2;
|
||||
arg0->unk18 = packet.unk3;
|
||||
arg0->unkE = packet.unk4;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,922 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "data.h"
|
||||
#include "digit_obj_util.h"
|
||||
#include "dynamic_placeholder_text_util.h"
|
||||
#include "item.h"
|
||||
#include "menu.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "pokemon_jump.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
EWRAM_DATA static struct PokemonJump2 *gUnknown_203F3D8 = NULL;
|
||||
|
||||
static void sub_8149D80(void (*func)(void));
|
||||
static void sub_8149DA4(u8 taskId);
|
||||
static void sub_8149DC8(void);
|
||||
static void sub_8149F64(void);
|
||||
static void sub_8149FD0(void);
|
||||
static void sub_814A03C(void);
|
||||
static void sub_814A0C8(void);
|
||||
static void sub_814A174(void);
|
||||
static void sub_814A218(void);
|
||||
static void sub_814A264(void);
|
||||
static void sub_814A308(void);
|
||||
static void sub_814A3AC(void);
|
||||
static u32 sub_814A754(u32 left, u32 top, u32 width, u32 height);
|
||||
static void sub_814A7D0(u16 left, u16 top, u8 cursorPos);
|
||||
static void sub_814A84C(void);
|
||||
static void sub_814A8B8(void);
|
||||
static void sub_814A9C8(void);
|
||||
static void sub_814AADC(void);
|
||||
static void sub_814AC30(bool32 arg0);
|
||||
static void sub_814AC94(void);
|
||||
static void sub_814ACCC(u8 arg0);
|
||||
static void sub_814AD50(u8 taskId);
|
||||
|
||||
static void sub_8149D34(struct PokemonJump2 *);
|
||||
|
||||
void sub_8149CEC(struct PokemonJump2 *arg0)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
gUnknown_203F3D8 = arg0;
|
||||
sub_8149D34(gUnknown_203F3D8);
|
||||
taskId = CreateTask(sub_8149DA4, 3);
|
||||
gUnknown_203F3D8->unk6 = taskId;
|
||||
SetWordTaskArg(gUnknown_203F3D8->unk6, 2, (uintptr_t)gUnknown_203F3D8);
|
||||
sub_8149D80(sub_8149DC8);
|
||||
}
|
||||
|
||||
void sub_8149D24(void)
|
||||
{
|
||||
FreeAllWindowBuffers();
|
||||
DigitObjUtil_Teardown();
|
||||
}
|
||||
|
||||
static void sub_8149D34(struct PokemonJump2 *arg0)
|
||||
{
|
||||
arg0->unk4 = 0;
|
||||
arg0->unk0 = 0;
|
||||
arg0->unk12 = 0xFF;
|
||||
}
|
||||
|
||||
// Gfx
|
||||
static const u16 sPkmnJumpPal3[] = INCBIN_U16("graphics/link_games/pkmnjump_pal3.gbapal");
|
||||
|
||||
static const u16 sPkmnJumpBgPal[] = INCBIN_U16("graphics/link_games/pkmnjump_bg.gbapal");
|
||||
static const u32 sPkmnJumpBgGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.4bpp.lz");
|
||||
static const u32 sPkmnJumpBgTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.bin.lz");
|
||||
|
||||
static const u16 sPkmnJumpVenusaurPal[] = INCBIN_U16("graphics/link_games/pkmnjump_venusaur.gbapal");
|
||||
static const u32 sPkmnJumpVenusaurGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.4bpp.lz");
|
||||
static const u32 sPkmnJumpVenusaurTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.bin.lz");
|
||||
|
||||
static const u16 sPkmnJumpResultsPal[] = INCBIN_U16("graphics/link_games/pkmnjump_results.gbapal");
|
||||
static const u32 sPkmnJumpResultsGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_results.4bpp.lz");
|
||||
static const u32 sPkmnJumpResultsTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_results.bin.lz");
|
||||
|
||||
static const struct BgTemplate gUnknown_846D8D4[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 27,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 0,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.charBaseIndex = 1,
|
||||
.mapBaseIndex = 30,
|
||||
.screenSize = 2,
|
||||
.paletteMode = 0,
|
||||
.priority = 2,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 1,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 12,
|
||||
.screenSize = 3,
|
||||
.paletteMode = 0,
|
||||
.priority = 1,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 3,
|
||||
.charBaseIndex = 3,
|
||||
.mapBaseIndex = 29,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 3,
|
||||
.baseTile = 0
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_846D8E4[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 19,
|
||||
.tilemapTop = 0,
|
||||
.width = 6,
|
||||
.height = 2,
|
||||
.paletteNum = 2,
|
||||
.baseBlock = 0x13,
|
||||
},
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 8,
|
||||
.tilemapTop = 0,
|
||||
.width = 6,
|
||||
.height = 2,
|
||||
.paletteNum = 2,
|
||||
.baseBlock = 0x1F,
|
||||
},
|
||||
DUMMY_WIN_TEMPLATE,
|
||||
};
|
||||
|
||||
struct
|
||||
{
|
||||
int id;
|
||||
void (*func)(void);
|
||||
} static const gUnknown_846D8FC[] =
|
||||
{
|
||||
{0x00, sub_8149DC8},
|
||||
{0x01, sub_8149F64},
|
||||
{0x02, sub_8149FD0},
|
||||
{0x03, sub_814A03C},
|
||||
{0x04, sub_814A0C8},
|
||||
{0x05, sub_814A174},
|
||||
{0x06, sub_814A218},
|
||||
{0x07, sub_814A264},
|
||||
{0x09, sub_814A3AC},
|
||||
{0x08, sub_814A308},
|
||||
};
|
||||
|
||||
void sub_8149D40(int arg0)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NELEMS(gUnknown_846D8FC); i++)
|
||||
{
|
||||
if (gUnknown_846D8FC[i].id == arg0)
|
||||
sub_8149D80(gUnknown_846D8FC[i].func);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_8149D68(void)
|
||||
{
|
||||
return (gUnknown_203F3D8->unk0 != 1);
|
||||
}
|
||||
|
||||
static void sub_8149D80(void (*func)(void))
|
||||
{
|
||||
SetWordTaskArg(gUnknown_203F3D8->unk6, 0, (uintptr_t)func);
|
||||
gUnknown_203F3D8->unk4 = 0;
|
||||
gUnknown_203F3D8->unk0 = 0;
|
||||
}
|
||||
|
||||
static void sub_8149DA4(u8 taskId)
|
||||
{
|
||||
if (!gUnknown_203F3D8->unk0)
|
||||
{
|
||||
void (*func)(void) = (void *)(GetWordTaskArg(taskId, 0));
|
||||
|
||||
func();
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8149DC8(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
ResetBgsAndClearDma3BusyFlags(FALSE);
|
||||
InitBgsFromTemplates(0, gUnknown_846D8D4, NELEMS(gUnknown_846D8D4));
|
||||
InitWindows(gUnknown_846D8E4);
|
||||
ResetBgPositions();
|
||||
ResetTempTileDataBuffers();
|
||||
sub_814AD6C(gUnknown_203F3D8);
|
||||
sub_814A9C8();
|
||||
LoadPalette(sPkmnJumpBgPal, 0, 0x20);
|
||||
DecompressAndCopyTileDataToVram(3, sPkmnJumpBgGfx, 0, 0, 0);
|
||||
DecompressAndCopyTileDataToVram(3, sPkmnJumpBgTilemap, 0, 0, 1);
|
||||
LoadPalette(sPkmnJumpVenusaurPal, 0x30, 0x20);
|
||||
DecompressAndCopyTileDataToVram(2, sPkmnJumpVenusaurGfx, 0, 0, 0);
|
||||
DecompressAndCopyTileDataToVram(2, sPkmnJumpVenusaurTilemap, 0, 0, 1);
|
||||
LoadPalette(sPkmnJumpResultsPal, 0x10, 0x20);
|
||||
DecompressAndCopyTileDataToVram(1, sPkmnJumpResultsGfx, 0, 0, 0);
|
||||
DecompressAndCopyTileDataToVram(1, sPkmnJumpResultsTilemap, 0, 0, 1);
|
||||
LoadPalette(sPkmnJumpPal3, 0x20, 0x20);
|
||||
SetBgTilemapBuffer(0, gUnknown_203F3D8->tilemapBuffer);
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
|
||||
sub_814A84C();
|
||||
sub_814AA24(0);
|
||||
sub_814FDA0(0, 1, 0xE0);
|
||||
LoadUserWindowBorderGfx(0, 0x00A, 0xD0);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!FreeTempTileDataBuffersIfPossible())
|
||||
{
|
||||
sub_814A8B8();
|
||||
sub_814B294(gUnknown_203F3D8);
|
||||
sub_814B348(gUnknown_203F3D8, 6);
|
||||
ShowBg(3);
|
||||
ShowBg(0);
|
||||
ShowBg(2);
|
||||
HideBg(1);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8149F64(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
sub_814AADC();
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
sub_814AC30(FALSE);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
sub_814AC94();
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8149FD0(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
sub_814AADC();
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
sub_814AC30(TRUE);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
sub_814AC94();
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A03C(void)
|
||||
{
|
||||
int i, numPlayers;
|
||||
|
||||
numPlayers = sub_81499A4();
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
ClearWindowTilemap(gUnknown_203F3D8->unk1C[i]);
|
||||
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
RemoveWindow(gUnknown_203F3D8->unk1C[i]);
|
||||
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A0C8(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(1, 8, 20, 2);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_WantToPlayAgain2, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk12);
|
||||
DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
|
||||
sub_814A7D0(23, 7, 0);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A174(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(2, 7, 26, 4);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SavingDontTurnOffPower, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk12);
|
||||
DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A218(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
sub_814A6CC();
|
||||
DestroyYesNoMenu();
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_814A6FC() && !IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A264(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(2, 8, 22, 4);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SomeoneDroppedOut2, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk12);
|
||||
DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A308(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(7, 10, 16, 2);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_CommunicationStandby4, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk12);
|
||||
DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814A3AC(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unk4)
|
||||
{
|
||||
case 0:
|
||||
sub_814B43C(gUnknown_203F3D8);
|
||||
gUnknown_203F3D8->unk4++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_814B460())
|
||||
gUnknown_203F3D8->unk0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814A3E4(void)
|
||||
{
|
||||
gUnknown_203F3D8->unkA = 0;
|
||||
gUnknown_203F3D8->unkB = 0;
|
||||
gUnknown_203F3D8->unkC = 6;
|
||||
sub_814A95C(gUnknown_203F3D8->unkC);
|
||||
}
|
||||
|
||||
bool32 sub_814A408(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unkA)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203F3D8->unkB++;
|
||||
if (gUnknown_203F3D8->unkB > 10)
|
||||
{
|
||||
gUnknown_203F3D8->unkB = 0;
|
||||
gUnknown_203F3D8->unkC++;
|
||||
if (gUnknown_203F3D8->unkC >= 10)
|
||||
{
|
||||
gUnknown_203F3D8->unkC = 0;
|
||||
gUnknown_203F3D8->unkA++;
|
||||
}
|
||||
}
|
||||
sub_814A95C(gUnknown_203F3D8->unkC);
|
||||
if (gUnknown_203F3D8->unkC != 7)
|
||||
break;
|
||||
case 1:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static const u8 sPluralTxt[] = _("IES");
|
||||
|
||||
void sub_814A468(u16 itemId, u16 quantity)
|
||||
{
|
||||
CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
|
||||
ConvertIntToDecimalStringN(gUnknown_203F3D8->txtBuff[1], quantity, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
if (itemId >= FIRST_BERRY_INDEX && itemId < LAST_BERRY_INDEX)
|
||||
{
|
||||
if (quantity > 1)
|
||||
{
|
||||
int endi = StringLength(gUnknown_203F3D8->txtBuff[0]);
|
||||
if (endi != 0)
|
||||
{
|
||||
endi--;
|
||||
endi[gUnknown_203F3D8->txtBuff[0]] = EOS;
|
||||
StringAppend(gUnknown_203F3D8->txtBuff[0], sPluralTxt);
|
||||
}
|
||||
}
|
||||
}
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_203F3D8->txtBuff[1]);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_AwesomeWonF701F700);
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk14 = MUS_FANFA1;
|
||||
gUnknown_203F3D8->unkD = 0;
|
||||
}
|
||||
|
||||
void sub_814A53C(u16 itemId)
|
||||
{
|
||||
CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_FilledStorageSpace2);
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk14 = 0;
|
||||
gUnknown_203F3D8->unkD = 0;
|
||||
}
|
||||
|
||||
void sub_814A5B4(u16 itemId)
|
||||
{
|
||||
CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_CantHoldMore);
|
||||
gUnknown_203F3D8->unk12 = sub_814A754(4, 9, 22, 2);
|
||||
AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
|
||||
gUnknown_203F3D8->unk14 = 0;
|
||||
gUnknown_203F3D8->unkD = 0;
|
||||
}
|
||||
|
||||
bool32 sub_814A62C(void)
|
||||
{
|
||||
switch (gUnknown_203F3D8->unkD)
|
||||
{
|
||||
case 0:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk12);
|
||||
DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203F3D8->unkD++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (IsDma3ManagerBusyWithBgCopy())
|
||||
break;
|
||||
if (gUnknown_203F3D8->unk14 == 0)
|
||||
{
|
||||
gUnknown_203F3D8->unkD += 2;
|
||||
return FALSE;
|
||||
}
|
||||
PlayFanfare(gUnknown_203F3D8->unk14);
|
||||
gUnknown_203F3D8->unkD++;
|
||||
case 2:
|
||||
if (!IsFanfareTaskInactive())
|
||||
break;
|
||||
gUnknown_203F3D8->unkD++;
|
||||
case 3:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_814A6CC(void)
|
||||
{
|
||||
if (gUnknown_203F3D8->unk12 != 0xFF)
|
||||
{
|
||||
rbox_fill_rectangle(gUnknown_203F3D8->unk12);
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk12, 1);
|
||||
gUnknown_203F3D8->unkD = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Can't match this without the ugly GOTO, oh well.
|
||||
bool32 sub_814A6FC(void)
|
||||
{
|
||||
if (gUnknown_203F3D8->unk12 == 0xFF)
|
||||
{
|
||||
RET_FALSE:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (gUnknown_203F3D8->unkD == 0)
|
||||
{
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
RemoveWindow(gUnknown_203F3D8->unk12);
|
||||
gUnknown_203F3D8->unk12 = 0xFF;
|
||||
gUnknown_203F3D8->unkD++;
|
||||
goto RET_FALSE;
|
||||
}
|
||||
}
|
||||
else if (gUnknown_203F3D8->unkD == 1)
|
||||
goto RET_FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
s8 sub_814A744(void)
|
||||
{
|
||||
return Menu_ProcessInputNoWrapClearOnChoose();
|
||||
}
|
||||
|
||||
static u32 sub_814A754(u32 left, u32 top, u32 width, u32 height)
|
||||
{
|
||||
u32 windowId;
|
||||
struct WindowTemplate window;
|
||||
|
||||
window.bg = 0;
|
||||
window.tilemapLeft = left;
|
||||
window.tilemapTop = top;
|
||||
window.width = width;
|
||||
window.height = height;
|
||||
window.paletteNum = 0xF;
|
||||
window.baseBlock = 0x43;
|
||||
|
||||
windowId = AddWindow(&window);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
return windowId;
|
||||
}
|
||||
|
||||
static void sub_814A7D0(u16 left, u16 top, u8 cursorPos)
|
||||
{
|
||||
struct WindowTemplate window;
|
||||
u8 a = cursorPos;
|
||||
|
||||
window.bg = 0;
|
||||
window.tilemapLeft = left;
|
||||
window.tilemapTop = top;
|
||||
window.width = 6;
|
||||
window.height = 4;
|
||||
window.paletteNum = 2;
|
||||
window.baseBlock = 0x2B;
|
||||
|
||||
CreateYesNoMenu(&window, 2, 0, 2, 0x00a, 0xD, a);
|
||||
}
|
||||
|
||||
static void sub_814A84C(void)
|
||||
{
|
||||
u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
|
||||
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(1);
|
||||
FillWindowPixelBuffer(0, PIXEL_FILL(0));
|
||||
FillWindowPixelBuffer(1, PIXEL_FILL(0));
|
||||
AddTextPrinterParameterized3(0, 0, 0, 2, color, 0, gText_SpacePoints2);
|
||||
AddTextPrinterParameterized3(1, 0, 0, 2, color, 0, gText_SpaceTimes3);
|
||||
}
|
||||
|
||||
static const u8 gUnknown_846D953[] = {2, 2, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_846D960 = {gUnknown_8479688, 0, 0x320};
|
||||
static const struct SpritePalette gUnknown_846D968 = {gUnknown_8479668, 0x320};
|
||||
|
||||
static const u16 gUnknown_846D970[] = {0x06, 0x08, 0x10, 0x08};
|
||||
static const u16 gUnknown_846D978[] = {0x06, 0x08, 0x0b, 0x06, 0x10, 0x08};
|
||||
static const u16 gUnknown_846D984[] = {0x02, 0x06, 0x06, 0x08, 0x10, 0x08, 0x14, 0x06};
|
||||
static const u16 gUnknown_846D994[] = {0x02, 0x06, 0x06, 0x08, 0x0b, 0x06, 0x10, 0x08, 0x14, 0x06};
|
||||
|
||||
static const u16 *const gUnknown_846D9A8[] =
|
||||
{
|
||||
gUnknown_846D970,
|
||||
gUnknown_846D978,
|
||||
gUnknown_846D984,
|
||||
gUnknown_846D994,
|
||||
};
|
||||
|
||||
static const s16 gUnknown_846D9B8[] = {0x0058, 0x0098};
|
||||
static const s16 gUnknown_846D9BC[] = {0x0058, 0x0078, 0x0098};
|
||||
static const s16 gUnknown_846D9C2[] = {0x0038, 0x0058, 0x0098, 0x00b8};
|
||||
static const s16 gUnknown_846D9CA[] = {0x0038, 0x0058, 0x0078, 0x0098, 0x00b8};
|
||||
|
||||
static const s16 *const gUnknown_846D9D4[] =
|
||||
{
|
||||
gUnknown_846D9B8,
|
||||
gUnknown_846D9BC,
|
||||
gUnknown_846D9C2,
|
||||
gUnknown_846D9CA,
|
||||
};
|
||||
|
||||
static void sub_814A8B8(void)
|
||||
{
|
||||
int i, y, playersCount = sub_81499A4();
|
||||
const s16 *xCoords = gUnknown_846D9D4[playersCount - 2];
|
||||
|
||||
for (i = 0; i < playersCount; i++)
|
||||
{
|
||||
struct PokemonJump1_MonInfo *info = sub_81499C0(i);
|
||||
|
||||
y = gMonFrontPicCoords[info->species].y_offset;
|
||||
sub_814ADCC(gUnknown_203F3D8, info, *xCoords, y + 112, i);
|
||||
sub_814B240(gUnknown_203F3D8, *xCoords, 112, i);
|
||||
xCoords++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814A940(u32 id, s16 y)
|
||||
{
|
||||
gUnknown_203F3D8->unk81A8[id]->pos2.y = y;
|
||||
}
|
||||
|
||||
void sub_814A95C(int id)
|
||||
{
|
||||
sub_814B348(gUnknown_203F3D8, id);
|
||||
ChangeBgY(2, (gUnknown_846D953[id] * 5) << 0xD, 0);
|
||||
}
|
||||
|
||||
int sub_814A98C(u8 flags)
|
||||
{
|
||||
int i, count;
|
||||
|
||||
for (i = 0, count = 0; i < 5; i++)
|
||||
{
|
||||
if (flags & 1)
|
||||
{
|
||||
sub_814AF0C(gUnknown_203F3D8, i);
|
||||
count++;
|
||||
}
|
||||
flags >>= 1;
|
||||
}
|
||||
|
||||
sub_814ACCC(count - 2);
|
||||
return count;
|
||||
}
|
||||
|
||||
static void sub_814A9C8(void)
|
||||
{
|
||||
struct DigitObjUtilTemplate unkStruct;
|
||||
struct DigitObjUtilTemplate *ptr = &unkStruct; // This temp variable is needed to match, don't ask me why.
|
||||
|
||||
ptr->shape = SPRITE_SHAPE(8x8);
|
||||
ptr->size = SPRITE_SIZE(8x8);
|
||||
ptr->strConvMode = 0;
|
||||
ptr->priority = 1;
|
||||
ptr->oamCount = 5;
|
||||
ptr->xDelta = 8;
|
||||
ptr->x = 108;
|
||||
ptr->y = 6;
|
||||
ptr->spriteSheet = (void*) &gUnknown_846D960;
|
||||
ptr->spritePal = &gUnknown_846D968;
|
||||
|
||||
DigitObjUtil_Init(2);
|
||||
DigitObjUtil_CreatePrinter(0, 0, ptr);
|
||||
|
||||
unkStruct.oamCount = 4;
|
||||
unkStruct.x = 30;
|
||||
unkStruct.y = 6;
|
||||
DigitObjUtil_CreatePrinter(1, 0, &unkStruct);
|
||||
}
|
||||
|
||||
void sub_814AA24(int arg0)
|
||||
{
|
||||
DigitObjUtil_PrintNumOn(0, arg0);
|
||||
}
|
||||
|
||||
void sub_814AA34(u16 arg0)
|
||||
{
|
||||
DigitObjUtil_PrintNumOn(1, arg0);
|
||||
}
|
||||
|
||||
void sub_814AA48(u8 multiplayerId)
|
||||
{
|
||||
sub_814AFE8(gUnknown_203F3D8, multiplayerId);
|
||||
}
|
||||
|
||||
void sub_814AA60(u8 multiplayerId)
|
||||
{
|
||||
sub_814B080(gUnknown_203F3D8, multiplayerId);
|
||||
}
|
||||
|
||||
int sub_814AA78(int multiplayerId)
|
||||
{
|
||||
return sub_814B010(gUnknown_203F3D8, multiplayerId);
|
||||
}
|
||||
|
||||
void sub_814AA8C(void)
|
||||
{
|
||||
sub_814B0A8(gUnknown_203F3D8);
|
||||
}
|
||||
|
||||
void sub_814AAA0(void)
|
||||
{
|
||||
sub_814B134(gUnknown_203F3D8);
|
||||
}
|
||||
|
||||
void sub_814AAB4(int multiplayerId)
|
||||
{
|
||||
sub_814B168(gUnknown_203F3D8, multiplayerId);
|
||||
}
|
||||
|
||||
int sub_814AAC8(void)
|
||||
{
|
||||
return sub_814B190(gUnknown_203F3D8);
|
||||
}
|
||||
|
||||
static void sub_814AADC(void)
|
||||
{
|
||||
struct WindowTemplate window;
|
||||
int i, playersCount = sub_81499A4();
|
||||
const u16 *winCoords = gUnknown_846D9A8[playersCount - 2];
|
||||
|
||||
window.bg = 0;
|
||||
window.width = 8;
|
||||
window.height = 2;
|
||||
window.paletteNum = 2;
|
||||
window.baseBlock = 0x2B;
|
||||
|
||||
for (i = 0; i < playersCount; i++)
|
||||
{
|
||||
window.tilemapLeft = winCoords[0];
|
||||
window.tilemapTop = winCoords[1];
|
||||
gUnknown_203F3D8->unk1C[i] = AddWindow(&window);
|
||||
ClearWindowTilemap(gUnknown_203F3D8->unk1C[i]);
|
||||
window.baseBlock += 0x10;
|
||||
winCoords += 2;
|
||||
}
|
||||
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
}
|
||||
|
||||
static void sub_814AB98(int multiplayerId, u8 clr1, u8 clr2, u8 clr3)
|
||||
{
|
||||
u32 x;
|
||||
u8 colors[3] = {clr1, clr2, clr3};
|
||||
|
||||
FillWindowPixelBuffer(gUnknown_203F3D8->unk1C[multiplayerId], PIXEL_FILL(0));
|
||||
x = 64 - GetStringWidth(0, sub_81499E0(multiplayerId), -1);
|
||||
x /= 2;
|
||||
AddTextPrinterParameterized3(gUnknown_203F3D8->unk1C[multiplayerId], 0, x, 2, colors, -1, sub_81499E0(multiplayerId));
|
||||
CopyWindowToVram(gUnknown_203F3D8->unk1C[multiplayerId], 2);
|
||||
}
|
||||
|
||||
static void sub_814AC30(bool32 arg0)
|
||||
{
|
||||
int i, var, playersCount = sub_81499A4();
|
||||
|
||||
if (!arg0)
|
||||
{
|
||||
for (i = 0; i < playersCount; i++)
|
||||
sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
|
||||
}
|
||||
else
|
||||
{
|
||||
var = sub_81499B4();
|
||||
for (i = 0; i < playersCount; i++)
|
||||
{
|
||||
if (var != i)
|
||||
sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
|
||||
else
|
||||
sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814AC94(void)
|
||||
{
|
||||
int i, playersCount = sub_81499A4();
|
||||
|
||||
for (i = 0; i < playersCount; i++)
|
||||
PutWindowTilemap(gUnknown_203F3D8->unk1C[i]);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
}
|
||||
|
||||
static void sub_814ACCC(u8 arg0)
|
||||
{
|
||||
gUnknown_203F3D8->unk18 = 0;
|
||||
ChangeBgX(1, (arg0 / 2) << 16, 0);
|
||||
ChangeBgY(1, (((arg0 % 2) << 8) - 40) << 8, 0);
|
||||
ShowBg(1);
|
||||
CreateTask(sub_814AD50, 4);
|
||||
}
|
||||
|
||||
static bool32 sub_814AD18(void)
|
||||
{
|
||||
if (gUnknown_203F3D8->unk18 >= 32)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeBgY(1, 128, 1);
|
||||
if (++gUnknown_203F3D8->unk18 >= 32)
|
||||
HideBg(1);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814AD50(u8 taskId)
|
||||
{
|
||||
if (!sub_814AD18())
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -0,0 +1,637 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "decompress.h"
|
||||
#include "minigame_countdown.h"
|
||||
#include "pokemon_jump.h"
|
||||
#include "data.h"
|
||||
#include "trig.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void sub_814AF74(struct Sprite *sprite);
|
||||
static void sub_814B038(struct Sprite *sprite);
|
||||
static void sub_814B100(struct Sprite *sprite);
|
||||
static void sub_814B1CC(struct Sprite *sprite);
|
||||
|
||||
static const u16 sPkmnJumpPal1[] = INCBIN_U16("graphics/link_games/pkmnjump_pal1.gbapal");
|
||||
static const u16 sPkmnJumpPal2[] = INCBIN_U16("graphics/link_games/pkmnjump_pal2.gbapal");
|
||||
|
||||
static const u32 sPkmnJumpRopeGfx1[] = INCBIN_U32("graphics/link_games/pkmnjump_rope1.4bpp.lz");
|
||||
static const u32 sPkmnJumpRopeGfx2[] = INCBIN_U32("graphics/link_games/pkmnjump_rope2.4bpp.lz");
|
||||
static const u32 sPkmnJumpRopeGfx3[] = INCBIN_U32("graphics/link_games/pkmnjump_rope3.4bpp.lz");
|
||||
static const u32 sPkmnJumpRopeGfx4[] = INCBIN_U32("graphics/link_games/pkmnjump_rope4.4bpp.lz");
|
||||
|
||||
static const u32 sPkmnJumpStarGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_star.4bpp.lz");
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_846E0B0[] =
|
||||
{
|
||||
{sPkmnJumpRopeGfx1, 0x600, 5},
|
||||
{sPkmnJumpRopeGfx2, 0x0c00, 6},
|
||||
{sPkmnJumpRopeGfx3, 0x0600, 7},
|
||||
{sPkmnJumpRopeGfx4, 0x0600, 8},
|
||||
{sPkmnJumpStarGfx, 0x0200, 10},
|
||||
};
|
||||
|
||||
static const struct SpritePalette gUnknown_846E0D8[] =
|
||||
{
|
||||
{sPkmnJumpPal1, 5},
|
||||
{sPkmnJumpPal2, 6},
|
||||
};
|
||||
|
||||
// Forward declarations.
|
||||
static const struct OamData sOamData_846E170;
|
||||
static const struct SpriteTemplate gUnknown_846E220;
|
||||
static const struct SpriteTemplate gUnknown_846E238;
|
||||
static const struct SpriteTemplate gUnknown_846E250;
|
||||
static const struct SpriteTemplate gUnknown_846E268;
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E0E8 =
|
||||
{
|
||||
.tileTag = 0,
|
||||
.paletteTag = 0,
|
||||
.oam = &sOamData_846E170,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const s16 gUnknown_846E100[][10] =
|
||||
{
|
||||
{0x60, 0x60, 0x60, 0x72, 0x78, 0x78, 0x78, 0x72, 0x60, 0x60},
|
||||
{0x46, 0x50, 0x60, 0x72, 0x78, 0x80, 0x78, 0x72, 0x60, 0x50},
|
||||
{0x32, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
|
||||
{0x2a, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
|
||||
};
|
||||
|
||||
static const s16 gUnknown_846E150[] = {0x10, 0x28, 0x48, 0x68, 0x88, 0xa8, 0xc8, 0xe0};
|
||||
|
||||
static const struct SpriteTemplate *const gUnknown_846E160[] =
|
||||
{
|
||||
&gUnknown_846E220,
|
||||
&gUnknown_846E238,
|
||||
&gUnknown_846E250,
|
||||
&gUnknown_846E268,
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_846E170 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = 0,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(64x64),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(64x64),
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_846E178 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = 0,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(16x32),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(16x32),
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_846E180 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = 0,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(32x32),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(32x32),
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_846E188 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = 0,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E190[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E198[] =
|
||||
{
|
||||
ANIMCMD_FRAME(8, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1A0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1A8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(24, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1B0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1B8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(40, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1C0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1C8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1D0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1D8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1E0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(64, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E1E8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(80, 1),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_846E1F0[] =
|
||||
{
|
||||
sSpriteAnim_846E190,
|
||||
sSpriteAnim_846E198,
|
||||
sSpriteAnim_846E1A0,
|
||||
sSpriteAnim_846E1A8,
|
||||
sSpriteAnim_846E1B0,
|
||||
sSpriteAnim_846E1B8
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_846E208[] =
|
||||
{
|
||||
sSpriteAnim_846E1C0,
|
||||
sSpriteAnim_846E1C8,
|
||||
sSpriteAnim_846E1D0,
|
||||
sSpriteAnim_846E1D8,
|
||||
sSpriteAnim_846E1E0,
|
||||
sSpriteAnim_846E1E8
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E220 =
|
||||
{
|
||||
.tileTag = 5,
|
||||
.paletteTag = 5,
|
||||
.oam = &sOamData_846E178,
|
||||
.anims = sSpriteAnimTable_846E1F0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E238 =
|
||||
{
|
||||
.tileTag = 6,
|
||||
.paletteTag = 5,
|
||||
.oam = &sOamData_846E180,
|
||||
.anims = sSpriteAnimTable_846E208,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E250 =
|
||||
{
|
||||
.tileTag = 7,
|
||||
.paletteTag = 5,
|
||||
.oam = &sOamData_846E188,
|
||||
.anims = sSpriteAnimTable_846E1F0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E268 =
|
||||
{
|
||||
.tileTag = 8,
|
||||
.paletteTag = 5,
|
||||
.oam = &sOamData_846E188,
|
||||
.anims = sSpriteAnimTable_846E1F0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_846E280 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = 0,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(16x16),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(16x16),
|
||||
.tileNum = 0,
|
||||
.priority = 1,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E288[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 0),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_846E290[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(8, 4),
|
||||
ANIMCMD_FRAME(12, 4),
|
||||
ANIMCMD_LOOP(1),
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_846E2AC[] =
|
||||
{
|
||||
sSpriteAnim_846E288,
|
||||
sSpriteAnim_846E290
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_846E2B4 =
|
||||
{
|
||||
.tileTag = 10,
|
||||
.paletteTag = 5,
|
||||
.oam = &sOamData_846E280,
|
||||
.anims = sSpriteAnimTable_846E2AC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
void sub_814AD6C(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NELEMS(gUnknown_846E0B0); i++)
|
||||
LoadCompressedSpriteSheet(&gUnknown_846E0B0[i]);
|
||||
|
||||
for (i = 0; i < NELEMS(gUnknown_846E0D8); i++)
|
||||
LoadSpritePalette(&gUnknown_846E0D8[i]);
|
||||
|
||||
arg0->unkE = IndexOfSpritePaletteTag(5);
|
||||
arg0->unkF = IndexOfSpritePaletteTag(6);
|
||||
}
|
||||
|
||||
static void sub_814ADB4(struct Sprite *sprite)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = 0;
|
||||
}
|
||||
|
||||
void sub_814ADCC(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, s16 x, s16 y, u8 multiplayerId)
|
||||
{
|
||||
struct SpriteTemplate spriteTemplate;
|
||||
struct SpriteSheet spriteSheet;
|
||||
struct CompressedSpritePalette spritePalette;
|
||||
u8 *buffer;
|
||||
u8 *unusedBuffer;
|
||||
u8 subpriority;
|
||||
u8 spriteId;
|
||||
|
||||
spriteTemplate = gUnknown_846E0E8;
|
||||
buffer = Alloc(0x2000);
|
||||
unusedBuffer = Alloc(0x800);
|
||||
if (multiplayerId == sub_81499B4())
|
||||
subpriority = 3;
|
||||
else
|
||||
subpriority = multiplayerId + 4;
|
||||
|
||||
if (buffer && unusedBuffer)
|
||||
{
|
||||
HandleLoadSpecialPokePic(
|
||||
&gMonFrontPicTable[jumpMon->species],
|
||||
buffer,
|
||||
jumpMon->species,
|
||||
jumpMon->personality);
|
||||
|
||||
spriteSheet.data = buffer;
|
||||
spriteSheet.tag = multiplayerId;
|
||||
spriteSheet.size = 0x800;
|
||||
LoadSpriteSheet(&spriteSheet);
|
||||
|
||||
spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(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_814AF0C(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_814ADB4(arg0->unk81BC[multiplayerId]);
|
||||
arg0->unk81BC[multiplayerId]->data[7] = arg0->unk81A8[multiplayerId] - gSprites;
|
||||
arg0->unk81BC[multiplayerId]->invisible = FALSE;
|
||||
arg0->unk81BC[multiplayerId]->pos1.y = 96;
|
||||
arg0->unk81BC[multiplayerId]->callback = sub_814AF74;
|
||||
StartSpriteAnim(arg0->unk81BC[multiplayerId], 1);
|
||||
}
|
||||
|
||||
static void sub_814AF74(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
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 = TRUE;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814AFE8(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_814B038;
|
||||
arg0->unk81A8[multiplayerId]->pos2.y = 0;
|
||||
sub_814ADB4(arg0->unk81A8[multiplayerId]);
|
||||
}
|
||||
|
||||
bool32 sub_814B010(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
return arg0->unk81A8[multiplayerId]->callback == sub_814B038;
|
||||
}
|
||||
|
||||
static void sub_814B038(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_814B080(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_814ADB4(arg0->unk81A8[multiplayerId]);
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_814B100;
|
||||
}
|
||||
|
||||
void sub_814B0A8(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_81499A4();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (arg0->unk81A8[i]->callback == sub_814B100)
|
||||
{
|
||||
arg0->unk81A8[i]->invisible = FALSE;
|
||||
arg0->unk81A8[i]->callback = SpriteCallbackDummy;
|
||||
arg0->unk81A8[i]->subpriority = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814B100(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] > 3)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->invisible ^= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814B134(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_81499A4();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
arg0->unk81A8[i]->subpriority = arg0->unk81FC[i];
|
||||
}
|
||||
|
||||
void sub_814B168(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_814ADB4(arg0->unk81A8[multiplayerId]);
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_814B1CC;
|
||||
}
|
||||
|
||||
bool32 sub_814B190(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_81499A4();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (arg0->unk81A8[i]->callback == sub_814B1CC)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_814B1CC(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_814B240(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_846E2B4, x, y, 1);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
arg0->unk81BC[multiplayerId] = &gSprites[spriteId];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814B294(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
int count;
|
||||
u8 spriteId;
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
spriteId = CreateSprite(gUnknown_846E160[i], gUnknown_846E150[count], gUnknown_846E100[i][0], 2);
|
||||
arg0->unk81D0[count] = &gSprites[spriteId];
|
||||
count++;
|
||||
}
|
||||
|
||||
for (i = 3; i >= 0; i--)
|
||||
{
|
||||
spriteId = CreateSprite(gUnknown_846E160[i], gUnknown_846E150[count], gUnknown_846E100[i][0], 2);
|
||||
arg0->unk81D0[count] = &gSprites[spriteId];
|
||||
arg0->unk81D0[count]->hFlip = 1;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814B348(struct PokemonJump2 *arg0, int arg1)
|
||||
{
|
||||
int i, count, palNum;
|
||||
int priority;
|
||||
|
||||
if (arg1 > 5)
|
||||
{
|
||||
arg1 = 10 - arg1;
|
||||
priority = 3;
|
||||
palNum = arg0->unkF;
|
||||
}
|
||||
else
|
||||
{
|
||||
priority = 2;
|
||||
palNum = arg0->unkE;
|
||||
}
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
arg0->unk81D0[count]->pos1.y = gUnknown_846E100[i][arg1];
|
||||
arg0->unk81D0[count]->oam.priority = priority;
|
||||
arg0->unk81D0[count]->oam.paletteNum = palNum;
|
||||
StartSpriteAnim(arg0->unk81D0[count], arg1);
|
||||
count++;
|
||||
}
|
||||
|
||||
for (i = 3; i >= 0; i--)
|
||||
{
|
||||
arg0->unk81D0[count]->pos1.y = gUnknown_846E100[i][arg1];
|
||||
arg0->unk81D0[count]->oam.priority = priority;
|
||||
arg0->unk81D0[count]->oam.paletteNum = palNum;
|
||||
StartSpriteAnim(arg0->unk81D0[count], arg1);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814B43C(struct PokemonJump2 *arg0)
|
||||
{
|
||||
StartMinigameCountdown(9, 7, 120, 80, 0);
|
||||
sub_814B134(arg0);
|
||||
}
|
||||
|
||||
bool32 sub_814B460(void)
|
||||
{
|
||||
return IsMinigameCountdownRunning();
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "menu.h"
|
||||
#include "pokemon_jump.h"
|
||||
#include "script.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
|
||||
static void Task_ShowPokemonJumpRecords(u8 taskId);
|
||||
static void TruncateToFirstWordOnly(u8 *str);
|
||||
static void sub_814B5C4(u16 windowId);
|
||||
|
||||
static struct PokemonJumpResults *sub_814B46C(void)
|
||||
{
|
||||
return &gSaveBlock2Ptr->pokeJump;
|
||||
}
|
||||
|
||||
void ResetPokeJumpResults(void)
|
||||
{
|
||||
struct PokemonJumpResults *pokeJump = sub_814B46C();
|
||||
pokeJump->jumpsInRow = 0;
|
||||
pokeJump->bestJumpScore = 0;
|
||||
pokeJump->excellentsInRow = 0;
|
||||
pokeJump->field6 = 0;
|
||||
pokeJump->field8 = 0;
|
||||
pokeJump->field2 = 0;
|
||||
}
|
||||
|
||||
bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow)
|
||||
{
|
||||
struct PokemonJumpResults *pokeJump = sub_814B46C();
|
||||
bool32 ret = FALSE;
|
||||
|
||||
if (pokeJump->bestJumpScore < jumpScore && jumpScore <= 99990)
|
||||
pokeJump->bestJumpScore = jumpScore, ret = TRUE;
|
||||
if (pokeJump->jumpsInRow < jumpsInRow && jumpsInRow <= 9999)
|
||||
pokeJump->jumpsInRow = jumpsInRow, ret = TRUE;
|
||||
if (pokeJump->excellentsInRow < excellentsInRow && excellentsInRow <= 9999)
|
||||
pokeJump->excellentsInRow = excellentsInRow, ret = TRUE;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_814B4E8(void)
|
||||
{
|
||||
struct PokemonJumpResults *pokeJump = sub_814B46C();
|
||||
if (pokeJump->field6 < 9999)
|
||||
pokeJump->field6++;
|
||||
}
|
||||
|
||||
void ShowPokemonJumpRecords(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_ShowPokemonJumpRecords, 0);
|
||||
Task_ShowPokemonJumpRecords(taskId);
|
||||
}
|
||||
|
||||
static const struct WindowTemplate gUnknown_846E2CC =
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 1,
|
||||
.width = 28,
|
||||
.height = 9,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x1,
|
||||
};
|
||||
|
||||
static const u8 *const gUnknown_846E2D4[] = {gText_JumpsInARow, gText_BestScore2, gText_ExcellentsInARow};
|
||||
|
||||
static void Task_ShowPokemonJumpRecords(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
data[1] = AddWindow(&gUnknown_846E2CC);
|
||||
sub_814B5C4(data[1]);
|
||||
CopyWindowToVram(data[1], 3);
|
||||
data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON))
|
||||
{
|
||||
rbox_fill_rectangle(data[1]);
|
||||
CopyWindowToVram(data[1], 1);
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
RemoveWindow(data[1]);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_814B5C4(u16 windowId)
|
||||
{
|
||||
int i, x;
|
||||
int results[3];
|
||||
struct PokemonJumpResults *pokeJump = sub_814B46C();
|
||||
u8 strbuf[8];
|
||||
results[0] = pokeJump->jumpsInRow;
|
||||
results[1] = pokeJump->bestJumpScore;
|
||||
results[2] = pokeJump->excellentsInRow;
|
||||
|
||||
TextWindow_SetStdFrame0_WithPal(windowId, 0x21D, 0xD0);
|
||||
DrawTextBorderOuter(windowId, 0x21D, 0xD);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
AddTextPrinterParameterized5(windowId, 2, gText_PkmnJumpRecords, 0, 0, TEXT_SPEED_FF, NULL, 1, 0);
|
||||
for (i = 0; i < NELEMS(gUnknown_846E2D4); i++)
|
||||
{
|
||||
AddTextPrinterParameterized5(windowId, 2, gUnknown_846E2D4[i], 0, 20 + (i * 14), TEXT_SPEED_FF, NULL, 1, 0);
|
||||
ConvertIntToDecimalStringN(strbuf, results[i], STR_CONV_MODE_LEFT_ALIGN, 5);
|
||||
TruncateToFirstWordOnly(strbuf);
|
||||
x = 0xDE - GetStringWidth(2, strbuf, 0);
|
||||
AddTextPrinterParameterized5(windowId, 2, strbuf, x, 20 + (i * 14), TEXT_SPEED_FF, NULL, 0, 0);
|
||||
}
|
||||
PutWindowTilemap(windowId);
|
||||
}
|
||||
|
||||
static void TruncateToFirstWordOnly(u8 *str)
|
||||
{
|
||||
for (;*str != EOS; str++)
|
||||
{
|
||||
if (*str == CHAR_SPACE)
|
||||
{
|
||||
*str = EOS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -448,13 +448,10 @@ gUnknown_203B170: @ 203B170
|
||||
.include "src/mevent_show_news.o"
|
||||
.align 2
|
||||
.include "src/seagallop.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_203F3D4: @ 203F3D4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203F3D8: @ 203F3D8
|
||||
.space 0x4
|
||||
.include "src/pokemon_jump_2.o"
|
||||
.align 2
|
||||
.include "src/pokemon_jump_4.o"
|
||||
|
||||
gUnknown_203F3DC: @ 203F3DC
|
||||
.space 0x4
|
||||
|
||||