Port pokemon_jump from emerald, 1

This commit is contained in:
PikalaxALT
2020-02-18 14:50:24 -05:00
parent e4d15a2338
commit af6f99b931
10 changed files with 2494 additions and 5053 deletions
-642
View File
@@ -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.
-4283
View File
File diff suppressed because it is too large Load Diff
-122
View File
@@ -3,128 +3,6 @@
.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"
+1
View File
@@ -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);
+165
View File
@@ -2,9 +2,174 @@
#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[(0x81a8 - 0x1a6) / 2]; // 0x1A6
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;
};
struct PokemonJump1
{
MainCallback returnCallback;
u8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
u16 unk8;
u16 unkA;
u16 unkC;
u16 unkE;
int unk10;
u32 unk14;
u32 unk18;
int unk1C;
u32 unk20;
u32 unk24;
u32 unk28;
int unk2C;
u32 unk30;
u16 unk34;
u16 unk36;
u8 filler38[0x2];
u16 unk3A;
u16 unk3C;
u16 unk3E;
u16 unk40;
u16 unk42;
u8 unk44;
u8 unk45;
u8 unk46;
u8 isLeader;
u8 unk48;
u8 unk49;
u16 unk4A;
u8 unk4C;
u8 unk4D;
u16 unk4E;
u8 unk50;
u8 unk51;
u8 filler52[0x2];
int unk54;
int unk58;
int unk5C;
int unk60;
int unk64;
int unk68;
int unk6C;
struct PokemonJump1Sub unk70;
u8 unk7C[MAX_RFU_PLAYERS];
u8 unk81[MAX_RFU_PLAYERS];
u8 unk86[MAX_RFU_PLAYERS];
u8 unk8B[MAX_RFU_PLAYERS];
u16 unk90[MAX_RFU_PLAYERS];
u16 unk9A[MAX_RFU_PLAYERS];
struct PokemonJump2 unkA4;
struct PokemonJump1_MonInfo unk82A8[MAX_RFU_PLAYERS];
struct PokemonJump1_82E4 unk82E4[MAX_RFU_PLAYERS];
struct PokemonJump1_82E4 *unk83AC;
};
struct PokemonJumpMons
{
u16 species;
u16 unk2;
};
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_802D0BC(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);
#endif // GUARD_POKEMON_JUMP_H
-2
View File
@@ -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);
+4 -1
View File
@@ -274,7 +274,8 @@ SECTIONS {
src/mevent_show_news.o(.text);
src/menews_jisan.o(.text);
src/seagallop.o(.text);
asm/pokemon_jump.o(.text);
src/pokemon_jump.o(.text);
src/pokemon_jump_2.o(.text);
asm/pokemon_jump_2.o(.text);
asm/berry_crush.o(.text);
asm/berry_crush_2.o(.text);
@@ -565,6 +566,8 @@ SECTIONS {
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
src/seagallop.o(.rodata);
src/pokemon_jump.o(.rodata);
src/pokemon_jump_2.o(.rodata);
data/pokemon_jump.o(.rodata);
data/berry_crush.o(.rodata);
src/wireless_communication_status_screen.o(.rodata);
+254
View File
@@ -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]++;
}
}
+2068
View File
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -448,11 +448,10 @@ gUnknown_203B170: @ 203B170
.include "src/mevent_show_news.o"
.align 2
.include "src/seagallop.o"
.align 2
.include "src/pokemon_jump_2.o"
.align 2
gUnknown_203F3D4: @ 203F3D4
.space 0x4
gUnknown_203F3D8: @ 203F3D8
.space 0x4