DisplayMatchInfoOnCard decompiled

This commit is contained in:
DizzyEggg 2018-08-20 22:56:05 +02:00
parent 5da12f2b21
commit a12b69eae1
3 changed files with 298 additions and 929 deletions

View File

@ -5,859 +5,6 @@
.text
thumb_func_start sub_819314C
sub_819314C: @ 819314C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x80
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x34]
lsls r1, 24
lsrs r6, r1, 24
movs r0, 0
str r0, [sp, 0x3C]
movs r7, 0
movs r1, 0
str r1, [sp, 0x40]
movs r2, 0
str r2, [sp, 0x44]
mov r9, r2
movs r0, 0x1
ldr r3, [sp, 0x34]
ands r0, r3
cmp r0, 0
beq _08193186
movs r7, 0x8
str r7, [sp, 0x3C]
movs r7, 0x9
movs r0, 0x2
mov r9, r0
_08193186:
movs r0, 0x2
ldr r1, [sp, 0x34]
ands r0, r1
cmp r0, 0
beq _08193196
movs r2, 0x80
lsls r2, 1
str r2, [sp, 0x40]
_08193196:
movs r0, 0x4
ldr r3, [sp, 0x34]
ands r0, r3
cmp r0, 0
beq _081931A4
movs r0, 0xA0
str r0, [sp, 0x44]
_081931A4:
movs r0, 0x8
ldr r1, [sp, 0x34]
ands r0, r1
cmp r0, 0
beq _081931B2
ldr r2, =0xffffff00
str r2, [sp, 0x40]
_081931B2:
movs r0, 0x10
ldr r3, [sp, 0x34]
ands r0, r3
cmp r0, 0
beq _081931C2
movs r0, 0xA0
negs r0, r0
str r0, [sp, 0x44]
_081931C2:
ldr r4, =gUnknown_0203CD78
ldr r1, [r4]
adds r1, 0x11
adds r0, r6, 0
bl sub_8192F08
str r0, [sp, 0x38]
movs r5, 0
mov r1, sp
adds r1, 0x1C
str r1, [sp, 0x48]
mov r2, sp
adds r2, 0x24
str r2, [sp, 0x4C]
lsls r1, r6, 1
mov r3, sp
adds r3, 0x2C
str r3, [sp, 0x50]
ldr r0, [sp, 0x40]
adds r0, 0x30
mov r8, r0
ldr r2, [sp, 0x44]
adds r2, 0x58
str r2, [sp, 0x78]
movs r3, 0xC
add r3, r9
mov r10, r3
ldr r0, [sp, 0x40]
adds r0, 0xC0
str r0, [sp, 0x7C]
mov r2, r9
adds r2, 0xD
str r2, [sp, 0x74]
ldr r3, [sp, 0x3C]
adds r3, 0x1
mov r9, r3
ldr r0, [sp, 0x3C]
adds r0, 0x2
str r0, [sp, 0x54]
ldr r2, [sp, 0x3C]
adds r2, 0x5
str r2, [sp, 0x5C]
adds r3, r7, 0
adds r3, 0x8
str r3, [sp, 0x6C]
adds r0, r7, 0x6
str r0, [sp, 0x64]
adds r2, r7, 0x7
str r2, [sp, 0x68]
lsls r3, r6, 2
str r3, [sp, 0x58]
adds r0, r7, 0x5
str r0, [sp, 0x60]
ldr r0, [r4]
adds r0, 0x11
mov r12, r0
ldr r0, =gSaveBlock2Ptr
ldr r4, [r0]
ldr r0, =gUnknown_0860D3C6
movs r3, 0
adds r1, r6
adds r1, r0
ldrb r6, [r1]
_08193240:
ldr r1, [sp, 0x48]
adds r2, r3, r1
mov r7, r12
adds r0, r7, r5
ldrb r0, [r0]
str r0, [r2]
ldr r7, [sp, 0x4C]
adds r1, r3, r7
lsls r0, 2
adds r0, r4, r0
ldr r7, =0x00000d24
adds r0, r7
ldrh r0, [r0]
lsls r0, 22
lsrs r0, 22
str r0, [r1]
ldr r0, [r2]
lsls r0, 2
adds r0, r4, r0
ldr r1, =0x00000d25
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 27
lsrs r0, 30
cmp r0, r6
bhi _0819329C
lsls r0, r1, 29
cmp r0, 0
bge _0819329C
ldr r2, [sp, 0x50]
adds r1, r3, r2
movs r0, 0x1
b _081932A2
.pool
_0819329C:
ldr r7, [sp, 0x50]
adds r1, r3, r7
movs r0, 0
_081932A2:
str r0, [r1]
adds r3, 0x4
adds r5, 0x1
cmp r5, 0x1
ble _08193240
ldr r1, [sp, 0x24]
ldr r0, =0x000003ff
cmp r1, r0
bne _081932D4
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
bl PlayerGenderToFrontTrainerPicId
lsls r0, 16
lsrs r0, 16
mov r2, r8
ldr r3, [sp, 0x78]
mov r1, r10
str r1, [sp]
b _081932F8
.pool
_081932D4:
ldr r0, =0x000003fe
cmp r1, r0
bne _081932E4
bl GetDomeBrainTrainerPicId
b _081932EC
.pool
_081932E4:
lsls r0, r1, 16
lsrs r0, 16
bl GetFrontierTrainerFrontSpriteId
_081932EC:
lsls r0, 24
lsrs r0, 24
mov r2, r8
ldr r3, [sp, 0x78]
mov r7, r10
str r7, [sp]
_081932F8:
ldr r1, =0x0000ffff
str r1, [sp, 0x4]
movs r1, 0x1
bl CreateTrainerPicSprite
ldr r1, =gUnknown_0203CD78
ldr r1, [r1]
ldr r2, [sp, 0x3C]
adds r1, r2
strb r0, [r1]
movs r0, 0x1E
ldr r3, [sp, 0x34]
ands r0, r3
cmp r0, 0
beq _08193334
ldr r2, =gSprites
ldr r0, =gUnknown_0203CD78
ldr r0, [r0]
ldr r7, [sp, 0x3C]
adds r0, r7
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_08193334:
ldr r0, [sp, 0x2C]
cmp r0, 0
beq _0819335A
ldr r2, =gSprites
ldr r0, =gUnknown_0203CD78
ldr r0, [r0]
ldr r1, [sp, 0x3C]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r2, [r0, 0x5]
movs r1, 0xF
ands r1, r2
movs r2, 0x30
orrs r1, r2
strb r1, [r0, 0x5]
_0819335A:
ldr r2, [sp, 0x4C]
ldr r1, [r2, 0x4]
ldr r0, =0x000003ff
cmp r1, r0
bne _08193388
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
bl PlayerGenderToFrontTrainerPicId
lsls r0, 16
lsrs r0, 16
b _081933B0
.pool
_08193388:
ldr r0, =0x000003fe
cmp r1, r0
bne _081933A4
bl GetDomeBrainTrainerPicId
lsls r0, 24
lsrs r0, 24
ldr r2, [sp, 0x7C]
ldr r3, [sp, 0x78]
ldr r1, [sp, 0x74]
str r1, [sp]
b _081933B8
.pool
_081933A4:
lsls r0, r1, 16
lsrs r0, 16
bl GetFrontierTrainerFrontSpriteId
lsls r0, 24
lsrs r0, 24
_081933B0:
ldr r2, [sp, 0x7C]
ldr r3, [sp, 0x78]
ldr r7, [sp, 0x74]
str r7, [sp]
_081933B8:
ldr r1, =0x0000ffff
str r1, [sp, 0x4]
movs r1, 0x1
bl CreateTrainerPicSprite
ldr r1, =gUnknown_0203CD78
ldr r1, [r1]
add r1, r9
strb r0, [r1]
movs r0, 0x1E
ldr r1, [sp, 0x34]
ands r0, r1
cmp r0, 0
beq _081933F0
ldr r2, =gSprites
ldr r0, =gUnknown_0203CD78
ldr r0, [r0]
add r0, r9
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_081933F0:
ldr r2, [sp, 0x50]
ldr r0, [r2, 0x4]
cmp r0, 0
beq _08193416
ldr r2, =gSprites
ldr r0, =gUnknown_0203CD78
ldr r0, [r0]
add r0, r9
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r2, [r0, 0x5]
movs r1, 0xF
ands r1, r2
movs r2, 0x30
orrs r1, r2
strb r1, [r0, 0x5]
_08193416:
movs r5, 0
ldr r3, [sp, 0x38]
lsls r3, 2
str r3, [sp, 0x70]
mov r8, r5
ldr r6, =gUnknown_0203CD78
ldr r7, =gSprites
ldr r4, [sp, 0x54]
mov r9, r5
movs r0, 0x1
mov r10, r0
_0819342C:
ldr r1, [sp, 0x24]
ldr r0, =0x000003ff
cmp r1, r0
bne _08193464
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r1, [sp, 0x1C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r0, [r2]
b _081934B0
.pool
_08193464:
ldr r0, =0x000003fe
cmp r1, r0
bne _08193490
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r1, [sp, 0x1C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r0, [r2]
b _081934B0
.pool
_08193490:
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r1, [sp, 0x1C]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r1, [r2]
ldr r0, =gFacilityTrainerMons
ldr r0, [r0]
lsls r1, 4
adds r1, r0
ldrh r0, [r1]
_081934B0:
ldr r1, =gUnknown_0860D3A8
adds r1, r5, r1
ldrb r2, [r1]
ldr r3, [sp, 0x40]
orrs r2, r3
ldr r1, =gUnknown_0860D3AB
adds r1, r5, r1
ldrb r3, [r1]
ldr r1, [sp, 0x44]
adds r3, r1
mov r1, r8
str r1, [sp]
str r1, [sp, 0x4]
mov r1, r10
str r1, [sp, 0x8]
ldr r1, =sub_8190938
bl CreateMonIcon
ldr r1, [r6]
adds r1, r4
strb r0, [r1]
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
ldrb r1, [r0, 0x5]
movs r3, 0xD
negs r3, r3
adds r2, r3, 0
ands r1, r2
strb r1, [r0, 0x5]
movs r0, 0x1E
ldr r1, [sp, 0x34]
ands r0, r1
cmp r0, 0
beq _08193516
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_08193516:
ldr r0, [sp, 0x2C]
cmp r0, 0
beq _08193548
ldr r0, [r6]
adds r0, r4
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r7
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
movs r2, 0x30
orrs r0, r2
strb r0, [r1, 0x5]
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r7
mov r2, r10
strh r2, [r0, 0x34]
_08193548:
adds r4, 0x1
movs r3, 0x2
add r9, r3
adds r5, 0x1
cmp r5, 0x2
bgt _08193556
b _0819342C
_08193556:
movs r5, 0
ldr r6, =gUnknown_0203CD78
ldr r7, =gSprites
mov r8, r7
ldr r4, [sp, 0x5C]
mov r9, r5
movs r7, 0
_08193564:
ldr r0, [sp, 0x4C]
ldr r1, [r0, 0x4]
ldr r0, =0x000003ff
cmp r1, r0
bne _081935AC
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r3, [sp, 0x48]
ldr r1, [r3, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r0, [r2]
b _081935FA
.pool
_081935AC:
ldr r0, =0x000003fe
cmp r1, r0
bne _081935D8
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r0, [sp, 0x48]
ldr r1, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r0, [r2]
b _081935FA
.pool
_081935D8:
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
ldr r0, [sp, 0x48]
ldr r1, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 1
add r0, r9
ldr r1, =0x00000d64
adds r2, r1
adds r2, r0
ldrh r1, [r2]
ldr r0, =gFacilityTrainerMons
ldr r0, [r0]
lsls r1, 4
adds r1, r0
ldrh r0, [r1]
_081935FA:
ldr r1, =gUnknown_0860D3AE
adds r1, r5, r1
ldrb r2, [r1]
ldr r3, [sp, 0x40]
orrs r2, r3
ldr r1, =gUnknown_0860D3B1
adds r1, r5, r1
ldrb r3, [r1]
ldr r1, [sp, 0x44]
adds r3, r1
str r7, [sp]
str r7, [sp, 0x4]
movs r1, 0x1
str r1, [sp, 0x8]
ldr r1, =sub_8190938
bl CreateMonIcon
ldr r1, [r6]
adds r1, r4
strb r0, [r1]
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
ldrb r1, [r0, 0x5]
movs r3, 0xD
negs r3, r3
adds r2, r3, 0
ands r1, r2
strb r1, [r0, 0x5]
movs r0, 0x1E
ldr r1, [sp, 0x34]
ands r0, r1
cmp r0, 0
beq _0819365E
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
_0819365E:
ldr r2, [sp, 0x50]
ldr r0, [r2, 0x4]
cmp r0, 0
beq _08193692
ldr r0, [r6]
adds r0, r4
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
add r1, r8
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
movs r2, 0x30
orrs r0, r2
strb r0, [r1, 0x5]
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
add r0, r8
movs r1, 0x1
strh r1, [r0, 0x34]
_08193692:
adds r4, 0x1
movs r3, 0x2
add r9, r3
adds r5, 0x1
cmp r5, 0x2
bgt _081936A0
b _08193564
_081936A0:
add r0, sp, 0xC
movs r5, 0
strb r5, [r0, 0x6]
adds r1, r0, 0
movs r0, 0x2
strb r0, [r1, 0x7]
adds r0, r1, 0
ldrb r0, [r0, 0x6]
strb r0, [r1, 0x8]
adds r0, r1, 0
ldrb r0, [r0, 0x7]
strb r0, [r1, 0x9]
adds r0, r1, 0
strb r5, [r0, 0xA]
strb r5, [r0, 0xB]
adds r3, r0, 0
ldrb r2, [r3, 0xC]
movs r1, 0x10
negs r1, r1
adds r0, r1, 0
ands r0, r2
strb r0, [r3, 0xC]
adds r2, r3, 0
movs r0, 0xE0
strb r0, [r2, 0xC]
ldrb r0, [r2, 0xD]
ands r1, r0
strb r1, [r2, 0xD]
adds r1, r2, 0
movs r0, 0xD0
strb r0, [r1, 0xD]
ldr r4, =gStringVar4
ldr r0, =gBattleDomeWinStringsPointers
ldr r7, [sp, 0x70]
adds r0, r7, r0
ldr r1, [r0]
adds r0, r4, 0
bl StringExpandPlaceholders
str r4, [sp, 0xC]
add r0, sp, 0xC
add r1, sp, 0x6C
ldrb r1, [r1]
strb r1, [r0, 0x4]
adds r1, r0, 0
movs r0, 0x1
strb r0, [r1, 0x5]
ldr r4, [sp, 0x6C]
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
add r0, sp, 0xC
strb r5, [r0, 0x8]
adds r1, r0, 0
strb r5, [r0, 0x7]
strb r5, [r1, 0x9]
movs r1, 0
movs r2, 0
bl AddTextPrinter
ldr r1, [sp, 0x24]
ldr r0, =0x000003ff
cmp r1, r0
bne _0819375C
ldr r0, =gStringVar1
ldr r1, =gSaveBlock2Ptr
ldr r1, [r1]
bl StringCopy
b _0819377E
.pool
_0819375C:
ldr r0, =0x000003fe
cmp r1, r0
bne _08193774
ldr r0, =gStringVar1
bl CopyDomeBrainTrainerName
b _0819377E
.pool
_08193774:
ldr r0, =gStringVar1
lsls r1, 16
lsrs r1, 16
bl CopyDomeOpponentName
_0819377E:
add r0, sp, 0xC
movs r4, 0x2
strb r4, [r0, 0x5]
strb r4, [r0, 0xA]
ldr r5, =gStringVar1
str r5, [sp, 0xC]
add r2, sp, 0x64
ldrb r2, [r2]
strb r2, [r0, 0x4]
ldrb r0, [r0, 0x5]
ldr r1, [sp, 0xC]
add r2, sp, 0xC
ldrb r3, [r2, 0xA]
movs r2, 0x40
bl GetStringCenterAlignXOffsetWithLetterSpacing
add r1, sp, 0xC
strb r0, [r1, 0x8]
adds r0, r1, 0
strb r4, [r0, 0x7]
strb r4, [r1, 0x9]
ldr r4, [sp, 0x64]
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
add r0, sp, 0xC
movs r1, 0
movs r2, 0
bl AddTextPrinter
ldr r3, [sp, 0x4C]
ldr r1, [r3, 0x4]
ldr r0, =0x000003ff
cmp r1, r0
bne _081937E4
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
adds r0, r5, 0
bl StringCopy
b _08193802
.pool
_081937E4:
ldr r0, =0x000003fe
cmp r1, r0
bne _081937F8
adds r0, r5, 0
bl CopyDomeBrainTrainerName
b _08193802
.pool
_081937F8:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
bl CopyDomeOpponentName
_08193802:
ldr r0, =gStringVar1
str r0, [sp, 0xC]
add r0, sp, 0xC
movs r6, 0
add r7, sp, 0x68
ldrb r7, [r7]
strb r7, [r0, 0x4]
ldrb r0, [r0, 0x5]
ldr r1, [sp, 0xC]
add r2, sp, 0xC
ldrb r3, [r2, 0xA]
movs r2, 0x40
bl GetStringCenterAlignXOffsetWithLetterSpacing
add r1, sp, 0xC
strb r0, [r1, 0x8]
adds r0, r1, 0
movs r5, 0x2
strb r5, [r0, 0x7]
strb r5, [r1, 0x9]
ldr r4, [sp, 0x68]
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
add r0, sp, 0xC
movs r1, 0
movs r2, 0
bl AddTextPrinter
add r0, sp, 0xC
strb r6, [r0, 0xA]
ldr r0, =gBattleDomeMatchNumberPointers
ldr r1, [sp, 0x58]
adds r0, r1, r0
ldr r0, [r0]
str r0, [sp, 0xC]
add r0, sp, 0xC
add r2, sp, 0x60
ldrb r2, [r2]
strb r2, [r0, 0x4]
ldrb r0, [r0, 0x5]
ldr r1, [sp, 0xC]
add r2, sp, 0xC
ldrb r3, [r2, 0xA]
movs r2, 0xA0
bl GetStringCenterAlignXOffsetWithLetterSpacing
add r1, sp, 0xC
strb r0, [r1, 0x8]
adds r0, r1, 0
strb r5, [r0, 0x7]
strb r5, [r1, 0x9]
ldr r4, [sp, 0x60]
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
add r0, sp, 0xC
movs r1, 0
movs r2, 0
bl AddTextPrinter
add sp, 0x80
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_819314C
thumb_func_start sub_81938A4
sub_81938A4: @ 81938A4
push {lr}

View File

@ -20049,7 +20049,7 @@ sub_81A4E04: @ 81A4E04
bl sub_81953A0
lsls r0, 16
lsrs r0, 16
bl sub_818FC78
bl GetTrainerMonCountInBits
adds r4, r0, 0
b _081A4E46
.pool

View File

@ -105,9 +105,15 @@ extern const u8 gUnknown_0860C988[31][16];
extern const u8 gUnknown_0860D3F1[][2];
extern const u8 gUnknown_0860D3C4[][3];
extern const u8 gUnknown_0860D3B4[];
extern const u8 gUnknown_0860D3A8[];
extern const u8 gUnknown_0860D3AB[];
extern const u8 gUnknown_0860D3AE[];
extern const u8 gUnknown_0860D3B1[];
extern const u8 *const gBattleDomePotentialPointers[];
extern const u8 *const gBattleDomeOpponentStylePointers[];
extern const u8 *const gBattleDomeOpponentStatsPointers[];
extern const u8 *const gBattleDomeWinStringsPointers[];
extern const u8 *const gBattleDomeMatchNumberPointers[];
// gfx
extern const u8 gUnknown_08D83D50[];
@ -127,7 +133,7 @@ void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray);
void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 nature, s32 *stats);
void CreateDomeTrainerMons(u16 tournamentTrainerId);
u16 TrainerIdToTournamentId(u16 trainerId);
s32 sub_818FC78(u16 tournamentTrainerId);
s32 GetTrainerMonCountInBits(u16 tournamentTrainerId);
s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1);
s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1);
s32 sub_818FFC0(s32 move, s32 species, s32 arg2);
@ -138,7 +144,7 @@ void sub_8190CD4(u8 taskId);
void sub_8194220(u8 taskId);
void sub_8194B54(void);
void sub_8194B70(void);
void sub_819314C(u8, u8);
static void DrawMatchInfoOnCard(u8 flags, u8 matchNo);
static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId);
u8 sub_819221C(u8 taskId);
s32 sub_8192F08(u8, u8*);
@ -979,7 +985,7 @@ void CreateDomeTrainerMons(u16 tournamentTrainerId)
s32 i, bits;
ZeroEnemyPartyMons();
bits = sub_818FC78(tournamentTrainerId);
bits = GetTrainerMonCountInBits(tournamentTrainerId);
otId = Random32();
if (Random() % 10 > 5)
{
@ -1007,7 +1013,7 @@ void CreateDomeTrainerMons(u16 tournamentTrainerId)
}
}
s32 sub_818FC78(u16 tournamentTrainerId)
s32 GetTrainerMonCountInBits(u16 tournamentTrainerId)
{
s32 bits;
if (Random() & 1)
@ -1695,7 +1701,7 @@ void sub_8190400(u8 taskId)
gTasks[i].data[4] = r7;
if (r9 == 2)
{
sub_819314C(0, r5);
DrawMatchInfoOnCard(0, r5);
gUnknown_0203CD78->unk_10 = 1;
}
else
@ -1730,7 +1736,11 @@ void sub_8190400(u8 taskId)
}
}
void sub_8190790(struct Sprite *sprite)
// Note: Card scrolling up means the current card goes down and another one appears from top.
// The same is true for scrolling left.
// That means that the sprite needs to move with the moving card in the opposite scrolling direction.
static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite)
{
sprite->pos1.y += 4;
if (sprite->data[0] != 0)
@ -1750,7 +1760,7 @@ void sub_8190790(struct Sprite *sprite)
}
}
void sub_81907F8(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite)
{
sprite->pos1.y -= 4;
if (sprite->data[0] != 0)
@ -1770,7 +1780,7 @@ void sub_81907F8(struct Sprite *sprite)
}
}
void sub_8190860(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite)
{
sprite->pos1.x += 4;
if (sprite->data[0] != 0)
@ -1790,7 +1800,7 @@ void sub_8190860(struct Sprite *sprite)
}
}
void sub_81908CC(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollRight(struct Sprite *sprite)
{
sprite->pos1.x -= 4;
if (sprite->data[0] != 0)
@ -1810,15 +1820,17 @@ void sub_81908CC(struct Sprite *sprite)
}
}
void sub_8190938(struct Sprite *sprite)
#define sMonIconStill data[3]
static void SpriteCb_MonIcon(struct Sprite *sprite)
{
if (!sprite->data[3])
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
}
void sub_8190950(struct Sprite *sprite)
static void SpriteCb_MonIconCardScrollUp(struct Sprite *sprite)
{
if (!sprite->data[3])
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
sprite->pos1.y += 4;
if (sprite->data[0] != 0)
@ -1826,7 +1838,7 @@ void sub_8190950(struct Sprite *sprite)
if (sprite->pos1.y >= -16)
sprite->invisible = 0;
if (++sprite->data[1] == 40)
sprite->callback = sub_8190938;
sprite->callback = SpriteCb_MonIcon;
}
else
{
@ -1838,9 +1850,9 @@ void sub_8190950(struct Sprite *sprite)
}
}
void sub_81909CC(struct Sprite *sprite)
static void SpriteCb_MonIconCardScrollDown(struct Sprite *sprite)
{
if (!sprite->data[3])
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
sprite->pos1.y -= 4;
if (sprite->data[0] != 0)
@ -1848,7 +1860,7 @@ void sub_81909CC(struct Sprite *sprite)
if (sprite->pos1.y <= 176)
sprite->invisible = 0;
if (++sprite->data[1] == 40)
sprite->callback = sub_8190938;
sprite->callback = SpriteCb_MonIcon;
}
else
{
@ -1860,9 +1872,9 @@ void sub_81909CC(struct Sprite *sprite)
}
}
void sub_8190A48(struct Sprite *sprite)
static void SpriteCb_MonIconCardScrollLeft(struct Sprite *sprite)
{
if (!sprite->data[3])
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
sprite->pos1.x += 4;
if (sprite->data[0] != 0)
@ -1870,7 +1882,7 @@ void sub_8190A48(struct Sprite *sprite)
if (sprite->pos1.x >= -16)
sprite->invisible = 0;
if (++sprite->data[1] == 64)
sprite->callback = sub_8190938;
sprite->callback = SpriteCb_MonIcon;
}
else
{
@ -1882,9 +1894,9 @@ void sub_8190A48(struct Sprite *sprite)
}
}
void sub_8190AC4(struct Sprite *sprite)
static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite)
{
if (!sprite->data[3])
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
sprite->pos1.x -= 4;
if (sprite->data[0] != 0)
@ -1892,7 +1904,7 @@ void sub_8190AC4(struct Sprite *sprite)
if (sprite->pos1.x <= 256)
sprite->invisible = 0;
if (++sprite->data[1] == 64)
sprite->callback = sub_8190938;
sprite->callback = SpriteCb_MonIcon;
}
else
{
@ -2006,10 +2018,11 @@ void sub_8190C6C(struct Sprite *sprite)
void sub_8190CD4(u8 taskId)
{
s32 i;
s32 var;
s32 windowId = 0;
s32 r9 = gTasks[taskId].data[3];
s32 taskId2 = gTasks[taskId].data[4];
s32 trainerTournamentId, arg2;
s32 trainerTournamentId = 0;
s32 matchNo = 0;
switch (gTasks[taskId].data[0])
{
@ -2035,11 +2048,11 @@ void sub_8190CD4(u8 taskId)
case 1 ... 8:
gTasks[taskId].data[5] = i;
if (gTasks[taskId].data[2] != 0)
var = 9;
windowId = 9;
else
var = 0;
windowId = 0;
for (i = var; i < var + 9; i++)
for (i = windowId; i < windowId + 9; i++)
{
CopyWindowToVram(i, 2);
FillWindowPixelBuffer(i, 0);
@ -2093,8 +2106,8 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->unk_10 == 0)
{
arg2 = gTasks[taskId2].data[1] - 16;
sub_8192F08(arg2, gUnknown_0203CD78->unk_11);
matchNo = gTasks[taskId2].data[1] - 16;
sub_8192F08(matchNo, gUnknown_0203CD78->unk_11);
gBattle_BG2_X = 0;
gBattle_BG2_Y = 320;
trainerTournamentId = gUnknown_0203CD78->unk_11[0];
@ -2102,8 +2115,8 @@ void sub_8190CD4(u8 taskId)
}
else if (gUnknown_0203CD78->unk_10 == 2)
{
arg2 = gTasks[taskId2].data[1] - 16;
sub_8192F08(arg2, gUnknown_0203CD78->unk_11);
matchNo = gTasks[taskId2].data[1] - 16;
sub_8192F08(matchNo, gUnknown_0203CD78->unk_11);
gBattle_BG2_X = 0;
gBattle_BG2_Y = 320;
trainerTournamentId = gUnknown_0203CD78->unk_11[1];
@ -2113,8 +2126,8 @@ void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 256;
gBattle_BG2_Y = 160;
arg2 = gTasks[taskId2].data[1] - 16;
sub_819314C(gTasks[taskId].data[2] | 0x10, arg2);
matchNo = gTasks[taskId2].data[1] - 16;
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 0x10, matchNo);
}
}
@ -2124,7 +2137,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190790;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2135,7 +2148,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190950;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollUp;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2148,7 +2161,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190790;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2159,7 +2172,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190950;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollUp;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2209,8 +2222,8 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->unk_10 == 0)
{
arg2 = gTasks[taskId2].data[1] - 16;
sub_8192F08(arg2, gUnknown_0203CD78->unk_11);
matchNo = gTasks[taskId2].data[1] - 16;
sub_8192F08(matchNo, gUnknown_0203CD78->unk_11);
gBattle_BG2_X = 0;
gBattle_BG2_Y = 160;
trainerTournamentId = gUnknown_0203CD78->unk_11[0];
@ -2218,8 +2231,8 @@ void sub_8190CD4(u8 taskId)
}
else if (gUnknown_0203CD78->unk_10 == 2)
{
arg2 = gTasks[taskId2].data[1] - 16;
sub_8192F08(arg2, gUnknown_0203CD78->unk_11);
matchNo = gTasks[taskId2].data[1] - 16;
sub_8192F08(matchNo, gUnknown_0203CD78->unk_11);
gBattle_BG2_X = 0;
gBattle_BG2_Y = 160;
trainerTournamentId = gUnknown_0203CD78->unk_11[1];
@ -2229,8 +2242,8 @@ void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 256;
gBattle_BG2_Y = 0;
arg2 = gTasks[taskId2].data[1] - 16;
sub_819314C(gTasks[taskId].data[2] | 4, arg2);
matchNo = gTasks[taskId2].data[1] - 16;
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 4, matchNo);
}
}
@ -2240,7 +2253,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81907F8;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2251,7 +2264,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81909CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollDown;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2264,7 +2277,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81907F8;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2275,7 +2288,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81909CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollDown;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2313,8 +2326,8 @@ void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 256;
gBattle_BG2_Y = 0;
trainerTournamentId = gUnknown_0860D15C[(gTasks[taskId2].data[1] * 4) + (gUnknown_0203CD78->unk_10 - 1)];
sub_819314C(gTasks[taskId].data[2] | 8, trainerTournamentId);
matchNo = gUnknown_0860D15C[(gTasks[taskId2].data[1] * 4) + (gUnknown_0203CD78->unk_10 - 1)];
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo);
}
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++)
@ -2323,7 +2336,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190860;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2334,7 +2347,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190A48;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2347,7 +2360,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190860;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2358,7 +2371,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190A48;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2396,8 +2409,8 @@ void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 0;
gBattle_BG2_Y = 160;
arg2 = gTasks[taskId2].data[1] - 16;
sub_819314C(gTasks[taskId].data[2] | 8, arg2);
matchNo = gTasks[taskId2].data[1] - 16;
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo);
}
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++)
@ -2406,7 +2419,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190860;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2417,7 +2430,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190A48;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2430,7 +2443,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190860;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2441,7 +2454,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190A48;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollLeft;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2478,8 +2491,8 @@ void sub_8190CD4(u8 taskId)
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
}
trainerTournamentId = gUnknown_0860D15C[(gUnknown_0203CD78->unk_10 - 1) + (gTasks[taskId2].data[1] * 4)];
sub_819314C(gTasks[taskId].data[2] | 2, trainerTournamentId);
matchNo = gUnknown_0860D15C[(gUnknown_0203CD78->unk_10 - 1) + (gTasks[taskId2].data[1] * 4)];
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo);
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++)
{
@ -2487,7 +2500,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81908CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2498,7 +2511,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190AC4;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2511,7 +2524,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81908CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2522,7 +2535,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190AC4;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2560,8 +2573,8 @@ void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 0;
gBattle_BG2_Y = 160;
arg2 = gTasks[taskId2].data[1] - 16;
sub_819314C(gTasks[taskId].data[2] | 2, arg2);
matchNo = gTasks[taskId2].data[1] - 16;
DrawMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo);
}
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++)
@ -2570,7 +2583,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81908CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2581,7 +2594,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190AC4;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1;
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2594,7 +2607,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_81908CC;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2605,7 +2618,7 @@ void sub_8190CD4(u8 taskId)
{
if (gUnknown_0203CD78->arr[i] != 0xFF)
{
gSprites[gUnknown_0203CD78->arr[i]].callback = sub_8190AC4;
gSprites[gUnknown_0203CD78->arr[i]].callback = SpriteCb_MonIconCardScrollRight;
gSprites[gUnknown_0203CD78->arr[i]].data[0] = gTasks[taskId].data[2];
gSprites[gUnknown_0203CD78->arr[i]].data[1] = 0;
gSprites[gUnknown_0203CD78->arr[i]].data[2] = i;
@ -2866,7 +2879,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
if (trainerId == TRAINER_PLAYER)
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i],
sub_8190938,
SpriteCb_MonIcon,
x | gUnknown_0860D340[i],
y + gUnknown_0860D343[i],
0, 0, TRUE);
@ -2875,7 +2888,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
else if (trainerId == TRAINER_FRONTIER_BRAIN)
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i],
sub_8190938,
SpriteCb_MonIcon,
x | gUnknown_0860D340[i],
y + gUnknown_0860D343[i],
0, 0, TRUE);
@ -2884,7 +2897,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
else
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species,
sub_8190938,
SpriteCb_MonIcon,
x | gUnknown_0860D340[i],
y + gUnknown_0860D343[i],
0, 0, TRUE);
@ -3250,3 +3263,212 @@ s32 sub_8192F08(u8 arg0, u8 *arg1)
else
return retVal + 1;
}
static void DrawMatchInfoOnCard(u8 flags, u8 matchNo)
{
struct TextSubPrinter textPrinter;
s32 tournamentIds[2];
s32 trainerIds[2];
bool32 lost[2];
s32 i;
s32 winStringId = 0;
s32 arrId = 0;
s32 windowId = 0;
s32 x = 0, y = 0;
u8 palSlot = 0;
if (flags & 1)
arrId = 8, windowId = 9, palSlot = 2;
if (flags & 2)
x = 256;
if (flags & 4)
y = 160;
if (flags & 8)
x = -256;
if (flags & 0x10)
y = -160;
// Copy trainers information to handy arrays.
winStringId = sub_8192F08(matchNo, gUnknown_0203CD78->unk_11);
for (i = 0; i < 2; i++)
{
tournamentIds[i] = gUnknown_0203CD78->unk_11[i];
trainerIds[i] = gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].trainerId;
if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].unk2 <= gUnknown_0860D3C4[matchNo][2]
&& gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].unk1)
lost[i] = TRUE;
else
lost[i] = FALSE;
}
// Draw first trainer sprite.
if (trainerIds[0] == TRAINER_PLAYER)
gUnknown_0203CD78->arr[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF);
else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN)
gUnknown_0203CD78->arr[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF);
else
gUnknown_0203CD78->arr[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[0]), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF);
if (flags & 0x1E)
gSprites[gUnknown_0203CD78->arr[arrId]].invisible = 1;
if (lost[0])
gSprites[gUnknown_0203CD78->arr[arrId]].oam.paletteNum = 3;
// Draw second trainer sprite.
if (trainerIds[1] == TRAINER_PLAYER)
gUnknown_0203CD78->arr[1 + arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF);
else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN)
gUnknown_0203CD78->arr[1 + arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF);
else
gUnknown_0203CD78->arr[1 + arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[1]), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF);
if (flags & 0x1E)
gSprites[gUnknown_0203CD78->arr[1 + arrId]].invisible = 1;
if (lost[1])
gSprites[gUnknown_0203CD78->arr[1 + arrId]].oam.paletteNum = 3;
// Draw first trainer's pokemon icons.
for (i = 0; i < 3; i++)
{
if (trainerIds[0] == TRAINER_PLAYER)
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i],
SpriteCb_MonIcon,
x | gUnknown_0860D3A8[i],
y + gUnknown_0860D3AB[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].oam.priority = 0;
}
else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN)
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i],
SpriteCb_MonIcon,
x | gUnknown_0860D3A8[i],
y + gUnknown_0860D3AB[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].oam.priority = 0;
}
else
{
gUnknown_0203CD78->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i]].species,
SpriteCb_MonIcon,
x | gUnknown_0860D3A8[i],
y + gUnknown_0860D3AB[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].oam.priority = 0;
}
if (flags & 0x1E)
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].invisible = 1;
if (lost[0])
{
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].oam.paletteNum = 3;
gSprites[gUnknown_0203CD78->arr[2 + i + arrId]].sMonIconStill = TRUE;
}
}
// Draw second trainer's pokemon icons.
for (i = 0; i < 3; i++)
{
if (trainerIds[1] == TRAINER_PLAYER)
{
gUnknown_0203CD78->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i],
SpriteCb_MonIcon,
x | gUnknown_0860D3AE[i],
y + gUnknown_0860D3B1[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].oam.priority = 0;
}
else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN)
{
gUnknown_0203CD78->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i],
SpriteCb_MonIcon,
x | gUnknown_0860D3AE[i],
y + gUnknown_0860D3B1[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].oam.priority = 0;
}
else
{
gUnknown_0203CD78->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i]].species,
SpriteCb_MonIcon,
x | gUnknown_0860D3AE[i],
y + gUnknown_0860D3B1[i],
0, 0, TRUE);
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].oam.priority = 0;
}
if (flags & 0x1E)
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].invisible = 1;
if (lost[1])
{
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].oam.paletteNum = 3;
gSprites[gUnknown_0203CD78->arr[5 + i + arrId]].sMonIconStill = TRUE;
}
}
// Print the win string (or 'Let the battle begin!' one).
textPrinter.x = 0;
textPrinter.y = 2;
textPrinter.currentX = textPrinter.x;
textPrinter.currentY = textPrinter.y;
textPrinter.letterSpacing = 0;
textPrinter.lineSpacing = 0;
textPrinter.fontColor_l = 0;
textPrinter.fgColor = 14;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
StringExpandPlaceholders(gStringVar4, gBattleDomeWinStringsPointers[winStringId]);
textPrinter.current_text_offset = gStringVar4;
textPrinter.windowId = windowId + 8;
textPrinter.fontId = 1;
PutWindowTilemap(windowId + 8);
CopyWindowToVram(windowId + 8, 3);
textPrinter.currentX = 0;
textPrinter.currentY = textPrinter.y = 0;
AddTextPrinter(&textPrinter, 0, NULL);
// Print first trainer's name.
if (trainerIds[0] == TRAINER_PLAYER)
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN)
CopyDomeBrainTrainerName(gStringVar1);
else
CopyDomeOpponentName(gStringVar1, trainerIds[0]);
textPrinter.fontId = 2;
textPrinter.letterSpacing = 2;
textPrinter.current_text_offset = gStringVar1;
textPrinter.windowId = windowId + 6;
textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 6);
CopyWindowToVram(windowId + 6, 3);
AddTextPrinter(&textPrinter, 0, NULL);
// Print second trainer's name.
if (trainerIds[1] == TRAINER_PLAYER)
StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN)
CopyDomeBrainTrainerName(gStringVar1);
else
CopyDomeOpponentName(gStringVar1, trainerIds[1]);
textPrinter.current_text_offset = gStringVar1;
textPrinter.windowId = windowId + 7;
textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 7);
CopyWindowToVram(windowId + 7, 3);
AddTextPrinter(&textPrinter, 0, NULL);
// Print match number.
textPrinter.letterSpacing = 0;
textPrinter.current_text_offset = gBattleDomeMatchNumberPointers[matchNo];
textPrinter.windowId = windowId + 5;
textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0xA0, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 5);
CopyWindowToVram(windowId + 5, 3);
AddTextPrinter(&textPrinter, 0, NULL);
}