union_room_chat through sub_81287B4
This commit is contained in:
@@ -5,593 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8128420
|
||||
sub_8128420: @ 8128420
|
||||
push {r4,lr}
|
||||
ldr r4, _08128450 @ =gUnknown_203B0E0
|
||||
movs r0, 0xDC
|
||||
lsls r0, 1
|
||||
bl Alloc
|
||||
str r0, [r4]
|
||||
bl sub_812845C
|
||||
ldr r1, _08128454 @ =gKeyRepeatStartDelay
|
||||
movs r0, 0x14
|
||||
strh r0, [r1]
|
||||
bl sub_812B4AC
|
||||
movs r0, 0
|
||||
bl SetVBlankCallback
|
||||
ldr r0, _08128458 @ =c2_081284E0
|
||||
bl SetMainCallback2
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08128450: .4byte gUnknown_203B0E0
|
||||
_08128454: .4byte gKeyRepeatStartDelay
|
||||
_08128458: .4byte c2_081284E0
|
||||
thumb_func_end sub_8128420
|
||||
|
||||
thumb_func_start sub_812845C
|
||||
sub_812845C: @ 812845C
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
movs r5, 0
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x4]
|
||||
strh r0, [r4, 0x6]
|
||||
strb r5, [r4, 0x10]
|
||||
strb r5, [r4, 0x11]
|
||||
strb r5, [r4, 0x12]
|
||||
strb r5, [r4, 0x14]
|
||||
strb r5, [r4, 0x15]
|
||||
strb r5, [r4, 0x16]
|
||||
movs r0, 0xFF
|
||||
strb r0, [r4, 0x1A]
|
||||
bl GetLinkPlayerCount
|
||||
strb r0, [r4, 0xD]
|
||||
bl GetMultiplayerId
|
||||
strb r0, [r4, 0x13]
|
||||
strb r5, [r4, 0x17]
|
||||
strb r5, [r4, 0x18]
|
||||
movs r1, 0xC8
|
||||
lsls r1, 1
|
||||
adds r0, r4, r1
|
||||
bl sub_8129560
|
||||
ldr r7, _081284B4 @ =gSaveBlock1Ptr
|
||||
ldr r6, _081284B8 @ =0x00003ad4
|
||||
adds r4, 0xB9
|
||||
movs r5, 0x9
|
||||
_0812849A:
|
||||
ldr r1, [r7]
|
||||
adds r1, r6
|
||||
adds r0, r4, 0
|
||||
bl StringCopy
|
||||
adds r6, 0x15
|
||||
adds r4, 0x15
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _0812849A
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081284B4: .4byte gSaveBlock1Ptr
|
||||
_081284B8: .4byte 0x00003ad4
|
||||
thumb_func_end sub_812845C
|
||||
|
||||
thumb_func_start sub_81284BC
|
||||
sub_81284BC: @ 81284BC
|
||||
push {r4,lr}
|
||||
ldr r4, _081284DC @ =gUnknown_203B0E0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0xE]
|
||||
bl DestroyTask
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0xF]
|
||||
bl DestroyTask
|
||||
ldr r0, [r4]
|
||||
bl Free
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081284DC: .4byte gUnknown_203B0E0
|
||||
thumb_func_end sub_81284BC
|
||||
|
||||
thumb_func_start c2_081284E0
|
||||
c2_081284E0: @ 81284E0
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _081284FC @ =gMain
|
||||
movs r1, 0x87
|
||||
lsls r1, 3
|
||||
adds r6, r0, r1
|
||||
ldrb r0, [r6]
|
||||
cmp r0, 0x1
|
||||
beq _08128518
|
||||
cmp r0, 0x1
|
||||
bgt _08128500
|
||||
cmp r0, 0
|
||||
beq _08128506
|
||||
b _08128598
|
||||
.align 2, 0
|
||||
_081284FC: .4byte gMain
|
||||
_08128500:
|
||||
cmp r0, 0x2
|
||||
beq _08128554
|
||||
b _08128598
|
||||
_08128506:
|
||||
bl ResetTasks
|
||||
bl ResetSpriteData
|
||||
bl FreeAllSpritePalettes
|
||||
bl sub_8129B14
|
||||
b _08128548
|
||||
_08128518:
|
||||
bl sub_8129BFC
|
||||
bl sub_8129B78
|
||||
adds r5, r0, 0
|
||||
cmp r5, 0
|
||||
bne _08128598
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
movs r2, 0
|
||||
bl BlendPalettes
|
||||
str r5, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x10
|
||||
movs r3, 0
|
||||
bl BeginNormalPaletteFade
|
||||
ldr r0, _08128550 @ =sub_81285B4
|
||||
bl SetVBlankCallback
|
||||
_08128548:
|
||||
ldrb r0, [r6]
|
||||
adds r0, 0x1
|
||||
strb r0, [r6]
|
||||
b _08128598
|
||||
.align 2, 0
|
||||
_08128550: .4byte sub_81285B4
|
||||
_08128554:
|
||||
bl UpdatePaletteFade
|
||||
ldr r0, _081285A0 @ =gPaletteFade
|
||||
ldrb r1, [r0, 0x7]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08128598
|
||||
ldr r0, _081285A4 @ =sub_81285CC
|
||||
bl SetMainCallback2
|
||||
movs r0, 0x11
|
||||
movs r1, 0
|
||||
bl SetQuestLogEvent
|
||||
ldr r0, _081285A8 @ =sub_81285E8
|
||||
movs r1, 0x8
|
||||
bl CreateTask
|
||||
ldr r4, _081285AC @ =gUnknown_203B0E0
|
||||
ldr r1, [r4]
|
||||
strb r0, [r1, 0xE]
|
||||
ldr r0, _081285B0 @ =sub_81298F8
|
||||
movs r1, 0x7
|
||||
bl CreateTask
|
||||
ldr r1, [r4]
|
||||
strb r0, [r1, 0xF]
|
||||
bl LoadWirelessStatusIndicatorSpriteGfx
|
||||
movs r0, 0xE8
|
||||
movs r1, 0x96
|
||||
bl CreateWirelessStatusIndicatorSprite
|
||||
_08128598:
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081285A0: .4byte gPaletteFade
|
||||
_081285A4: .4byte sub_81285CC
|
||||
_081285A8: .4byte sub_81285E8
|
||||
_081285AC: .4byte gUnknown_203B0E0
|
||||
_081285B0: .4byte sub_81298F8
|
||||
thumb_func_end c2_081284E0
|
||||
|
||||
thumb_func_start sub_81285B4
|
||||
sub_81285B4: @ 81285B4
|
||||
push {lr}
|
||||
bl TransferPlttBuffer
|
||||
bl LoadOam
|
||||
bl ProcessSpriteCopyRequests
|
||||
bl ScanlineEffect_InitHBlankDmaTransfer
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81285B4
|
||||
|
||||
thumb_func_start sub_81285CC
|
||||
sub_81285CC: @ 81285CC
|
||||
push {lr}
|
||||
bl RunTasks
|
||||
bl sub_8129BFC
|
||||
bl AnimateSprites
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81285CC
|
||||
|
||||
thumb_func_start sub_81285E8
|
||||
sub_81285E8: @ 81285E8
|
||||
push {r4,lr}
|
||||
ldr r4, _08128600 @ =gUnknown_203B0E0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x17]
|
||||
cmp r0, 0x2
|
||||
beq _0812860E
|
||||
cmp r0, 0x2
|
||||
bgt _08128604
|
||||
cmp r0, 0x1
|
||||
beq _0812860A
|
||||
b _0812861E
|
||||
.align 2, 0
|
||||
_08128600: .4byte gUnknown_203B0E0
|
||||
_08128604:
|
||||
cmp r0, 0x3
|
||||
beq _08128612
|
||||
b _0812861E
|
||||
_0812860A:
|
||||
movs r0, 0x6
|
||||
b _08128614
|
||||
_0812860E:
|
||||
movs r0, 0x7
|
||||
b _08128614
|
||||
_08128612:
|
||||
movs r0, 0x8
|
||||
_08128614:
|
||||
bl sub_8129218
|
||||
ldr r1, [r4]
|
||||
movs r0, 0
|
||||
strb r0, [r1, 0x17]
|
||||
_0812861E:
|
||||
ldr r1, _08128638 @ =gUnknown_845A880
|
||||
ldr r0, _0812863C @ =gUnknown_203B0E0
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, 0x4]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08128638: .4byte gUnknown_845A880
|
||||
_0812863C: .4byte gUnknown_203B0E0
|
||||
thumb_func_end sub_81285E8
|
||||
|
||||
thumb_func_start sub_8128640
|
||||
sub_8128640: @ 8128640
|
||||
push {r4,lr}
|
||||
ldr r4, _08128658 @ =gUnknown_203B0E0
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x6]
|
||||
cmp r1, 0x1
|
||||
beq _08128674
|
||||
cmp r1, 0x1
|
||||
bgt _0812865C
|
||||
cmp r1, 0
|
||||
beq _08128662
|
||||
b _081286BC
|
||||
.align 2, 0
|
||||
_08128658: .4byte gUnknown_203B0E0
|
||||
_0812865C:
|
||||
cmp r1, 0x2
|
||||
beq _081286AC
|
||||
b _081286BC
|
||||
_08128662:
|
||||
movs r1, 0xC8
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
bl sub_8129568
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r1, 0x6]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1, 0x6]
|
||||
_08128674:
|
||||
bl IsLinkTaskFinished
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _081286BC
|
||||
bl sub_80FBA1C
|
||||
cmp r0, 0
|
||||
bne _081286BC
|
||||
ldr r4, _081286A8 @ =gUnknown_203B0E0
|
||||
ldr r1, [r4]
|
||||
movs r0, 0xC8
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
movs r0, 0
|
||||
movs r2, 0x28
|
||||
bl SendBlock
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _081286BC
|
||||
ldr r1, [r4]
|
||||
ldrh r0, [r1, 0x6]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1, 0x6]
|
||||
b _081286BC
|
||||
.align 2, 0
|
||||
_081286A8: .4byte gUnknown_203B0E0
|
||||
_081286AC:
|
||||
bl IsLinkTaskFinished
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _081286BC
|
||||
movs r0, 0x1
|
||||
bl sub_8129218
|
||||
_081286BC:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8128640
|
||||
|
||||
thumb_func_start sub_81286C4
|
||||
sub_81286C4: @ 81286C4
|
||||
push {r4,r5,lr}
|
||||
ldr r5, _081286D8 @ =gUnknown_203B0E0
|
||||
ldr r3, [r5]
|
||||
ldrh r0, [r3, 0x6]
|
||||
cmp r0, 0
|
||||
beq _081286DC
|
||||
cmp r0, 0x1
|
||||
beq _0812878A
|
||||
b _081287AC
|
||||
.align 2, 0
|
||||
_081286D8: .4byte gUnknown_203B0E0
|
||||
_081286DC:
|
||||
ldr r1, _081286F8 @ =gMain
|
||||
ldrh r2, [r1, 0x2E]
|
||||
movs r0, 0x8
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _081286FC
|
||||
ldrb r0, [r3, 0x15]
|
||||
cmp r0, 0
|
||||
beq _081287AC
|
||||
movs r0, 0x4
|
||||
bl sub_8129218
|
||||
b _081287AC
|
||||
.align 2, 0
|
||||
_081286F8: .4byte gMain
|
||||
_081286FC:
|
||||
movs r0, 0x4
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _0812870C
|
||||
movs r0, 0x2
|
||||
bl sub_8129218
|
||||
b _081287AC
|
||||
_0812870C:
|
||||
ldrh r1, [r1, 0x30]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08128738
|
||||
ldrb r0, [r3, 0x15]
|
||||
cmp r0, 0
|
||||
beq _08128730
|
||||
bl sub_81293AC
|
||||
movs r0, 0x8
|
||||
movs r1, 0
|
||||
bl sub_8129C34
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x1
|
||||
strh r0, [r1, 0x6]
|
||||
b _081287AC
|
||||
_08128730:
|
||||
movs r0, 0x3
|
||||
bl sub_8129218
|
||||
b _081287AC
|
||||
_08128738:
|
||||
movs r4, 0x1
|
||||
adds r0, r4, 0
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08128754
|
||||
bl sub_81292D8
|
||||
movs r0, 0x8
|
||||
movs r1, 0
|
||||
bl sub_8129C34
|
||||
movs r0, 0x2
|
||||
movs r1, 0x1
|
||||
b _08128780
|
||||
_08128754:
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _08128774
|
||||
ldrb r0, [r3, 0x10]
|
||||
cmp r0, 0x3
|
||||
beq _0812876C
|
||||
bl sub_81293D8
|
||||
movs r0, 0x8
|
||||
b _0812877E
|
||||
_0812876C:
|
||||
movs r0, 0x5
|
||||
bl sub_8129218
|
||||
b _081287AC
|
||||
_08128774:
|
||||
bl sub_8129228
|
||||
cmp r0, 0
|
||||
beq _081287AC
|
||||
movs r0, 0x1
|
||||
_0812877E:
|
||||
movs r1, 0
|
||||
_08128780:
|
||||
bl sub_8129C34
|
||||
ldr r0, [r5]
|
||||
strh r4, [r0, 0x6]
|
||||
b _081287AC
|
||||
_0812878A:
|
||||
movs r0, 0
|
||||
bl sub_8129C8C
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
movs r0, 0x1
|
||||
bl sub_8129C8C
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r4, 0
|
||||
bne _081287AC
|
||||
cmp r1, 0
|
||||
bne _081287AC
|
||||
ldr r0, [r5]
|
||||
strh r1, [r0, 0x6]
|
||||
_081287AC:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81286C4
|
||||
|
||||
thumb_func_start sub_81287B4
|
||||
sub_81287B4: @ 81287B4
|
||||
push {r4-r6,lr}
|
||||
ldr r0, _081287CC @ =gUnknown_203B0E0
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, 0x6]
|
||||
cmp r0, 0x4
|
||||
bls _081287C2
|
||||
b _081288CE
|
||||
_081287C2:
|
||||
lsls r0, 2
|
||||
ldr r1, _081287D0 @ =_081287D4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_081287CC: .4byte gUnknown_203B0E0
|
||||
_081287D0: .4byte _081287D4
|
||||
.align 2, 0
|
||||
_081287D4:
|
||||
.4byte _081287E8
|
||||
.4byte _081287F2
|
||||
.4byte _08128810
|
||||
.4byte _0812889C
|
||||
.4byte _081288B0
|
||||
_081287E8:
|
||||
movs r0, 0x3
|
||||
movs r1, 0
|
||||
bl sub_8129C34
|
||||
b _081287FE
|
||||
_081287F2:
|
||||
movs r0, 0
|
||||
bl sub_8129C8C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _081288CE
|
||||
_081287FE:
|
||||
ldr r0, _0812880C @ =gUnknown_203B0E0
|
||||
ldr r1, [r0]
|
||||
ldrh r0, [r1, 0x6]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1, 0x6]
|
||||
b _081288CE
|
||||
.align 2, 0
|
||||
_0812880C: .4byte gUnknown_203B0E0
|
||||
_08128810:
|
||||
bl Menu_ProcessInput
|
||||
lsls r0, 24
|
||||
asrs r0, 8
|
||||
lsrs r6, r0, 16
|
||||
asrs r4, r0, 16
|
||||
movs r0, 0x2
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
beq _08128848
|
||||
adds r0, 0x1
|
||||
cmp r4, r0
|
||||
beq _08128868
|
||||
movs r0, 0x4
|
||||
movs r1, 0
|
||||
bl sub_8129C34
|
||||
ldr r5, _08128844 @ =gUnknown_203B0E0
|
||||
ldr r2, [r5]
|
||||
ldrb r0, [r2, 0x10]
|
||||
cmp r0, r4
|
||||
beq _08128870
|
||||
cmp r4, 0x3
|
||||
ble _08128880
|
||||
b _08128870
|
||||
.align 2, 0
|
||||
_08128844: .4byte gUnknown_203B0E0
|
||||
_08128848:
|
||||
ldr r0, _08128864 @ =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x4
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081288CE
|
||||
movs r0, 0x5
|
||||
bl PlaySE
|
||||
movs r0, 0x1
|
||||
bl Menu_MoveCursor
|
||||
b _081288CE
|
||||
.align 2, 0
|
||||
_08128864: .4byte gMain
|
||||
_08128868:
|
||||
movs r0, 0x4
|
||||
movs r1, 0
|
||||
bl sub_8129C34
|
||||
_08128870:
|
||||
ldr r0, _0812887C @ =gUnknown_203B0E0
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x3
|
||||
strh r0, [r1, 0x6]
|
||||
b _081288CE
|
||||
.align 2, 0
|
||||
_0812887C: .4byte gUnknown_203B0E0
|
||||
_08128880:
|
||||
movs r1, 0
|
||||
strb r1, [r2, 0x11]
|
||||
ldr r0, [r5]
|
||||
strb r1, [r0, 0x12]
|
||||
movs r0, 0x5
|
||||
movs r1, 0x1
|
||||
bl sub_8129C34
|
||||
ldr r0, [r5]
|
||||
strb r6, [r0, 0x10]
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x4
|
||||
strh r0, [r1, 0x6]
|
||||
b _081288CE
|
||||
_0812889C:
|
||||
movs r0, 0
|
||||
bl sub_8129C8C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _081288CE
|
||||
movs r0, 0x1
|
||||
bl sub_8129218
|
||||
b _081288CE
|
||||
_081288B0:
|
||||
movs r0, 0
|
||||
bl sub_8129C8C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _081288CE
|
||||
movs r0, 0x1
|
||||
bl sub_8129C8C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _081288CE
|
||||
movs r0, 0x1
|
||||
bl sub_8129218
|
||||
_081288CE:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81287B4
|
||||
|
||||
thumb_func_start sub_81288D4
|
||||
sub_81288D4: @ 81288D4
|
||||
push {r4,lr}
|
||||
|
||||
@@ -6,18 +6,6 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_845A880:: @ 845A880
|
||||
.4byte sub_8128640
|
||||
.4byte sub_81286C4
|
||||
.4byte sub_81287B4
|
||||
.4byte sub_81288D4
|
||||
.4byte sub_8128DA4
|
||||
.4byte sub_8128E78
|
||||
.4byte sub_8128AA0
|
||||
.4byte sub_8128C04
|
||||
.4byte sub_8128CA8
|
||||
.4byte sub_8128FB8
|
||||
|
||||
gUnknown_845A8A8:: @ 845A8A8
|
||||
.byte 0x09, 0x09, 0x09, 0x09
|
||||
|
||||
|
||||
+4
-1
@@ -718,6 +718,8 @@ struct TrainerNameRecord
|
||||
u8 trainerName[PLAYER_NAME_LENGTH];
|
||||
};
|
||||
|
||||
#define UNION_ROOM_KB_ROW_COUNT 10
|
||||
|
||||
struct SaveBlock1
|
||||
{
|
||||
/*0x0000*/ struct Coords16 pos;
|
||||
@@ -772,7 +774,8 @@ struct SaveBlock1
|
||||
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
|
||||
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
||||
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
|
||||
/*0x3A94*/ u8 filler3A94[0x114];
|
||||
/*0x3A94*/ u8 filler3A94[0x40];
|
||||
/*0x3AD4*/ u8 unk3AD4[UNION_ROOM_KB_ROW_COUNT][21];
|
||||
/*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20];
|
||||
/*0x3C98*/ struct DaycareMon route5DayCareMon;
|
||||
/*0x3D24*/ u8 filler3D24[0x10];
|
||||
|
||||
@@ -92,5 +92,6 @@ bool8 MoveCursor(u8 by, u8 dirn);
|
||||
void HelpSystem_BackupSomeVariable(void);
|
||||
void HelpSystem_RestoreSomeVariable(void);
|
||||
void HelpSystemRenderText(u8 font, u8 * dest, const u8 * src, u8 x, u8 y, u8 width, u8 height);
|
||||
void sub_812B4AC(void);
|
||||
|
||||
#endif //GUARD_HELP_SYSTEM_H
|
||||
|
||||
@@ -325,6 +325,7 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
|
||||
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
|
||||
bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
|
||||
bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
|
||||
bool32 sub_80FBA1C(void);
|
||||
|
||||
#include "mevent_server.h"
|
||||
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
|
||||
|
||||
@@ -73,5 +73,6 @@ extern const char RomHeaderGameCode[4];
|
||||
extern const char RomHeaderSoftwareVersion;
|
||||
|
||||
extern u8 gLinkTransferringData;
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
|
||||
#endif // GUARD_MAIN_H
|
||||
|
||||
@@ -246,6 +246,7 @@ SECTIONS {
|
||||
src/union_room_battle.o(.text);
|
||||
asm/pokemon_special_anim.o(.text);
|
||||
src/party_menu.o(.text);
|
||||
src/union_room_chat.o(.text);
|
||||
asm/union_room_chat.o(.text);
|
||||
src/help_system_812B1E0.o(.text);
|
||||
src/quest_log_battle.o(.text);
|
||||
@@ -534,6 +535,7 @@ SECTIONS {
|
||||
src/union_room_message.o(.rodata);
|
||||
data/pokemon_special_anim.o(.rodata);
|
||||
src/party_menu.o(.rodata);
|
||||
src/union_room_chat.o(.rodata);
|
||||
data/union_room_chat.o(.rodata);
|
||||
src/help_system_812B1E0.o(.rodata);
|
||||
src/fame_checker.o(.rodata);
|
||||
|
||||
@@ -0,0 +1,352 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "help_system.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "list_menu.h"
|
||||
#include "menu.h"
|
||||
#include "quest_log.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "task.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
enum
|
||||
{
|
||||
UNION_ROOM_KB_PAGE_UPPER,
|
||||
UNION_ROOM_KB_PAGE_LOWER,
|
||||
UNION_ROOM_KB_PAGE_EMOJI,
|
||||
UNION_ROOM_KB_PAGE_COUNT
|
||||
};
|
||||
|
||||
struct UnionRoomChat
|
||||
{
|
||||
u8 filler0[0x4];
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u8 filler8[0x2];
|
||||
u16 unkA;
|
||||
u8 fillerC[0x1];
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 currentPage;
|
||||
u8 unk11;
|
||||
u8 currentRow;
|
||||
u8 unk13;
|
||||
u8 unk14;
|
||||
u8 unk15;
|
||||
u8 unk16;
|
||||
u8 unk17;
|
||||
u8 unk18;
|
||||
u8 unk19;
|
||||
u8 unk1A[0x1F];
|
||||
u8 unk39[0x40];
|
||||
u8 unk79[0x40];
|
||||
u8 unkB9[UNION_ROOM_KB_ROW_COUNT][21];
|
||||
u8 filler18B[0x5];
|
||||
u8 unk190[0x28];
|
||||
};
|
||||
|
||||
EWRAM_DATA struct UnionRoomChat * gUnknown_203B0E0 = NULL;
|
||||
|
||||
void sub_812845C(struct UnionRoomChat * unionRoomChat);
|
||||
void c2_081284E0(void);
|
||||
void sub_81285B4(void);
|
||||
void sub_81285CC(void);
|
||||
void sub_81285E8(u8 taskId);
|
||||
void sub_8128640(void);
|
||||
void sub_81286C4(void);
|
||||
void sub_81287B4(void);
|
||||
void sub_81288D4(void);
|
||||
void sub_8128DA4(void);
|
||||
void sub_8128E78(void);
|
||||
void sub_8128AA0(void);
|
||||
void sub_8128C04(void);
|
||||
void sub_8128CA8(void);
|
||||
void sub_8128FB8(void);
|
||||
void sub_8129218(u16 a0);
|
||||
bool32 sub_8129228(void);
|
||||
void sub_81292D8(void);
|
||||
void sub_81293AC(void);
|
||||
void sub_81293D8(void);
|
||||
void sub_8129560(u8 *ptr);
|
||||
void sub_8129568(u8 *ptr);
|
||||
void sub_81298F8(u8 taskId);
|
||||
void sub_8129B14(void);
|
||||
bool32 sub_8129B78(void);
|
||||
void sub_8129BFC(void);
|
||||
void sub_8129C34(u16 a0, u8 a1);
|
||||
u8 sub_8129C8C(u8 a0);
|
||||
|
||||
static void (*const gUnknown_845A880[])(void) = {
|
||||
sub_8128640,
|
||||
sub_81286C4,
|
||||
sub_81287B4,
|
||||
sub_81288D4,
|
||||
sub_8128DA4,
|
||||
sub_8128E78,
|
||||
sub_8128AA0,
|
||||
sub_8128C04,
|
||||
sub_8128CA8,
|
||||
sub_8128FB8
|
||||
};
|
||||
|
||||
void sub_8128420(void)
|
||||
{
|
||||
gUnknown_203B0E0 = Alloc(sizeof(struct UnionRoomChat));
|
||||
sub_812845C(gUnknown_203B0E0);
|
||||
gKeyRepeatStartDelay = 20;
|
||||
sub_812B4AC();
|
||||
SetVBlankCallback(NULL);
|
||||
SetMainCallback2(c2_081284E0);
|
||||
}
|
||||
|
||||
void sub_812845C(struct UnionRoomChat * unionRoomChat)
|
||||
{
|
||||
int i;
|
||||
|
||||
unionRoomChat->unk4 = 0;
|
||||
unionRoomChat->unk6 = 0;
|
||||
unionRoomChat->currentPage = 0;
|
||||
unionRoomChat->unk11 = 0;
|
||||
unionRoomChat->currentRow = 0;
|
||||
unionRoomChat->unk14 = 0;
|
||||
unionRoomChat->unk15 = 0;
|
||||
unionRoomChat->unk16 = 0;
|
||||
unionRoomChat->unk1A[0] = EOS;
|
||||
unionRoomChat->unkD = GetLinkPlayerCount();
|
||||
unionRoomChat->unk13 = GetMultiplayerId();
|
||||
unionRoomChat->unk17 = 0;
|
||||
unionRoomChat->unk18 = 0;
|
||||
sub_8129560(unionRoomChat->unk190);
|
||||
for (i = 0; i < UNION_ROOM_KB_ROW_COUNT; i++)
|
||||
StringCopy(unionRoomChat->unkB9[i], gSaveBlock1Ptr->unk3AD4[i]);
|
||||
}
|
||||
|
||||
void sub_81284BC(void)
|
||||
{
|
||||
DestroyTask(gUnknown_203B0E0->unkE);
|
||||
DestroyTask(gUnknown_203B0E0->unkF);
|
||||
Free(gUnknown_203B0E0);
|
||||
}
|
||||
|
||||
void c2_081284E0(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
sub_8129B14();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8129BFC();
|
||||
if (!sub_8129B78())
|
||||
{
|
||||
BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
|
||||
SetVBlankCallback(sub_81285B4);
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
UpdatePaletteFade();
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(sub_81285CC);
|
||||
SetQuestLogEvent(QL_EVENT_USED_UNION_ROOM_CHAT, NULL);
|
||||
gUnknown_203B0E0->unkE = CreateTask(sub_81285E8, 8);
|
||||
gUnknown_203B0E0->unkF = CreateTask(sub_81298F8, 7);
|
||||
LoadWirelessStatusIndicatorSpriteGfx();
|
||||
CreateWirelessStatusIndicatorSprite(232, 150);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81285B4(void)
|
||||
{
|
||||
TransferPlttBuffer();
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
ScanlineEffect_InitHBlankDmaTransfer();
|
||||
}
|
||||
|
||||
void sub_81285CC(void)
|
||||
{
|
||||
RunTasks();
|
||||
sub_8129BFC();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_81285E8(u8 taskId)
|
||||
{
|
||||
switch (gUnknown_203B0E0->unk17)
|
||||
{
|
||||
case 1:
|
||||
sub_8129218(6);
|
||||
gUnknown_203B0E0->unk17 = 0;
|
||||
break;
|
||||
case 2:
|
||||
sub_8129218(7);
|
||||
gUnknown_203B0E0->unk17 = 0;
|
||||
break;
|
||||
case 3:
|
||||
sub_8129218(8);
|
||||
gUnknown_203B0E0->unk17 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
gUnknown_845A880[gUnknown_203B0E0->unk4]();
|
||||
}
|
||||
|
||||
void sub_8128640(void)
|
||||
{
|
||||
switch (gUnknown_203B0E0->unk6)
|
||||
{
|
||||
case 0:
|
||||
sub_8129568(gUnknown_203B0E0->unk190);
|
||||
gUnknown_203B0E0->unk6++;
|
||||
// fall through
|
||||
case 1:
|
||||
if (IsLinkTaskFinished() && !sub_80FBA1C())
|
||||
{
|
||||
if (SendBlock(0, gUnknown_203B0E0->unk190, sizeof(gUnknown_203B0E0->unk190)))
|
||||
gUnknown_203B0E0->unk6++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (IsLinkTaskFinished())
|
||||
sub_8129218(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81286C4(void)
|
||||
{
|
||||
bool8 var0, var1;
|
||||
|
||||
switch (gUnknown_203B0E0->unk6)
|
||||
{
|
||||
case 0:
|
||||
if (JOY_NEW(START_BUTTON))
|
||||
{
|
||||
if (gUnknown_203B0E0->unk15)
|
||||
sub_8129218(4);
|
||||
}
|
||||
else if (JOY_NEW(SELECT_BUTTON))
|
||||
{
|
||||
sub_8129218(2);
|
||||
}
|
||||
else if (JOY_REPT(B_BUTTON))
|
||||
{
|
||||
if (gUnknown_203B0E0->unk15)
|
||||
{
|
||||
sub_81293AC();
|
||||
sub_8129C34(8, 0);
|
||||
gUnknown_203B0E0->unk6 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8129218(3);
|
||||
}
|
||||
}
|
||||
else if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
sub_81292D8();
|
||||
sub_8129C34(8, 0);
|
||||
sub_8129C34(2, 1);
|
||||
gUnknown_203B0E0->unk6 = 1;
|
||||
}
|
||||
else if (JOY_NEW(R_BUTTON))
|
||||
{
|
||||
if (gUnknown_203B0E0->currentPage != UNION_ROOM_KB_PAGE_COUNT)
|
||||
{
|
||||
sub_81293D8();
|
||||
sub_8129C34(8, 0);
|
||||
gUnknown_203B0E0->unk6 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8129218(5);
|
||||
}
|
||||
}
|
||||
else if (sub_8129228())
|
||||
{
|
||||
sub_8129C34(1, 0);
|
||||
gUnknown_203B0E0->unk6 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
var0 = sub_8129C8C(0);
|
||||
var1 = sub_8129C8C(1);
|
||||
if (!var0 && !var1)
|
||||
gUnknown_203B0E0->unk6 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81287B4(void)
|
||||
{
|
||||
s16 input;
|
||||
int var0;
|
||||
|
||||
switch (gUnknown_203B0E0->unk6)
|
||||
{
|
||||
case 0:
|
||||
sub_8129C34(3, 0);
|
||||
gUnknown_203B0E0->unk6++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_8129C8C(0))
|
||||
gUnknown_203B0E0->unk6++;
|
||||
break;
|
||||
case 2:
|
||||
input = Menu_ProcessInput();
|
||||
switch (input)
|
||||
{
|
||||
default:
|
||||
sub_8129C34(4, 0);
|
||||
var0 = 1;
|
||||
if (gUnknown_203B0E0->currentPage == input || input > UNION_ROOM_KB_PAGE_COUNT)
|
||||
var0 = 0;
|
||||
break;
|
||||
case MENU_NOTHING_CHOSEN:
|
||||
if (gMain.newKeys & SELECT_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
Menu_MoveCursor(1);
|
||||
}
|
||||
return;
|
||||
case MENU_B_PRESSED:
|
||||
sub_8129C34(4, 0);
|
||||
gUnknown_203B0E0->unk6 = 3;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!var0)
|
||||
{
|
||||
gUnknown_203B0E0->unk6 = 3;
|
||||
return;
|
||||
}
|
||||
|
||||
gUnknown_203B0E0->unk11 = 0;
|
||||
gUnknown_203B0E0->currentRow = 0;
|
||||
sub_8129C34(5, 1);
|
||||
gUnknown_203B0E0->currentPage = input;
|
||||
gUnknown_203B0E0->unk6 = 4;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8129C8C(0))
|
||||
sub_8129218(1);
|
||||
break;
|
||||
case 4:
|
||||
if (!sub_8129C8C(0) && !sub_8129C8C(1))
|
||||
sub_8129218(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user