Merge contests with master

This commit is contained in:
DizzyEggg 2018-08-11 19:04:28 +02:00
commit 537ebd36ac
26 changed files with 3407 additions and 7856 deletions

File diff suppressed because it is too large Load Diff

View File

@ -39,7 +39,7 @@ _081562DE:
strb r1, [r0]
ldr r0, [r2]
ldr r2, [r0, 0xC]
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
adds r0, r2, 0
adds r0, 0x41
ldrb r0, [r0]
@ -144,7 +144,7 @@ sub_81563B0: @ 81563B0
beq _081564A0
adds r7, r5, 0
ldr r6, =gAIScriptPtr
ldr r0, =gUnknown_02039E00 + 30
ldr r0, =gContestMons + 30
mov r8, r0
_081563CC:
ldr r0, [r7]
@ -1167,7 +1167,7 @@ sub_8156B88: @ 8156B88
ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r1, =gUnknown_02039F00
ldr r1, =gContestMonConditions
adds r0, r2, 0
adds r0, 0x41
ldrb r0, [r0]
@ -1436,7 +1436,7 @@ _08156D9C:
thumb_func_start sub_8156DA0
sub_8156DA0: @ 8156DA0
push {r4,lr}
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0xC]
@ -1615,7 +1615,7 @@ _08156EFC:
thumb_func_start sub_8156F04
sub_8156F04: @ 8156F04
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
@ -1714,7 +1714,7 @@ _08156FC8:
thumb_func_start sub_8156FCC
sub_8156FCC: @ 8156FCC
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
@ -1818,7 +1818,7 @@ _0815709C:
thumb_func_start sub_81570A0
sub_81570A0: @ 81570A0
push {r4-r7,lr}
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
@ -1923,7 +1923,7 @@ _0815716C:
thumb_func_start sub_8157174
sub_8157174: @ 8157174
push {r4-r7,lr}
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
@ -2028,7 +2028,7 @@ _08157240:
thumb_func_start sub_8157248
sub_8157248: @ 8157248
push {r4,lr}
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
@ -2208,7 +2208,7 @@ _081573B0:
thumb_func_start sub_81573B4
sub_81573B4: @ 81573B4
push {r4,lr}
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
@ -2388,7 +2388,7 @@ _0815751C:
thumb_func_start sub_8157520
sub_8157520: @ 8157520
push {r4,r5,lr}
ldr r3, =gUnknown_02039E00
ldr r3, =gContestMons
ldr r5, =gContestResources
ldr r4, [r5]
ldr r1, [r4, 0xC]
@ -2575,7 +2575,7 @@ _08157684:
sub_8157688: @ 8157688
push {r4-r6,lr}
movs r3, 0
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
@ -2711,7 +2711,7 @@ _08157788:
sub_8157790: @ 8157790
push {r4-r6,lr}
movs r3, 0
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
@ -2846,7 +2846,7 @@ _08157890:
sub_8157898: @ 8157898
push {r4-r6,lr}
movs r5, 0
ldr r3, =gUnknown_02039E00
ldr r3, =gContestMons
ldr r6, =gContestResources
ldr r4, [r6]
ldr r1, [r4, 0xC]
@ -3729,7 +3729,7 @@ sub_8157F5C: @ 8157F5C
ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1, 0xC]
ldr r2, =gUnknown_02039F00
ldr r2, =gContestMonConditions
lsrs r0, 23
adds r0, r2
adds r1, r3, 0
@ -5030,7 +5030,7 @@ sub_8158948: @ 8158948
push {r4-r6,lr}
movs r5, 0
movs r4, 0
ldr r6, =gUnknown_02039E00 + 30
ldr r6, =gContestMons + 30
_08158950:
lsls r1, r4, 1
ldr r0, =gContestResources
@ -5156,7 +5156,7 @@ sub_8158A34: @ 8158A34
lsls r0, 8
orrs r5, r0
movs r4, 0
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
mov r12, r0
ldr r2, =gContestResources
ldr r0, [r2]

View File

@ -276,10 +276,10 @@ sub_80F5A74: @ 80F5A74
lsrs r0, 24
adds r5, r0, 0
lsls r1, r5, 6
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
adds r7, r1, r0
ldr r6, =gDisplayedStringBattle
ldr r0, =gUnknown_02039F25
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r5, r0
bne _080F5A96
@ -398,7 +398,7 @@ sub_80F5B00: @ 80F5B00
movs r1, 0x14
bl CreateTask
bl sub_80F7880
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -503,7 +503,7 @@ sub_80F5CE4: @ 80F5CE4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r3, =gUnknown_02039F2A
ldr r3, =gIsLinkContest
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
@ -535,8 +535,8 @@ _080F5D20:
b _080F5E2E
_080F5D2A:
bl sub_80DBED4
ldr r1, =gUnknown_02039F20
ldr r0, =gUnknown_02039F25
ldr r1, =gContestFinalStandings
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@ -648,7 +648,7 @@ _080F5E2E:
lsls r0, 3
adds r4, r0, r1
strh r2, [r4, 0x8]
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r5, 0x1
adds r0, r5, 0
@ -663,8 +663,8 @@ _080F5E2E:
_080F5E78:
movs r0, 0x24
bl IncrementGameStat
ldr r1, =gUnknown_02039F20
ldr r0, =gUnknown_02039F25
ldr r1, =gContestFinalStandings
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@ -1160,7 +1160,7 @@ _080F6298:
adds r1, r0
lsls r1, 3
adds r1, r7
ldr r0, =gUnknown_02039F20
ldr r0, =gContestFinalStandings
adds r0, r4, r0
ldrb r0, [r0]
strh r0, [r1, 0x8]
@ -1201,7 +1201,7 @@ _080F62F2:
adds r0, 0x1
strh r0, [r4, 0x8]
movs r4, 0
ldr r1, =gUnknown_02039F20
ldr r1, =gContestFinalStandings
ldrb r0, [r1]
cmp r0, 0
beq _080F631C
@ -1236,10 +1236,10 @@ _080F6334:
movs r0, 0
strh r0, [r2, 0xA]
movs r4, 0
ldr r1, =gUnknown_02039F20
ldr r1, =gContestFinalStandings
ldrb r0, [r1]
ldr r7, =gStringVar1
ldr r2, =gUnknown_02039E00 + 13
ldr r2, =gContestMons + 13
mov r8, r2
cmp r0, 0
beq _080F636E
@ -1355,12 +1355,12 @@ _080F6454:
adds r0, r3, 0
strh r0, [r1]
movs r2, 0
ldr r1, =gUnknown_02039F20
ldr r1, =gContestFinalStandings
ldrb r0, [r1]
lsls r4, r7, 2
mov r10, r4
ldr r3, =gUnknown_02039E00
ldr r4, =gUnknown_02039F25
ldr r3, =gContestMons
ldr r4, =gContestPlayerMonIndex
mov r9, r4
ldr r4, =gMonFrontPicTable
mov r12, r4
@ -1623,14 +1623,14 @@ sub_80F66B4: @ 80F66B4
ands r0, r1
cmp r0, 0
beq _080F6702
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
adds r0, r2, 0
ands r0, r1
lsls r6, r7, 2
cmp r0, 0
bne _080F66F2
ldr r5, =gUnknown_02039E00
ldr r5, =gContestMons
movs r4, 0x3
_080F66DA:
ldrh r0, [r5]
@ -1664,7 +1664,7 @@ sub_80F671C: @ 80F671C
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@ -1710,7 +1710,7 @@ sub_80F677C: @ 80F677C
ldrb r0, [r0]
cmp r0, 0
bne _080F67AC
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -1739,14 +1739,14 @@ task_repel: @ 80F67C4
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080F67E6
ldr r1, =gUnknown_02039F20
ldr r0, =gUnknown_02039F25
ldr r1, =gContestFinalStandings
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@ -1980,7 +1980,7 @@ sub_80F69B8: @ 80F69B8
lsrs r5, r2, 24
lsls r3, 24
lsrs r6, r3, 24
ldr r0, =gUnknown_02039F25
ldr r0, =gContestPlayerMonIndex
movs r2, 0
ldrb r0, [r0]
cmp r4, r0
@ -2059,7 +2059,7 @@ sub_80F6A64: @ 80F6A64
lsls r1, 24
lsrs r6, r1, 24
movs r5, 0
ldr r4, =gUnknown_02039E00
ldr r4, =gContestMons
_080F6A74:
ldrh r0, [r4]
lsls r1, r5, 24
@ -2088,7 +2088,7 @@ sub_80F6A9C: @ 80F6A9C
movs r5, 0xA0
lsls r5, 16
_080F6AA6:
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
lsls r0, r4, 6
adds r0, r1
ldrh r0, [r0]
@ -2119,7 +2119,7 @@ _080F6AA6:
thumb_func_start sub_80F6AE8
sub_80F6AE8: @ 80F6AE8
push {r4,lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -2955,7 +2955,7 @@ sub_80F71C8: @ 80F71C8
sub sp, 0xC
movs r5, 0x5
movs r4, 0x1
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
adds r0, r4, 0
ands r0, r1
@ -3104,7 +3104,7 @@ sub_80F7310: @ 80F7310
lsls r0, 24
lsls r1, 24
lsrs r5, r1, 24
ldr r1, =gUnknown_02039F00
ldr r1, =gContestMonConditions
lsrs r0, 23
adds r0, r1
movs r1, 0
@ -3322,7 +3322,7 @@ sub_80F74BC: @ 80F74BC
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
ldr r1, =gUnknown_02039F20
ldr r1, =gContestFinalStandings
ldrb r0, [r1]
ldr r6, =gUnknown_0203A034
cmp r0, 0
@ -3729,7 +3729,7 @@ sub_80F77E0: @ 80F77E0
adds r1, r2
strh r4, [r1, 0x8]
strh r5, [r1, 0xA]
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
lsls r4, 6
adds r4, r0
ldrh r0, [r4]
@ -3765,7 +3765,7 @@ sub_80F7824: @ 80F7824
strh r0, [r4, 0x1C]
ldrh r0, [r4, 0xC]
ldrb r2, [r4, 0x1E]
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
lsls r3, r5, 6
adds r1, 0x38
adds r3, r1
@ -3847,7 +3847,7 @@ _080F78E4:
mov r8, r5
mov r10, r5
_080F78EA:
ldr r0, =gUnknown_02039F00
ldr r0, =gContestMonConditions
mov r1, r8
lsls r7, r1, 1
adds r0, r7, r0
@ -3987,7 +3987,7 @@ _080F79CC:
negs r0, r0
_080F7A02:
strb r0, [r1, 0x12]
ldr r0, =gUnknown_02039F20
ldr r0, =gContestFinalStandings
add r0, r8
ldrb r0, [r0]
cmp r0, 0
@ -4721,8 +4721,8 @@ _080F7FEE:
sub_80F7FFC: @ 80F7FFC
push {r4-r7,lr}
sub sp, 0x4
ldr r1, =gUnknown_02039F20
ldr r0, =gUnknown_02039F25
ldr r1, =gContestFinalStandings
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@ -4994,7 +4994,7 @@ sub_80F8264: @ 80F8264
ldr r0, =gSpecialVar_0x8006
ldrh r1, [r0]
lsls r1, 6
ldr r0, =gUnknown_02039E00 + 13
ldr r0, =gContestMons + 13
adds r1, r0
adds r0, r4, 0
bl StringCopy
@ -5013,7 +5013,7 @@ sub_80F8290: @ 80F8290
ldr r1, =gSpecialVar_0x8006
ldrh r1, [r1]
lsls r1, 6
ldr r2, =gUnknown_02039E00 + 2
ldr r2, =gContestMons + 2
adds r1, r2
bl StringCopy
pop {r0}
@ -5027,7 +5027,7 @@ sub_80F82B4: @ 80F82B4
movs r1, 0
movs r2, 0
ldr r5, =gSpecialVar_0x8004
ldr r4, =gUnknown_02039F00
ldr r4, =gContestMonConditions
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
@ -5060,7 +5060,7 @@ _080F82DC:
thumb_func_start sub_80F82FC
sub_80F82FC: @ 80F82FC
ldr r2, =gSpecialVar_0x8004
ldr r1, =gUnknown_02039F00
ldr r1, =gContestMonConditions
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
@ -5075,7 +5075,7 @@ sub_80F82FC: @ 80F82FC
sub_80F831C: @ 80F831C
push {lr}
movs r1, 0
ldr r2, =gUnknown_02039F20
ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r3, =gSpecialVar_0x8005
cmp r0, 0
@ -5101,10 +5101,10 @@ _080F833C:
sub_80F834C: @ 80F834C
push {r4,lr}
movs r1, 0
ldr r2, =gUnknown_02039F20
ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r4, =gStringVar3
ldr r3, =gUnknown_02039E00 + 13
ldr r3, =gContestMons + 13
cmp r0, 0
beq _080F836E
_080F835C:
@ -5134,10 +5134,10 @@ _080F836E:
sub_80F8390: @ 80F8390
push {r4,lr}
movs r1, 0
ldr r2, =gUnknown_02039F20
ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r4, =gStringVar1
ldr r3, =gUnknown_02039E00 + 2
ldr r3, =gContestMons + 2
cmp r0, 0
beq _080F83B2
_080F83A0:
@ -5216,7 +5216,7 @@ sub_80F840C: @ 80F840C
thumb_func_start sub_80F8438
sub_80F8438: @ 80F8438
ldr r2, =gSpecialVar_0x8004
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 6
@ -5272,7 +5272,7 @@ sub_80F8484: @ 80F8484
thumb_func_start sub_80F84B0
sub_80F84B0: @ 80F84B0
ldr r0, =gSpecialVar_0x8004
ldr r1, =gUnknown_02039F25
ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
strh r1, [r0]
bx lr
@ -5314,7 +5314,7 @@ sub_80F8508: @ 80F8508
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@ -5578,7 +5578,7 @@ sub_80F8714: @ 80F8714
b _080F877E
.pool
_080F8748:
ldr r5, =gUnknown_02039E00 + 2
ldr r5, =gContestMons + 2
movs r4, 0x3
_080F874C:
adds r0, r5, 0

View File

@ -139,12 +139,12 @@ sub_80FC5DC: @ 80FC5DC
cmp r0, 0
beq _080FC650
bl GetMultiplayerId
ldr r1, =gUnknown_02039F25
ldr r1, =gContestPlayerMonIndex
strb r0, [r1]
bl GetLinkPlayerCount
ldr r4, =gUnknown_02039F30
strb r0, [r4]
ldr r1, =gUnknown_02039F2A
ldr r1, =gIsLinkContest
movs r0, 0x1
strb r0, [r1]
ldr r0, =gWirelessCommType
@ -182,7 +182,7 @@ _080FC63A:
ldrb r6, [r6]
cmp r3, r6
bge _080FC64A
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
@ -201,7 +201,7 @@ _080FC650:
sub_80FC670: @ 80FC670
push {r4,lr}
adds r4, r0, 0
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@ -285,10 +285,10 @@ _080FC6FE:
cmp r0, 0
beq _080FC7F4
ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@ -298,10 +298,10 @@ _080FC6FE:
.pool
_080FC738:
ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@ -321,7 +321,7 @@ _080FC758:
ldr r6, =gLinkPlayers
_080FC770:
lsls r4, r5, 6
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
adds r4, r0
lsls r1, r5, 8
ldr r0, =gBlockRecvBuffer
@ -434,7 +434,7 @@ _080FC858:
adds r1, r4, 0
movs r2, 0x4
bl memcpy
ldr r0, =gUnknown_030060B8
ldr r0, =gContestRngValue
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@ -603,7 +603,7 @@ _080FC9C4:
lsls r0, 24
cmp r0, 0
beq _080FC9F0
ldr r0, =gUnknown_02039F25
ldr r0, =gContestPlayerMonIndex
movs r1, 0x1
bl sub_80FC4F4
cmp r0, 0x1
@ -659,7 +659,7 @@ _080FCA30:
beq _080FCAB2
ldr r0, =gContestResources
ldr r2, [r0]
ldr r0, =gUnknown_02039F25
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r1, r0, 3
subs r1, r0
@ -860,7 +860,7 @@ _080FCC08:
lsls r0, 24
cmp r0, 0
beq _080FCC82
ldr r0, =gUnknown_02039F20
ldr r0, =gContestFinalStandings
movs r1, 0x4
_080FCC16:
bl sub_80FC4F4
@ -881,7 +881,7 @@ _080FCC38:
lsls r0, 24
cmp r0, 0
beq _080FCC82
ldr r0, =gUnknown_02039F20
ldr r0, =gContestFinalStandings
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
@ -1262,7 +1262,7 @@ _080FCF80:
lsls r0, 24
cmp r0, 0
beq _080FCFBE
ldr r0, =gUnknown_02039F00
ldr r0, =gContestMonConditions
movs r1, 0x8
bl sub_80FC4F4
cmp r0, 0x1
@ -1274,7 +1274,7 @@ _080FCF9C:
lsls r0, 24
cmp r0, 0
beq _080FCFBE
ldr r0, =gUnknown_02039F00
ldr r0, =gContestMonConditions
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8

View File

@ -88,8 +88,8 @@ _081D9EA4:
_081D9EB4:
bl GetMonData
strb r0, [r4]
ldr r5, =gUnknown_02039E00
ldr r4, =gUnknown_02039F25
ldr r5, =gContestMons
ldr r4, =gContestPlayerMonIndex
ldrb r0, [r4]
lsls r0, 6
adds r0, r5
@ -266,7 +266,7 @@ _081DA02A:
lsls r0, 24
cmp r0, 0
bne _081DA0B8
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
adds r1, r0, 0
adds r1, 0x2C
ldrb r2, [r1]
@ -438,10 +438,10 @@ _081DA1A4:
lsls r0, 24
cmp r0, 0
beq _081DA224
ldr r0, =gUnknown_02039F25
ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
adds r0, r1
movs r1, 0x40
bl sub_80FC4F4
@ -466,7 +466,7 @@ _081DA1D4:
ldr r6, =gLinkPlayers
_081DA1EC:
lsls r4, r5, 6
ldr r0, =gUnknown_02039E00
ldr r0, =gContestMons
adds r4, r0
lsls r1, r5, 8
ldr r0, =gBlockRecvBuffer
@ -558,7 +558,7 @@ _081DA2AC:
adds r1, r4, 0
movs r2, 0x4
bl memcpy
ldr r0, =gUnknown_030060B8
ldr r0, =gContestRngValue
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@ -823,7 +823,7 @@ _081DA4CC:
ldr r0, =gUnknown_02039F30
ldrb r2, [r0]
lsls r0, r2, 6
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
adds r0, r1
movs r1, 0x4
subs r1, r2
@ -847,7 +847,7 @@ _081DA50C:
ldr r4, =gUnknown_02039F30
ldrb r3, [r4]
lsls r0, r3, 6
ldr r5, =gUnknown_02039E00
ldr r5, =gContestMons
adds r0, r5
ldr r1, =gBlockRecvBuffer
movs r2, 0x4

View File

@ -10,7 +10,7 @@ sub_80F87D8: @ 80F87D8
push {r4,lr}
ldr r0, =gSaveBlock1Ptr
ldr r2, [r0]
ldr r1, =gUnknown_02039E00
ldr r1, =gContestMons
ldrb r3, [r1, 0x15]
ldr r4, =0x000013bc
adds r0, r2, r4
@ -150,8 +150,8 @@ sub_80F88DC: @ 80F88DC
thumb_func_start sub_80F88E8
sub_80F88E8: @ 80F88E8
push {lr}
ldr r0, =gUnknown_02039F20
ldr r1, =gUnknown_02039F25
ldr r0, =gContestFinalStandings
ldr r1, =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@ -218,11 +218,11 @@ sub_80F8970: @ 80F8970
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, =gUnknown_02039F00
ldr r0, =gContestMonConditions
mov r12, r0
ldr r1, =gSpecialVar_0x8006
mov r9, r1
ldr r2, =gUnknown_02039E00 + 2
ldr r2, =gContestMons + 2
mov r10, r2
mov r2, r12
mov r1, sp
@ -413,7 +413,7 @@ ShowContestWinner: @ 80F8ADC
thumb_func_start sub_80F8AFC
sub_80F8AFC: @ 80F8AFC
push {r4,r5,lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@ -422,7 +422,7 @@ sub_80F8AFC: @ 80F8AFC
movs r3, 0
ldr r0, =gUnknown_02039F30
adds r4, r0, 0
ldr r5, =gUnknown_02039E00
ldr r5, =gContestMons
ldrb r0, [r4]
cmp r3, r0
bge _080F8B50
@ -482,7 +482,7 @@ sub_80F8B94: @ 80F8B94
ldr r1, =gReservedSpritePaletteCount
movs r0, 0xC
strb r0, [r1]
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@ -594,8 +594,8 @@ sub_80F8C7C: @ 80F8C7C
strb r0, [r1]
cmp r0, 0
bne _080F8D18
ldr r0, =gUnknown_02039F20
ldr r1, =gUnknown_02039F25
ldr r0, =gContestFinalStandings
ldr r1, =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@ -675,7 +675,7 @@ _080F8D44:
mov r9, r0
movs r1, 0x3
mov r10, r1
ldr r2, =gUnknown_02039E00
ldr r2, =gContestMons
ldr r4, =gSpecialVar_0x8006
ldrh r1, [r4]
lsls r1, 6
@ -702,7 +702,7 @@ _080F8D44:
movs r1, 0
strh r1, [r0, 0x8]
strh r6, [r0, 0xA]
ldr r1, =gUnknown_02039F25
ldr r1, =gContestPlayerMonIndex
ldrh r0, [r4]
ldrb r1, [r1]
cmp r0, r1
@ -758,7 +758,7 @@ _080F8DD8:
bl CreateSprite
lsls r0, 24
lsrs r5, r0, 24
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@ -938,7 +938,7 @@ _080F8F98:
thumb_func_start sub_80F8FA0
sub_80F8FA0: @ 80F8FA0
push {r4,lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@ -973,13 +973,13 @@ _080F8FDE:
thumb_func_start sub_80F8FE8
sub_80F8FE8: @ 80F8FE8
push {r4,lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080F9020
ldr r2, =gUnknown_030060B8
ldr r2, =gContestRngValue
ldr r1, [r2]
ldr r0, =0x41c64e6d
muls r0, r1
@ -1007,7 +1007,7 @@ _080F902A:
thumb_func_start sub_80F903C
sub_80F903C: @ 80F903C
ldr r2, =gUnknown_030060B8
ldr r2, =gContestRngValue
ldr r1, [r2]
ldr r0, =0x41c64e6d
muls r0, r1
@ -1022,7 +1022,7 @@ sub_80F903C: @ 80F903C
thumb_func_start sub_80F905C
sub_80F905C: @ 80F905C
push {lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -1087,7 +1087,7 @@ _080F90D4:
thumb_func_start sub_80F90DC
sub_80F90DC: @ 80F90DC
push {lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -1110,7 +1110,7 @@ _080F90FE:
thumb_func_start sub_80F910C
sub_80F910C: @ 80F910C
push {lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@ -1130,7 +1130,7 @@ _080F9126:
thumb_func_start sub_80F9134
sub_80F9134: @ 80F9134
push {lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@ -1148,7 +1148,7 @@ _080F914E:
thumb_func_start sub_80F9154
sub_80F9154: @ 80F9154
ldr r1, =gUnknown_02039F2A
ldr r1, =gIsLinkContest
movs r0, 0
strb r0, [r1]
bx lr
@ -1158,7 +1158,7 @@ sub_80F9154: @ 80F9154
thumb_func_start sub_80F9160
sub_80F9160: @ 80F9160
push {lr}
ldr r0, =gUnknown_02039F2A
ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1

1
common_syms/contest.txt Normal file
View File

@ -0,0 +1 @@
gContestRngValue

View File

@ -352,7 +352,7 @@ gUnknown_08587FA4:: @ 8587FA4
.align 2
gUnknown_085880A4:: @ 85880A4
gContestOpponents:: @ 85880A4
.include "data/contest_opponents.inc"
gUnknown_085898A4:: @ 85898A4

View File

@ -1241,11 +1241,11 @@ gUnknown_08C17980:: @ 8C17980
.incbin "graphics/unknown/unknown_C17980.bin.lz"
.align 2
gUnknown_08C17AB0:: @ 8C17AB0
gContestMiscGfx:: @ 8C17AB0
.incbin "graphics/contest/misc.4bpp.lz"
.align 2
gUnknown_08C1850C:: @ 8C1850C
gContestAudienceGfx:: @ 8C1850C
.incbin "graphics/contest/audience.4bpp.lz"
.align 2

View File

@ -107,4 +107,6 @@ u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
u8 sub_80A600C(u8, u16, u8);
#endif // GUARD_BATTLE_ANIM_H

View File

@ -1,36 +1,241 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
struct ContestMove
enum
{
u8 effect;
u8 contestCategory:3;
u8 comboStarterId;
u8 comboMoves[4];
CONTEST_CATEGORY_COOL,
CONTEST_CATEGORY_BEAUTY,
CONTEST_CATEGORY_CUTE,
CONTEST_CATEGORY_SMART,
CONTEST_CATEGORY_TOUGH,
};
struct ContestEffect
enum
{
u8 effectType;
u8 appeal;
u8 jam;
CONTEST_EFFECT_HIGHLY_APPEALING,
CONTEST_EFFECT_USER_MORE_EASILY_STARTLED,
CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
CONTEST_EFFECT_REPETITION_NOT_BORING,
CONTEST_EFFECT_AVOID_STARTLE_ONCE,
CONTEST_EFFECT_AVOID_STARTLE,
CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY,
CONTEST_EFFECT_USER_LESS_EASILY_STARTLED,
CONTEST_EFFECT_STARTLE_FRONT_MON,
CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS,
CONTEST_EFFECT_STARTLE_PREV_MON,
CONTEST_EFFECT_STARTLE_PREV_MONS,
CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON,
CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS,
CONTEST_EFFECT_STARTLE_PREV_MON_2,
CONTEST_EFFECT_STARTLE_PREV_MONS_2,
CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION,
CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN,
CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL,
CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS,
CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS,
CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS,
CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION,
CONTEST_EFFECT_BETTER_IF_FIRST,
CONTEST_EFFECT_BETTER_IF_LAST,
CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES,
CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE,
CONTEST_EFFECT_BETTER_WHEN_LATER,
CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING,
CONTEST_EFFECT_BETTER_IF_SAME_TYPE,
CONTEST_EFFECT_BETTER_IF_DIFF_TYPE,
CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL,
CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS,
CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION,
CONTEST_EFFECT_NEXT_APPEAL_EARLIER,
CONTEST_EFFECT_NEXT_APPEAL_LATER,
CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER,
CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER,
CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST,
CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS,
CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED,
CONTEST_EFFECT_DONT_EXCITE_AUDIENCE
};
struct ContestStruct_02039E00
enum
{
u16 unk_00;
u8 unk_02[11];
u8 unk_0d[8];
u8 filler_15[9];
u8 filler_1E[34];
COMBO_STARTER_RAIN_DANCE = 1,
COMBO_STARTER_RAGE,
COMBO_STARTER_FOCUS_ENERGY,
COMBO_STARTER_HYPNOSIS,
COMBO_STARTER_ENDURE,
COMBO_STARTER_HORN_ATTACK,
COMBO_STARTER_SWORDS_DANCE,
COMBO_STARTER_STOCKPILE,
COMBO_STARTER_SUNNY_DAY,
COMBO_STARTER_REST,
COMBO_STARTER_VICE_GRIP,
COMBO_STARTER_DEFENSE_CURL,
COMBO_STARTER_CHARGE,
COMBO_STARTER_ROCK_THROW,
COMBO_STARTER_YAWN,
COMBO_STARTER_SCARY_FACE,
COMBO_STARTER_POWDER_SNOW,
COMBO_STARTER_LOCK_ON,
COMBO_STARTER_SOFT_BOILED,
COMBO_STARTER_MEAN_LOOK,
COMBO_STARTER_SCRATCH,
COMBO_STARTER_GROWTH,
COMBO_STARTER_HAIL,
COMBO_STARTER_SANDSTORM,
COMBO_STARTER_BELLY_DRUM,
COMBO_STARTER_MIND_READER,
COMBO_STARTER_DRAGON_BREATH,
COMBO_STARTER_DRAGON_RAGE,
COMBO_STARTER_DRAGON_DANCE,
COMBO_STARTER_SURF,
COMBO_STARTER_DIVE,
COMBO_STARTER_STRING_SHOT,
COMBO_STARTER_LEER,
COMBO_STARTER_TAUNT,
COMBO_STARTER_CHARM,
COMBO_STARTER_HARDEN,
COMBO_STARTER_SING,
COMBO_STARTER_EARTHQUAKE,
COMBO_STARTER_DOUBLE_TEAM,
COMBO_STARTER_CURSE,
COMBO_STARTER_SWEET_SCENT,
COMBO_STARTER_SLUDGE,
COMBO_STARTER_SLUDGE_BOMB,
COMBO_STARTER_THUNDER_PUNCH,
COMBO_STARTER_FIRE_PUNCH,
COMBO_STARTER_ICE_PUNCH,
COMBO_STARTER_PECK,
COMBO_STARTER_METAL_SOUND,
COMBO_STARTER_MUD_SPORT,
COMBO_STARTER_WATER_SPORT,
COMBO_STARTER_BONE_CLUB,
COMBO_STARTER_BONEMERANG,
COMBO_STARTER_BONE_RUSH,
COMBO_STARTER_SAND_ATTACK,
COMBO_STARTER_MUD_SLAP,
COMBO_STARTER_FAKE_OUT,
COMBO_STARTER_PSYCHIC,
COMBO_STARTER_KINESIS,
COMBO_STARTER_CONFUSION,
COMBO_STARTER_POUND,
COMBO_STARTER_SMOG,
COMBO_STARTER_CALM_MIND
};
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
enum
{
CONTEST_STRING_MORE_CONSCIOUS,
CONTEST_STRING_NO_APPEAL,
CONTEST_STRING_SETTLE_DOWN,
CONTEST_STRING_OBLIVIOUS_TO_OTHERS,
CONTEST_STRING_LESS_AWARE,
CONTEST_STRING_STOPPED_CARING,
CONTEST_STRING_STARTLE_ATTEMPT,
CONTEST_STRING_DAZZLE_ATTEMPT,
CONTEST_STRING_JUDGE_LOOK_AWAY2,
CONTEST_STRING_UNNERVE_ATTEMPT,
CONTEST_STRING_NERVOUS,
CONTEST_STRING_UNNERVE_WAITING,
CONTEST_STRING_TAUNT_WELL,
CONTEST_STRING_REGAINED_FORM,
CONTEST_STRING_JAM_WELL,
CONTEST_STRING_HUSTLE_STANDOUT,
CONTEST_STRING_WORK_HARD_UNNOTICED,
CONTEST_STRING_WORK_BEFORE,
CONTEST_STRING_APPEAL_NOT_WELL,
CONTEST_STRING_WORK_PRECEDING,
CONTEST_STRING_APPEAL_NOT_WELL2,
CONTEST_STRING_APPEAL_NOT_SHOWN_WELL,
CONTEST_STRING_APPEAL_SLIGHTLY_WELL,
CONTEST_STRING_APPEAL_PRETTY_WELL,
CONTEST_STRING_APPEAL_EXCELLENTLY,
CONTEST_STRING_APPEAL_DUD,
CONTEST_STRING_APPEAL_NOT_VERY_WELL,
CONTEST_STRING_APPEAL_SLIGHTLY_WELL2,
CONTEST_STRING_APPEAL_PRETTY_WELL2,
CONTEST_STRING_APPEAL_VERY_WELL,
CONTEST_STRING_APPEAL_EXCELLENTLY2,
CONTEST_STRING_SAME_TYPE_GOOD,
CONTEST_STRING_DIFF_TYPE_GOOD,
CONTEST_STRING_STOOD_OUT_AS_MUCH,
CONTEST_STRING_NOT_AS_WELL,
CONTEST_STRING_CONDITION_ROSE,
CONTEST_STRING_HOT_STATUS,
CONTEST_STRING_MOVE_UP_LINE,
CONTEST_STRING_MOVE_BACK_LINE,
CONTEST_STRING_SCRAMBLE_ORDER,
CONTEST_STRING_JUDGE_EXPECTANTLY2,
CONTEST_STRING_WENT_OVER_WELL,
CONTEST_STRING_WENT_OVER_VERY_WELL,
CONTEST_STRING_APPEAL_COMBO_EXCELLENTLY,
CONTEST_STRING_AVERT_GAZE,
CONTEST_STRING_AVOID_SEEING,
CONTEST_STRING_NOT_FAZED,
CONTEST_STRING_LITTLE_DISTRACTED,
CONTEST_STRING_ATTEMPT_STARTLE,
CONTEST_STRING_LOOKED_DOWN,
CONTEST_STRING_TURNED_BACK,
CONTEST_STRING_UTTER_CRY,
CONTEST_STRING_LEAPT_UP,
CONTEST_STRING_TRIPPED_OVER,
CONTEST_STRING_MESSED_UP2,
CONTEST_STRING_FAILED_TARGET_NERVOUS,
CONTEST_STRING_FAILED_ANYONE_NERVOUS,
CONTEST_STRING_IGNORED,
CONTEST_STRING_NO_CONDITION_IMPROVE,
CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL,
CONTEST_STRING_UNAFFECTED,
CONTEST_STRING_ATTRACTED_ATTENTION,
CONTEST_STRING_NONE = 255
};
struct ContestPokemon
{
/*0x00*/ u16 species;
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0D*/ u8 trainerName[8];
/*0x15*/ u8 trainerGfxId;
/*0x18*/ u32 flags;
/*0x1C*/ u8 whichRank:2;
u8 aiPool_Cool:1;
u8 aiPool_Beauty:1;
u8 aiPool_Cute:1;
u8 aiPool_Smart:1;
u8 aiPool_Tough:1;
/*0x1E*/ u16 moves[4]; // moves
/*0x26*/ u8 cool; // cool
/*0x27*/ u8 beauty; // beauty
/*0x28*/ u8 cute; // cute
/*0x29*/ u8 smart; // smart
/*0x2A*/ u8 tough; // tough
/*0x2B*/ u8 sheen; // sheen
/*0x2C*/ u8 unk2C[12];
/*0x38*/ u32 personality; // personality
/*0x3C*/ u32 otId; // otId
}; // wow
extern struct ContestPokemon gContestMons[4];
extern u8 gUnknown_02039F24;
extern u16 gSpecialVar_ContestCategory;
extern u8 gSpecialVar_ContestRank;
extern u16 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F30;
struct Shared18000
{
/*0x18000*/ u8 unk18000;
/*0x18001*/ u8 filler18001[3];
/*0x18004*/ u16 unk18004[16][16];
/*0x18204*/ u16 unk18204[0x200];
/*0x18604*/ u16 unk18604[0x200];
/*0x18A04*/ u8 unk18A04[0x800];
};
struct ContestStruct_field_18
{
// unknown size
@ -43,19 +248,173 @@ struct ContestStruct_field_18
u32 field_10;
};
struct Contest
{
/*0x19204*/ u8 playerMoveChoice;
/*0x19205*/ u8 turnNumber;
/*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
/*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
u16 unk1920A_4:1;
u16 unk1920A_5:1;
u16 unk1920A_6:1;
u16 unk1920A_7:1;
/*0x1920B*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
u16 unk1920B_2:1;
/*0x1920C*/ u8 mainTaskId;
/*0x1920D*/ u8 unk1920D[4];
/*0x19211*/ u8 unk19211;
/*0x19212*/ u8 unk19212;
/*0x19213*/ u8 filler19213;
/*0x19214*/ u8 unk19214;
/*0x19215*/ u8 unk19215;
/*0x19216*/ u8 unk19216; // sprite ID
/*0x19217*/ s8 applauseLevel;
/*0x19218*/ u8 unk19218[4];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
u16 unk19220[5][4]; // move history?
u8 unk19248[5][4]; // excitement history
u8 applauseMeterSpriteId; // sprite ID
/*0x1925D*/ u8 unk1925D;
/*0x1925E*/ u8 unk1925E;
};
struct ContestantStatus
{
/*0x00*/ s16 appeal1; // move appeal?
/*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
/*0x04*/ s16 unk4;
/*0x06*/ u16 currMove;
/*0x08*/ u16 prevMove;
/*0x0A*/ u8 moveCategory;
/*0x0B*/ u8 unkB_0:2;
u8 unkB_2:2;
u8 moveRepeatCount:3;
u8 noMoreTurns:1; // used a one-time move?
/*0x0C*/ u8 nervous:1;
u8 numTurnsSkipped:2;
/*0x0D*/ s8 condition;
/*0x0E*/ u8 jam;
/*0x0F*/ u8 jamReduction;
// Flags set by move effect
/*0x10*/ u8 resistant:1;
u8 immune:1;
u8 moreEasilyStartled:1;
u8 usedRepeatableMove:1;
u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition
u8 turnOrderMod:2; // 1: defined; 2: random
/*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
u8 turnSkipped:1;
u8 exploded:1;
u8 overrideCategoryExcitementMod:1;
u8 appealTripleCondition:1;
/*0x12*/ u8 jamSafetyCount;
/*0x13*/ u8 effectStringId; // status action?
/*0x14*/ u8 effectStringId2;
/*0x15*/ u8 disappointedRepeat:1;
u8 unk15_1:1;
u8 unk15_2:1;
u8 unk15_3:1;
u8 hasJudgesAttention:1;
u8 judgesAttentionWasRemoved:1;
u8 unk15_6:1;
/*0x16*/ u8 unk16;
/*0x17*/ u8 unk17;
/*0x18*/ u8 unk18;
/*0x19*/ u8 nextTurnOrder; // turn position
/*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
/*0x1B*/ u8 unk1B;
};
struct UnknownContestStruct7
{
u8 turnOrder[4];
s16 jam;
s16 jam2;
u8 jamQueue[5];
u8 unnervedPokes[4];
u8 contestant;
};
struct ContestAIInfo {
/*0x00*/ u8 aiState;
/*0x02*/ u16 unk2;
/*0x04*/ u8 unk4;
/*0x05*/ u8 unk5[4];
/*0x09*/ u8 aiAction;
/*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
/*0x10*/ u8 unk10;
/*0x14*/ u32 flags;
/*0x18*/ s16 scriptResult;
/*0x1A*/ s16 scriptArr[3];
/*0x20*/ u32 stack[8];
/*0x40*/ u8 unk40;
/*0x41*/ u8 unk41;
};
struct UnknownContestStruct5
{
s8 bits_0; // current move excitement?
u8 excitementFrozen:1;
u8 excitementFreezer:3;
s8 unk2;
};
struct UnknownContestStruct4
{
u8 unk0; // sprite ID
u8 unk1; // sprite ID
u8 unk2_0:1;
u8 unk2_1:1;
u8 unk2_2:1;
};
struct ContestResourcesField1C
{
u8 filler_00[0x40];
};
struct ContestResourcesField20
{
u8 filler_00[0x0C];
};
struct ContestResources
{
void *field_0;
void *field_4;
void *field_8;
void *field_C;
void *field_10;
void *field_14;
struct Contest *field_0;
struct ContestantStatus *field_4;
struct UnknownContestStruct7 *field_8;
struct ContestAIInfo *field_C;
struct UnknownContestStruct5 *field_10;
struct UnknownContestStruct4 *field_14;
struct ContestStruct_field_18 *field_18;
struct ContestResourcesField1C * field_1c;
struct ContestResourcesField20 * field_20;
u8 * field_24[4];
void * field_34;
void * field_38;
void * field_3c;
};
extern struct ContestResources *gContestResources;
#define sContest (*gContestResources->field_0)
#define sContestantStatus (gContestResources->field_4)
#define shared192D0 (*gContestResources->field_8)
#define eContestAI (*gContestResources->field_C)
#define shared19328 (*gContestResources->field_10)
#define shared19338 (*gContestResources->field_14)
#define shared15800 (gHeap + 0x18000)
#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
extern u32 gContestRngValue;
bool8 IsSpeciesNotUnown(u16 species);
void LoadContestBgAfterMoveAnim(void);

22
include/contest_effect.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef GUARD_CONTEST_EFFECT_H
#define GUARD_CONTEST_EFFECT_H
struct ContestMove
{
u8 effect;
u8 contestCategory:3;
u8 comboStarterId;
u8 comboMoves[4];
};
struct ContestEffect
{
u8 effectType;
u8 appeal;
u8 jam;
};
extern const struct ContestMove gContestMoves[];
extern struct ContestEffect gContestEffects[];
#endif //GUARD_CONTEST_EFFECT_H

View File

@ -4,5 +4,6 @@
void sub_80F840C(void);
void sub_80F8484(void);
void sub_80F84C4(u8);
void sub_80FC998(u8 taskId);
#endif // GUARD_CONTEST_LINK_80F57C4_H

View File

@ -0,0 +1,8 @@
#ifndef GUARD_CONTEST_LINK_80FC4F4_H
#define GUARD_CONTEST_LINK_80FC4F4_H
void sub_80FCC88(u8);
void sub_80FCC88(u8);
void sub_80FCACC(u8);
#endif //GUARD_CONTEST_LINK_80FC4F4_H

View File

@ -1,6 +1,8 @@
#ifndef GUARD_DATA2_H
#define GUARD_DATA2_H
#include "constants/species.h"
struct MonCoords
{
// This would use a bitfield, but some function
@ -17,6 +19,6 @@ extern const u8 gMoveNames[][13];
extern struct CompressedSpriteSheet gUnknown_0831C620;
extern struct CompressedSpritePalette gUnknown_0831C628;
extern const struct SpriteTemplate gUnknown_0831C688;
extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES];
#endif // GUARD_DATA2_H

View File

@ -394,6 +394,10 @@ extern const u8 Route111_EventScript_2907F0[];
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
//contest_strings
extern const u8 gText_0827D507[];
extern const u8 gText_0827D531[];
//mauville_old_man
extern const u8 gOtherText_Is[];
extern const u8 gOtherText_DontYouAgree[];

View File

@ -28,6 +28,17 @@ typedef u8 bool8;
typedef u16 bool16;
typedef u32 bool32;
struct BgCnt
{
u16 priority:2;
u16 charBaseBlock:2;
u16 dummy:4;
u16 screenBaseBlock:5;
u16 areaOverflowMode:1;
u16 screenSize:2;
};
typedef volatile struct BgCnt vBgCnt;
struct PlttData
{
u16 r:5; // red

View File

@ -0,0 +1,7 @@
#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
u16 sub_80F903C(void);
#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H

View File

@ -451,6 +451,8 @@ extern const u8 gText_TooImportantToToss[];
extern const u8 gText_ConfirmTossItems[];
extern const u8 gText_MoveVar1Where[];
extern const u8 gText_ColorLightShadowDarkGrey[];
extern const u8 gText_ColorBlue[];
extern const u8 gText_Friend[];
extern const u8 gText_Tristan[];
extern const u8 gText_Philip[];
@ -461,5 +463,7 @@ extern const u8 gText_FiveMarks[];
extern const u8 gText_TotalRecordWLD[];
extern const u8 gText_PlayersBattleResults[];
extern const u8 gText_WinLoseDraw[];
extern const u8 gText_ColorTransparent[];
extern const u8 gText_Slash[];
#endif //GUARD_STRINGS_H

View File

@ -47,6 +47,7 @@ void UpdateTVShowsPerDay(u16 days);
void PutPokemonTodayCaughtOnAir(void);
void TV_PutSecretBaseVisitOnTheAir(void);
void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void UpdateTVScreensOnMap(int, int);
#endif //GUARD_TV_H

View File

@ -135,6 +135,7 @@ SECTIONS {
src/item_menu_icons.o(.text);
asm/battle_anim_80D51AC.o(.text);
src/item.o(.text);
src/contest.o(.text);
asm/contest.o(.text);
asm/shop.o(.text);
src/berry.o(.text);

2764
src/contest.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@
#include "daycare.h"
#include "data2.h"
#include "contest.h"
#include "contest_effect.h"
extern struct UnkSummaryStruct* gUnknown_0203CF1C;
extern struct BgTemplate gUnknown_0861CBB4;
@ -41,7 +42,6 @@ extern struct UnkStruct_61CC04 gUnknown_0861CC10;
extern struct UnkStruct_61CC04 gUnknown_0861CBEC;
extern struct UnkStruct_61CC04 gUnknown_0861CBF8;
extern u16 gSummaryScreenWindow_Tilemap[];
extern struct ContestMove gContestMoves[];
extern struct ContestEffect gContestEffects[];
extern struct WindowTemplate gUnknown_0861CC24;
extern u8 gUnknown_0861CD2C[][3];

View File

@ -1448,8 +1448,8 @@ void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00;
StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d);
show->contestLiveUpdates.winningSpecies = gContestMons[a1].species;
StringCopy(show->contestLiveUpdates.winningTrainerName, gContestMons[a1].trainerName);
StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName);
show->contestLiveUpdates.appealFlags2 = a0;
if (a1 + 1 > gUnknown_02039F30)

View File

@ -43,9 +43,7 @@ gUnknown_030060B0: @ 30060B0
gUnknown_030060B4: @ 30060B4
.space 0x4
gUnknown_030060B8: @ 30060B8
.space 0x4
.include "contest.o"
.include "tv.o"
.include "mauville_old_man.o"

View File

@ -382,61 +382,9 @@ gUnknown_02039D8C: @ 2039D8C
.include "src/fldeff_cut.o"
.include "src/map_name_popup.o"
.include "src/item.o"
.include "src/contest.o"
gUnknown_02039E00: @ 2039E00
.space 0x100
gUnknown_02039F00: @ 2039F00
.space 0x8
gUnknown_02039F08: @ 2039F08
.space 0x8
gUnknown_02039F10: @ 2039F10
.space 0x8
gUnknown_02039F18: @ 2039F18
.space 0x8
gUnknown_02039F20: @ 2039F20
.space 0x4
gUnknown_02039F24: @ 2039F24
.space 0x1
gUnknown_02039F25: @ 2039F25
.space 0x1
gUnknown_02039F26: @ 2039F26
.space 0x4
gUnknown_02039F2A: @ 2039F2A
.space 0x1
gUnknown_02039F2B: @ 2039F2B
.space 0x1
gSpecialVar_ContestCategory: @ 2039F2C
.space 0x2
gSpecialVar_ContestRank: @ 2039F2E
.space 0x2
gUnknown_02039F30: @ 2039F30
.space 0x1
gUnknown_02039F31: @ 2039F31
.space 0x3
gContestResources: @ 2039F34
.space 0x4
gUnknown_02039F38: @ 2039F38
.space 0x4
gUnknown_02039F3C: @ 2039F3C
.space 0x20
.align 2
gUnknown_02039F5C: @ 2039F5C
.space 0x1