summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s220
-rw-r--r--asm/contest_ai.s52
-rw-r--r--asm/contest_link_80C2020.s56
-rw-r--r--asm/contest_link_80C857C.s36
-rw-r--r--asm/matsuda_debug_menu.s910
-rw-r--r--asm/script_pokemon_util_80C4BF0.s20
-rw-r--r--asm/trainer_card.s2180
-rw-r--r--data/data2.s66
-rw-r--r--include/asm.inc.h4
-rw-r--r--include/menu.h2
-rw-r--r--include/pokemon.h64
-rw-r--r--include/text.h4
-rw-r--r--include/trainer_card.h91
-rw-r--r--ld_script.txt1
-rw-r--r--src/matsuda_debug_menu.c724
-rw-r--r--src/menu.c2
-rw-r--r--src/text.c4
-rw-r--r--src/trainer_card.c1812
-rw-r--r--sym_ewram.txt5
19 files changed, 2742 insertions, 3511 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 4b99acefc..78354b363 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -811,7 +811,7 @@ _080AB844:
mov r1, sp
adds r2, r6, 0
bl CpuSet
- ldr r0, _080AB8B8 @ =gUnknown_02038695
+ ldr r0, _080AB8B8 @ =gContestPlayerMonIndex
mov r9, r0
ldrb r0, [r0]
adds r0, 0x5
@@ -850,7 +850,7 @@ _080AB844:
_080AB8AC: .4byte gUnknown_08D17144
_080AB8B0: .4byte gPlttBufferUnfaded + 0x100
_080AB8B4: .4byte REG_BG0CNT
-_080AB8B8: .4byte gUnknown_02038695
+_080AB8B8: .4byte gContestPlayerMonIndex
_080AB8BC: .4byte 0xffffff00
_080AB8C0: .4byte 0x02018004
_080AB8C4: .4byte 0x040000d4
@@ -1191,7 +1191,7 @@ sub_80ABB70: @ 80ABB70
ldr r1, _080ABBC4 @ =0x84000100
str r1, [r0, 0x8]
ldr r0, [r0, 0x8]
- ldr r0, _080ABBC8 @ =gUnknown_02038695
+ ldr r0, _080ABBC8 @ =gContestPlayerMonIndex
ldrb r0, [r0]
bl sub_80AF59C
lsls r0, 24
@@ -1208,7 +1208,7 @@ _080ABBB8: .4byte gPlttBufferUnfaded
_080ABBBC: .4byte 0x02018204
_080ABBC0: .4byte 0x040000d4
_080ABBC4: .4byte 0x84000100
-_080ABBC8: .4byte gUnknown_02038695
+_080ABBC8: .4byte gContestPlayerMonIndex
_080ABBCC: .4byte gUnknown_020238CC
_080ABBD0: .4byte gUnknown_083CAF84
_080ABBD4:
@@ -1301,7 +1301,7 @@ sub_80ABC70: @ 80ABC70
_080ABC88:
movs r0, 0x5
bl PlaySE
- ldr r0, _080ABCB4 @ =gUnknown_02038695
+ ldr r0, _080ABCB4 @ =gContestPlayerMonIndex
ldrb r0, [r0]
bl sub_80AF59C
lsls r0, 24
@@ -1318,7 +1318,7 @@ _080ABC88:
b _080ABCCC
.align 2, 0
_080ABCB0: .4byte gMain
-_080ABCB4: .4byte gUnknown_02038695
+_080ABCB4: .4byte gContestPlayerMonIndex
_080ABCB8: .4byte gTasks
_080ABCBC: .4byte sub_80ABCDC
_080ABCC0:
@@ -1367,7 +1367,7 @@ sub_80ABCDC: @ 80ABCDC
movs r1, 0
bl FillWindowRect_DefaultPalette
movs r6, 0
- ldr r0, _080ABD90 @ =gUnknown_02038695
+ ldr r0, _080ABD90 @ =gContestPlayerMonIndex
mov r8, r0
ldr r7, _080ABD94 @ =0x02019260
mov r9, r5
@@ -1425,7 +1425,7 @@ _080ABD80: .4byte gUnknown_030042A0
_080ABD84: .4byte gUnknown_03004280
_080ABD88: .4byte gUnknown_03004210
_080ABD8C: .4byte gUnknown_083CA340
-_080ABD90: .4byte gUnknown_02038695
+_080ABD90: .4byte gContestPlayerMonIndex
_080ABD94: .4byte 0x02019260
_080ABD98: .4byte gUnknown_0203858E
_080ABD9C: .4byte gUnknownText_UnknownFormatting2
@@ -1504,10 +1504,10 @@ _080ABE20:
movs r0, 0
ldrsb r0, [r4, r0]
bl sub_80AC0AC
- ldr r2, _080ABE90 @ =gUnknown_02038570
+ ldr r2, _080ABE90 @ =gContestMons
ldrb r1, [r4]
lsls r1, 1
- ldr r0, _080ABE94 @ =gUnknown_02038695
+ ldr r0, _080ABE94 @ =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
adds r1, r0
@@ -1539,8 +1539,8 @@ _080ABE80: .4byte gUnknown_083CA340 + 0x1
_080ABE84: .4byte 0x0000ffff
_080ABE88: .4byte 0x00002d9f
_080ABE8C: .4byte 0x02019204
-_080ABE90: .4byte gUnknown_02038570
-_080ABE94: .4byte gUnknown_02038695
+_080ABE90: .4byte gContestMons
+_080ABE94: .4byte gContestPlayerMonIndex
_080ABE98: .4byte gTasks
_080ABE9C: .4byte sub_80ABEA0
thumb_func_end sub_80ABCDC
@@ -1553,8 +1553,8 @@ sub_80ABEA0: @ 80ABEA0
lsrs r7, r0, 24
movs r6, 0
ldr r3, _080ABEF4 @ =gMain
- ldr r1, _080ABEF8 @ =gUnknown_02038570
- ldr r0, _080ABEFC @ =gUnknown_02038695
+ ldr r1, _080ABEF8 @ =gContestMons
+ ldr r0, _080ABEFC @ =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
adds r1, 0x1E
@@ -1590,8 +1590,8 @@ _080ABEC6:
b _080AC098
.align 2, 0
_080ABEF4: .4byte gMain
-_080ABEF8: .4byte gUnknown_02038570
-_080ABEFC: .4byte gUnknown_02038695
+_080ABEF8: .4byte gContestMons
+_080ABEFC: .4byte gContestPlayerMonIndex
_080ABF00: .4byte gTasks
_080ABF04: .4byte sub_80AC0C8
_080ABF08:
@@ -1629,7 +1629,7 @@ _080ABF26:
str r1, [sp, 0x4]
movs r1, 0
bl FillWindowRect_DefaultPalette
- ldr r0, _080ABF6C @ =gUnknown_02038695
+ ldr r0, _080ABF6C @ =gContestPlayerMonIndex
ldrb r0, [r0]
bl sub_80AF59C
lsls r0, 24
@@ -1642,7 +1642,7 @@ _080ABF26:
.align 2, 0
_080ABF64: .4byte gUnknown_03004210
_080ABF68: .4byte gUnknown_083CA340
-_080ABF6C: .4byte gUnknown_02038695
+_080ABF6C: .4byte gContestPlayerMonIndex
_080ABF70: .4byte gUnknown_020238CC
_080ABF74: .4byte gUnknown_083CAF84
_080ABF78:
@@ -1713,10 +1713,10 @@ _080AC006:
ldrsb r0, [r4, r0]
bl sub_80AC0AC
bl sub_80AED58
- ldr r2, _080AC040 @ =gUnknown_02038570
+ ldr r2, _080AC040 @ =gContestMons
ldrb r1, [r4]
lsls r1, 1
- ldr r0, _080AC044 @ =gUnknown_02038695
+ ldr r0, _080AC044 @ =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
adds r1, r0
@@ -1731,8 +1731,8 @@ _080AC006:
b _080AC098
.align 2, 0
_080AC03C: .4byte 0x02019204
-_080AC040: .4byte gUnknown_02038570
-_080AC044: .4byte gUnknown_02038695
+_080AC040: .4byte gContestMons
+_080AC044: .4byte gContestPlayerMonIndex
_080AC048:
ldr r4, _080AC060 @ =0x02019204
movs r0, 0
@@ -1755,10 +1755,10 @@ _080AC068:
ldrsb r0, [r4, r0]
bl sub_80AC0AC
bl sub_80AED58
- ldr r2, _080AC0A4 @ =gUnknown_02038570
+ ldr r2, _080AC0A4 @ =gContestMons
ldrb r1, [r4]
lsls r1, 1
- ldr r0, _080AC0A8 @ =gUnknown_02038695
+ ldr r0, _080AC0A8 @ =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
adds r1, r0
@@ -1777,8 +1777,8 @@ _080AC098:
bx r0
.align 2, 0
_080AC0A0: .4byte 0x02019204
-_080AC0A4: .4byte gUnknown_02038570
-_080AC0A8: .4byte gUnknown_02038695
+_080AC0A4: .4byte gContestMons
+_080AC0A8: .4byte gContestPlayerMonIndex
thumb_func_end sub_80ABEA0
thumb_func_start sub_80AC0AC
@@ -1812,7 +1812,7 @@ sub_80AC0C8: @ 80AC0C8
ands r0, r1
cmp r0, 0
beq _080AC13C
- ldr r4, _080AC124 @ =gUnknown_02038695
+ ldr r4, _080AC124 @ =gContestPlayerMonIndex
ldrb r0, [r4]
bl sub_80AF15C
ldrb r2, [r4]
@@ -1844,7 +1844,7 @@ sub_80AC0C8: @ 80AC0C8
b _080AC14E
.align 2, 0
_080AC120: .4byte gUnknown_0203869A
-_080AC124: .4byte gUnknown_02038695
+_080AC124: .4byte gContestPlayerMonIndex
_080AC128: .4byte 0x02019260
_080AC12C: .4byte sub_80C8A38
_080AC130: .4byte sub_80AC15C
@@ -2311,7 +2311,7 @@ _080AC542:
adds r7, r4, r5
ldrb r0, [r7, 0x11]
bl sub_80B28F0
- ldr r3, _080AC5D0 @ =gUnknown_02038570
+ ldr r3, _080AC5D0 @ =gContestMons
ldrb r2, [r7, 0x11]
lsls r2, 6
adds r0, r2, r3
@@ -2360,7 +2360,7 @@ _080AC542:
_080AC5C4: .4byte 0x02019348
_080AC5C8: .4byte gUnknown_02024E84
_080AC5CC: .4byte 0xfffffebc
-_080AC5D0: .4byte gUnknown_02038570
+_080AC5D0: .4byte gContestMons
_080AC5D4: .4byte gSprites
_080AC5D8: .4byte sub_80AD8FC
_080AC5DC: .4byte gTasks
@@ -2428,7 +2428,7 @@ _080AC664:
bl sub_80AF138
ldr r0, _080AC690 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080AC694 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080AC694 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldrh r1, [r5, 0x6]
@@ -2446,7 +2446,7 @@ _080AC664:
b _080AC6B0
.align 2, 0
_080AC690: .4byte gStringVar1
-_080AC694: .4byte gUnknown_02038570 + 0x2
+_080AC694: .4byte gContestMons + 0x2
_080AC698: .4byte gStringVar2
_080AC69C: .4byte gMoveNames
_080AC6A0:
@@ -3369,7 +3369,7 @@ _080ACE0A:
bl sub_80AF138
ldr r0, _080ACE4C @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080ACE50 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080ACE50 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r4, _080ACE54 @ =gStringVar4
@@ -3396,7 +3396,7 @@ _080ACE36:
.align 2, 0
_080ACE48: .4byte 0x02019260
_080ACE4C: .4byte gStringVar1
-_080ACE50: .4byte gUnknown_02038570 + 0x2
+_080ACE50: .4byte gContestMons + 0x2
_080ACE54: .4byte gStringVar4
_080ACE58: .4byte gUnknown_083CC103
_080ACE5C: .4byte gMenuWindow
@@ -3511,7 +3511,7 @@ _080ACF48:
bl sub_80AF138
ldr r0, _080ACF90 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080ACF94 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080ACF94 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r4, _080ACF98 @ =gStringVar4
@@ -3541,7 +3541,7 @@ _080ACF88:
bl _080AD8CA
.align 2, 0
_080ACF90: .4byte gStringVar1
-_080ACF94: .4byte gUnknown_02038570 + 0x2
+_080ACF94: .4byte gContestMons + 0x2
_080ACF98: .4byte gStringVar4
_080ACF9C: .4byte gUnknown_083CBD52
_080ACFA0: .4byte gMenuWindow
@@ -3655,7 +3655,7 @@ _080AD070:
bl sub_80AF138
ldr r0, _080AD0D0 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080AD0D4 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080AD0D4 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r4, _080AD0D8 @ =gStringVar4
@@ -3685,7 +3685,7 @@ _080AD070:
.align 2, 0
_080AD0CC: .4byte 0x02019260
_080AD0D0: .4byte gStringVar1
-_080AD0D4: .4byte gUnknown_02038570 + 0x2
+_080AD0D4: .4byte gContestMons + 0x2
_080AD0D8: .4byte gStringVar4
_080AD0DC: .4byte gUnknown_083CC075
_080AD0E0: .4byte gMenuWindow
@@ -3859,7 +3859,7 @@ _080AD23A:
bl sub_80AF138
ldr r0, _080AD280 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080AD284 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080AD284 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r3, _080AD288 @ =0x02019204
@@ -3887,7 +3887,7 @@ _080AD274: .4byte gUnknown_083CC2D8
_080AD278: .4byte gContestMoves
_080AD27C: .4byte 0x02019260
_080AD280: .4byte gStringVar1
-_080AD284: .4byte gUnknown_02038570 + 0x2
+_080AD284: .4byte gContestMons + 0x2
_080AD288: .4byte 0x02019204
_080AD28C: .4byte gTasks
_080AD290:
@@ -4242,7 +4242,7 @@ _080AD53C:
lsls r1, 20
lsrs r1, 29
lsls r1, 6
- ldr r5, _080AD5B0 @ =gUnknown_02038570 + 0x2
+ ldr r5, _080AD5B0 @ =gContestMons + 0x2
adds r1, r5
bl StringCopy
ldr r0, _080AD5B4 @ =gStringVar1
@@ -4285,7 +4285,7 @@ _080AD53C:
.align 2, 0
_080AD5A8: .4byte gStringVar3
_080AD5AC: .4byte 0x02019328
-_080AD5B0: .4byte gUnknown_02038570 + 0x2
+_080AD5B0: .4byte gContestMons + 0x2
_080AD5B4: .4byte gStringVar1
_080AD5B8: .4byte gStringVar2
_080AD5BC: .4byte gMoveNames
@@ -4365,7 +4365,7 @@ _080AD664:
bl sub_80B09B0
ldr r0, _080AD6B8 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080AD6BC @ =gUnknown_02038570 + 0x2
+ ldr r2, _080AD6BC @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r0, _080AD6C0 @ =gStringVar2
@@ -4399,7 +4399,7 @@ _080AD664:
.align 2, 0
_080AD6B4: .4byte 0x02019260
_080AD6B8: .4byte gStringVar1
-_080AD6BC: .4byte gUnknown_02038570 + 0x2
+_080AD6BC: .4byte gContestMons + 0x2
_080AD6C0: .4byte gStringVar2
_080AD6C4: .4byte gMoveNames
_080AD6C8: .4byte gStringVar4
@@ -4548,7 +4548,7 @@ _080AD7E8:
bl sub_80AF138
ldr r0, _080AD828 @ =gStringVar1
lsls r1, r7, 6
- ldr r2, _080AD82C @ =gUnknown_02038570 + 0x2
+ ldr r2, _080AD82C @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r4, _080AD830 @ =gStringVar4
@@ -4574,7 +4574,7 @@ _080AD7E8:
b _080AD8CA
.align 2, 0
_080AD828: .4byte gStringVar1
-_080AD82C: .4byte gUnknown_02038570 + 0x2
+_080AD82C: .4byte gContestMons + 0x2
_080AD830: .4byte gStringVar4
_080AD834: .4byte gUnknown_083CB00D
_080AD838: .4byte gMenuWindow
@@ -5031,7 +5031,7 @@ sub_80ADB88: @ 80ADB88
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, _080ADBEC @ =gUnknown_02038695
+ ldr r6, _080ADBEC @ =gContestPlayerMonIndex
ldrb r1, [r6]
lsls r0, r1, 3
subs r0, r1
@@ -5043,7 +5043,7 @@ sub_80ADB88: @ 80ADB88
ldr r0, _080ADBF4 @ =gStringVar1
ldrb r1, [r6]
lsls r1, 6
- ldr r2, _080ADBF8 @ =gUnknown_02038570 + 0x2
+ ldr r2, _080ADBF8 @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r6, _080ADBFC @ =gStringVar4
@@ -5073,10 +5073,10 @@ sub_80ADB88: @ 80ADB88
pop {r0}
bx r0
.align 2, 0
-_080ADBEC: .4byte gUnknown_02038695
+_080ADBEC: .4byte gContestPlayerMonIndex
_080ADBF0: .4byte 0x02019260
_080ADBF4: .4byte gStringVar1
-_080ADBF8: .4byte gUnknown_02038570 + 0x2
+_080ADBF8: .4byte gContestMons + 0x2
_080ADBFC: .4byte gStringVar4
_080ADC00: .4byte gUnknown_083CB2F0
_080ADC04: .4byte gMenuWindow
@@ -5324,7 +5324,7 @@ _080ADDBC:
movs r5, 0
bl sub_80AF668
bl sub_80AF138
- ldr r0, _080ADE34 @ =gUnknown_02038695
+ ldr r0, _080ADE34 @ =gContestPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -5366,7 +5366,7 @@ _080ADE24: .4byte gUnknown_030042A0
_080ADE28: .4byte gUnknown_03004280
_080ADE2C: .4byte 0x02019260
_080ADE30: .4byte gUnknown_02038680
-_080ADE34: .4byte gUnknown_02038695
+_080ADE34: .4byte gContestPlayerMonIndex
_080ADE38: .4byte gUnknown_03005D28
_080ADE3C: .4byte gRngValue
_080ADE40: .4byte gStringVar4
@@ -5648,7 +5648,7 @@ sub_80AE054: @ 80AE054
ands r0, r1
cmp r0, 0
bne _080AE068
- ldr r1, _080AE070 @ =gUnknown_02038695
+ ldr r1, _080AE070 @ =gContestPlayerMonIndex
movs r0, 0x3
strb r0, [r1]
_080AE068:
@@ -5656,13 +5656,13 @@ _080AE068:
bx r0
.align 2, 0
_080AE06C: .4byte gUnknown_0203869A
-_080AE070: .4byte gUnknown_02038695
+_080AE070: .4byte gContestPlayerMonIndex
thumb_func_end sub_80AE054
thumb_func_start sub_80AE074
sub_80AE074: @ 80AE074
push {lr}
- ldr r0, _080AE088 @ =gUnknown_02038695
+ ldr r0, _080AE088 @ =gContestPlayerMonIndex
ldr r1, _080AE08C @ =gUnknown_0203869B
ldrb r0, [r0]
ldrb r1, [r1]
@@ -5671,7 +5671,7 @@ sub_80AE074: @ 80AE074
movs r0, 0
b _080AE092
.align 2, 0
-_080AE088: .4byte gUnknown_02038695
+_080AE088: .4byte gContestPlayerMonIndex
_080AE08C: .4byte gUnknown_0203869B
_080AE090:
movs r0, 0x1
@@ -5708,7 +5708,7 @@ sub_80AE098: @ 80AE098
mov r0, sp
strb r2, [r0, 0x7]
_080AE0CE:
- ldr r5, _080AE0F8 @ =gUnknown_02038695
+ ldr r5, _080AE0F8 @ =gContestPlayerMonIndex
ldrb r0, [r5]
lsls r0, 6
ldr r4, _080AE0FC @ =gUnknown_0203857D
@@ -5727,7 +5727,7 @@ _080AE0CE:
.align 2, 0
_080AE0F0: .4byte gSaveBlock2
_080AE0F4: .4byte gUnknown_0203869A
-_080AE0F8: .4byte gUnknown_02038695
+_080AE0F8: .4byte gContestPlayerMonIndex
_080AE0FC: .4byte gUnknown_0203857D
_080AE100:
ldrb r0, [r5]
@@ -5736,8 +5736,8 @@ _080AE100:
movs r1, 0xD9
_080AE108:
strb r1, [r0, 0x8]
- ldr r5, _080AE17C @ =gUnknown_02038570
- ldr r4, _080AE180 @ =gUnknown_02038695
+ ldr r5, _080AE17C @ =gContestMons
+ ldr r4, _080AE180 @ =gContestPlayerMonIndex
ldrb r0, [r4]
lsls r0, 6
adds r1, r5, 0
@@ -5788,8 +5788,8 @@ _080AE108:
strb r0, [r1, 0xA]
b _080AE19A
.align 2, 0
-_080AE17C: .4byte gUnknown_02038570
-_080AE180: .4byte gUnknown_02038695
+_080AE17C: .4byte gContestMons
+_080AE180: .4byte gContestPlayerMonIndex
_080AE184: .4byte gPlayerParty
_080AE188: .4byte gUnknown_0203869A
_080AE18C:
@@ -5801,10 +5801,10 @@ _080AE18C:
mov r0, sp
strb r2, [r0, 0xA]
_080AE19A:
- ldr r5, _080AE2C4 @ =gUnknown_02038695
+ ldr r5, _080AE2C4 @ =gContestPlayerMonIndex
ldrb r0, [r5]
lsls r0, 6
- ldr r1, _080AE2C8 @ =gUnknown_02038570 + 0x2
+ ldr r1, _080AE2C8 @ =gContestMons + 0x2
mov r8, r1
add r0, r8
mov r1, sp
@@ -5936,8 +5936,8 @@ _080AE19A:
adds r3, 0x14
b _080AE31E
.align 2, 0
-_080AE2C4: .4byte gUnknown_02038695
-_080AE2C8: .4byte gUnknown_02038570 + 0x2
+_080AE2C4: .4byte gContestPlayerMonIndex
+_080AE2C8: .4byte gContestMons + 0x2
_080AE2CC: .4byte gPlayerParty
_080AE2D0:
cmp r2, 0xFF
@@ -6010,8 +6010,8 @@ _080AE342:
ble _080AE34C
movs r7, 0xFF
_080AE34C:
- ldr r2, _080AE390 @ =gUnknown_02038570
- ldr r1, _080AE394 @ =gUnknown_02038695
+ ldr r2, _080AE390 @ =gContestMons
+ ldr r1, _080AE394 @ =gContestPlayerMonIndex
ldrb r0, [r1]
lsls r0, 6
adds r0, r2
@@ -6044,8 +6044,8 @@ _080AE34C:
pop {r0}
bx r0
.align 2, 0
-_080AE390: .4byte gUnknown_02038570
-_080AE394: .4byte gUnknown_02038695
+_080AE390: .4byte gContestMons
+_080AE394: .4byte gContestPlayerMonIndex
thumb_func_end sub_80AE098
thumb_func_start sub_80AE398
@@ -6125,7 +6125,7 @@ _080AE412:
bl __modsi3
lsls r0, 16
lsrs r0, 16
- ldr r1, _080AE474 @ =gUnknown_02038570
+ ldr r1, _080AE474 @ =gContestMons
lsls r2, r5, 6
adds r2, r1
mov r1, sp
@@ -6164,7 +6164,7 @@ _080AE454:
bx r0
.align 2, 0
_080AE470: .4byte gUnknown_083C9408
-_080AE474: .4byte gUnknown_02038570
+_080AE474: .4byte gContestMons
_080AE478: .4byte gUnknown_02038694
thumb_func_end sub_80AE398
@@ -6499,7 +6499,7 @@ sub_80AE6E4: @ 80AE6E4
strb r0, [r3, 0x2]
adds r3, 0x3
lsls r1, r4, 6
- ldr r0, _080AE760 @ =gUnknown_02038570 + 0x2
+ ldr r0, _080AE760 @ =gContestMons + 0x2
adds r1, r0
adds r0, r3, 0
bl sub_80AE598
@@ -6541,7 +6541,7 @@ sub_80AE6E4: @ 80AE6E4
bx r0
.align 2, 0
_080AE75C: .4byte gUnknown_020238CC
-_080AE760: .4byte gUnknown_02038570 + 0x2
+_080AE760: .4byte gContestMons + 0x2
_080AE764: .4byte gUnknown_03004210
_080AE768: .4byte gUnknown_02038696
_080AE76C: .4byte gUnknown_083CA308
@@ -6571,7 +6571,7 @@ _080AE78C:
.4byte _080AE7E0
.4byte _080AE7FC
_080AE7A0:
- ldr r0, _080AE7B4 @ =gUnknown_02038570
+ ldr r0, _080AE7B4 @ =gContestMons
lsls r2, 6
adds r1, r2, r0
adds r3, r1, 0
@@ -6582,9 +6582,9 @@ _080AE7A0:
adds r1, 0x27
b _080AE80E
.align 2, 0
-_080AE7B4: .4byte gUnknown_02038570
+_080AE7B4: .4byte gContestMons
_080AE7B8:
- ldr r0, _080AE7CC @ =gUnknown_02038570
+ ldr r0, _080AE7CC @ =gContestMons
lsls r2, 6
adds r1, r2, r0
adds r3, r1, 0
@@ -6595,18 +6595,18 @@ _080AE7B8:
adds r1, 0x28
b _080AE80E
.align 2, 0
-_080AE7CC: .4byte gUnknown_02038570
+_080AE7CC: .4byte gContestMons
_080AE7D0:
- ldr r1, _080AE7DC @ =gUnknown_02038570
+ ldr r1, _080AE7DC @ =gContestMons
lsls r2, 6
adds r3, r2, r1
adds r0, r3, 0
adds r0, 0x28
b _080AE7EA
.align 2, 0
-_080AE7DC: .4byte gUnknown_02038570
+_080AE7DC: .4byte gContestMons
_080AE7E0:
- ldr r1, _080AE7F8 @ =gUnknown_02038570
+ ldr r1, _080AE7F8 @ =gContestMons
lsls r2, 6
adds r3, r2, r1
adds r0, r3, 0
@@ -6620,9 +6620,9 @@ _080AE7EA:
adds r0, r1, 0
b _080AE810
.align 2, 0
-_080AE7F8: .4byte gUnknown_02038570
+_080AE7F8: .4byte gContestMons
_080AE7FC:
- ldr r0, _080AE828 @ =gUnknown_02038570
+ ldr r0, _080AE828 @ =gContestMons
lsls r2, 6
adds r1, r2, r0
adds r3, r1, 0
@@ -6647,7 +6647,7 @@ _080AE810:
pop {r1}
bx r1
.align 2, 0
-_080AE828: .4byte gUnknown_02038570
+_080AE828: .4byte gContestMons
thumb_func_end sub_80AE770
thumb_func_start sub_80AE82C
@@ -6767,9 +6767,9 @@ unref_sub_80AE908: @ 80AE908
mov r4, r8
push {r4-r6}
sub sp, 0x8
- ldr r0, _080AE9D4 @ =gUnknown_02038570
+ ldr r0, _080AE9D4 @ =gContestMons
mov r9, r0
- ldr r1, _080AE9D8 @ =gUnknown_02038695
+ ldr r1, _080AE9D8 @ =gContestPlayerMonIndex
mov r8, r1
ldrb r0, [r1]
lsls r0, 6
@@ -6859,8 +6859,8 @@ unref_sub_80AE908: @ 80AE908
pop {r1}
bx r1
.align 2, 0
-_080AE9D4: .4byte gUnknown_02038570
-_080AE9D8: .4byte gUnknown_02038695
+_080AE9D4: .4byte gContestMons
+_080AE9D8: .4byte gContestPlayerMonIndex
_080AE9DC: .4byte gMonFrontPicTable
_080AE9E0: .4byte gMonFrontPicCoords
_080AE9E4: .4byte gUnknown_081FAF4C
@@ -7856,7 +7856,7 @@ sub_80AF15C: @ 80AF15C
movs r0, 0
b _080AF1AA
_080AF174:
- ldr r0, _080AF190 @ =gUnknown_02038695
+ ldr r0, _080AF190 @ =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r4, r0
beq _080AF198
@@ -7864,15 +7864,15 @@ _080AF174:
bl sub_81288F4
bl sub_8128944
lsls r0, 24
- ldr r2, _080AF194 @ =gUnknown_02038570
+ ldr r2, _080AF194 @ =gContestMons
lsrs r0, 23
lsls r1, r4, 6
b _080AF1A2
.align 2, 0
-_080AF190: .4byte gUnknown_02038695
-_080AF194: .4byte gUnknown_02038570
+_080AF190: .4byte gContestPlayerMonIndex
+_080AF194: .4byte gContestMons
_080AF198:
- ldr r2, _080AF1B0 @ =gUnknown_02038570
+ ldr r2, _080AF1B0 @ =gContestMons
ldr r0, _080AF1B4 @ =0x02019204
ldrb r0, [r0]
lsls r0, 1
@@ -7887,7 +7887,7 @@ _080AF1AA:
pop {r1}
bx r1
.align 2, 0
-_080AF1B0: .4byte gUnknown_02038570
+_080AF1B0: .4byte gContestMons
_080AF1B4: .4byte 0x02019204
thumb_func_end sub_80AF15C
@@ -8464,7 +8464,7 @@ unref_sub_80AF5D0: @ 80AF5D0
lsrs r0, 24
lsls r1, 24
lsrs r3, r1, 24
- ldr r1, _080AF5E8 @ =gUnknown_02038695
+ ldr r1, _080AF5E8 @ =gContestPlayerMonIndex
ldrb r1, [r1]
cmp r0, r1
beq _080AF600
@@ -8472,7 +8472,7 @@ _080AF5E2:
movs r0, 0x1
b _080AF626
.align 2, 0
-_080AF5E8: .4byte gUnknown_02038695
+_080AF5E8: .4byte gContestPlayerMonIndex
_080AF5EC:
ldrb r0, [r4, 0x6]
movs r1, 0x1
@@ -12550,7 +12550,7 @@ sub_80B146C: @ 80B146C
lsrs r5, r1, 24
ldr r0, _080B14C8 @ =gStringVar1
lsls r1, r4, 6
- ldr r2, _080B14CC @ =gUnknown_02038570 + 0x2
+ ldr r2, _080B14CC @ =gContestMons + 0x2
adds r1, r2
bl StringCopy
ldr r0, _080B14D0 @ =gStringVar2
@@ -12586,7 +12586,7 @@ sub_80B146C: @ 80B146C
b _080B1538
.align 2, 0
_080B14C8: .4byte gStringVar1
-_080B14CC: .4byte gUnknown_02038570 + 0x2
+_080B14CC: .4byte gContestMons + 0x2
_080B14D0: .4byte gStringVar2
_080B14D4: .4byte 0x02019260
_080B14D8: .4byte gMoveNames
@@ -15022,7 +15022,7 @@ sub_80B2790: @ 80B2790
bl sub_80B2760
lsls r0, 16
lsrs r5, r0, 16
- ldr r1, _080B27F4 @ =gUnknown_02038570
+ ldr r1, _080B27F4 @ =gContestMons
lsls r0, r6, 6
adds r0, r1
ldrh r0, [r0]
@@ -15056,7 +15056,7 @@ _080B27D0:
b _080B28BE
.align 2, 0
_080B27F0: .4byte 0x02019260
-_080B27F4: .4byte gUnknown_02038570
+_080B27F4: .4byte gContestMons
_080B27F8: .4byte gUnknown_02024E84
_080B27FC:
cmp r5, 0x82
@@ -15106,7 +15106,7 @@ _080B2848:
ldr r4, _080B2878 @ =0x02019260
adds r0, r4
ldrb r5, [r0, 0x1B]
- ldr r6, _080B287C @ =gUnknown_02038570
+ ldr r6, _080B287C @ =gContestMons
lsls r5, 6
adds r0, r5, r6
ldrh r0, [r0]
@@ -15124,7 +15124,7 @@ _080B2848:
b _080B28BE
.align 2, 0
_080B2878: .4byte 0x02019260
-_080B287C: .4byte gUnknown_02038570
+_080B287C: .4byte gContestMons
_080B2880:
ldr r1, _080B2888 @ =gUnknown_0202F7BE
movs r0, 0xFF
@@ -15196,7 +15196,7 @@ sub_80B28F0: @ 80B28F0
lsrs r4, 24
ldr r6, _080B2924 @ =0x02019348
strb r4, [r6, 0x5]
- ldr r5, _080B2928 @ =gUnknown_02038570
+ ldr r5, _080B2928 @ =gContestMons
lsls r4, 6
adds r0, r4, r5
ldrh r0, [r0]
@@ -15216,7 +15216,7 @@ sub_80B28F0: @ 80B28F0
bx r0
.align 2, 0
_080B2924: .4byte 0x02019348
-_080B2928: .4byte gUnknown_02038570
+_080B2928: .4byte gContestMons
thumb_func_end sub_80B28F0
thumb_func_start sub_80B292C
@@ -15391,7 +15391,7 @@ _080B2AB6:
mov r0, r9
cmp r0, 0xFF
bne _080B2AD0
- ldr r0, _080B2ACC @ =gUnknown_02038695
+ ldr r0, _080B2ACC @ =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r6, r0
beq _080B2AD0
@@ -15399,7 +15399,7 @@ _080B2AB6:
b _080B2C38
.align 2, 0
_080B2AC8: .4byte gUnknown_02038690
-_080B2ACC: .4byte gUnknown_02038695
+_080B2ACC: .4byte gContestPlayerMonIndex
_080B2AD0:
ldr r0, _080B2AE4 @ =gScriptContestCategory
ldrh r0, [r0]
@@ -15450,7 +15450,7 @@ _080B2B16:
ldr r0, _080B2B9C @ =0x00002dfc
adds r1, r2, r0
adds r1, r4, r1
- ldr r5, _080B2BA0 @ =gUnknown_02038570
+ ldr r5, _080B2BA0 @ =gContestMons
lsls r6, 6
adds r0, r5, 0
adds r0, 0x38
@@ -15501,7 +15501,7 @@ _080B2B16:
.align 2, 0
_080B2B98: .4byte gSaveBlock1
_080B2B9C: .4byte 0x00002dfc
-_080B2BA0: .4byte gUnknown_02038570
+_080B2BA0: .4byte gContestMons
_080B2BA4: .4byte 0x00002e04
_080B2BA8: .4byte 0x00002e07
_080B2BAC: .4byte 0x00002e12
@@ -15516,7 +15516,7 @@ _080B2BB8:
_080B2BC0: .4byte 0x00002e06
_080B2BC4:
ldr r5, _080B2C14 @ =0x02015de0
- ldr r2, _080B2C18 @ =gUnknown_02038570
+ ldr r2, _080B2C18 @ =gContestMons
lsls r4, r6, 6
adds r0, r2, 0
adds r0, 0x38
@@ -15555,7 +15555,7 @@ _080B2BC4:
b _080B2C32
.align 2, 0
_080B2C14: .4byte 0x02015de0
-_080B2C18: .4byte gUnknown_02038570
+_080B2C18: .4byte gContestMons
_080B2C1C: .4byte gUnknown_0203869A
_080B2C20: .4byte gLinkPlayers + 0x8
_080B2C24:
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index 1e5497570..a947110ec 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -34,7 +34,7 @@ _08128910:
adds r0, r2, 0
adds r0, 0x40
strb r1, [r0]
- ldr r1, _08128940 @ =gUnknown_02038570
+ ldr r1, _08128940 @ =gContestMons
ldrb r0, [r3]
lsls r0, 6
adds r1, 0x18
@@ -46,7 +46,7 @@ _08128910:
bx r0
.align 2, 0
_0812893C: .4byte 0x020192e4
-_08128940: .4byte gUnknown_02038570
+_08128940: .4byte gContestMons
thumb_func_end sub_81288F4
thumb_func_start sub_8128944
@@ -1403,7 +1403,7 @@ _081292E0:
thumb_func_start contest_ai_get_move_excitement
contest_ai_get_move_excitement: @ 81292E4
push {r4,lr}
- ldr r2, _08129318 @ =gUnknown_02038570
+ ldr r2, _08129318 @ =gContestMons
ldr r4, _0812931C @ =0x020192e4
ldrb r1, [r4, 0x4]
lsls r1, 1
@@ -1427,7 +1427,7 @@ contest_ai_get_move_excitement: @ 81292E4
pop {r0}
bx r0
.align 2, 0
-_08129318: .4byte gUnknown_02038570
+_08129318: .4byte gContestMons
_0812931C: .4byte 0x020192e4
_08129320: .4byte gAIScriptPtr
thumb_func_end contest_ai_get_move_excitement
@@ -1582,7 +1582,7 @@ _0812942C:
thumb_func_start contest_ai_get_move_effect
contest_ai_get_move_effect: @ 8129434
- ldr r2, _08129460 @ =gUnknown_02038570
+ ldr r2, _08129460 @ =gContestMons
ldr r3, _08129464 @ =0x020192e4
ldrb r1, [r3, 0x4]
lsls r1, 1
@@ -1605,7 +1605,7 @@ contest_ai_get_move_effect: @ 8129434
str r0, [r1]
bx lr
.align 2, 0
-_08129460: .4byte gUnknown_02038570
+_08129460: .4byte gContestMons
_08129464: .4byte 0x020192e4
_08129468: .4byte gContestMoves
_0812946C: .4byte gAIScriptPtr
@@ -1683,7 +1683,7 @@ _081294EC:
thumb_func_start contest_ai_get_move_effect_type
contest_ai_get_move_effect_type: @ 81294F0
- ldr r2, _08129524 @ =gUnknown_02038570
+ ldr r2, _08129524 @ =gContestMons
ldr r3, _08129528 @ =0x020192e4
ldrb r1, [r3, 0x4]
lsls r1, 1
@@ -1710,7 +1710,7 @@ contest_ai_get_move_effect_type: @ 81294F0
str r0, [r1]
bx lr
.align 2, 0
-_08129524: .4byte gUnknown_02038570
+_08129524: .4byte gContestMons
_08129528: .4byte 0x020192e4
_0812952C: .4byte gContestEffects
_08129530: .4byte gContestMoves
@@ -1790,7 +1790,7 @@ _081295B4:
thumb_func_start contest_ai_check_move_has_highest_appeal
contest_ai_check_move_has_highest_appeal: @ 81295B8
push {r4-r7,lr}
- ldr r2, _08129610 @ =gUnknown_02038570
+ ldr r2, _08129610 @ =gContestMons
ldr r3, _08129614 @ =0x020192e4
ldrb r0, [r3, 0x4]
lsls r0, 1
@@ -1837,7 +1837,7 @@ _08129608:
movs r0, 0x1
b _08129626
.align 2, 0
-_08129610: .4byte gUnknown_02038570
+_08129610: .4byte gContestMons
_08129614: .4byte 0x020192e4
_08129618: .4byte gContestEffects
_0812961C: .4byte gContestMoves
@@ -1896,7 +1896,7 @@ _08129678: .4byte gAIScriptPtr
thumb_func_start sub_812967C
sub_812967C: @ 812967C
push {r4-r7,lr}
- ldr r2, _081296D4 @ =gUnknown_02038570
+ ldr r2, _081296D4 @ =gContestMons
ldr r3, _081296D8 @ =0x020192e4
ldrb r0, [r3, 0x4]
lsls r0, 1
@@ -1943,7 +1943,7 @@ _081296CC:
movs r0, 0x1
b _081296EA
.align 2, 0
-_081296D4: .4byte gUnknown_02038570
+_081296D4: .4byte gContestMons
_081296D8: .4byte 0x020192e4
_081296DC: .4byte gContestEffects
_081296E0: .4byte gContestMoves
@@ -2002,7 +2002,7 @@ _0812973C: .4byte gAIScriptPtr
thumb_func_start sub_8129740
sub_8129740: @ 8129740
push {r4,lr}
- ldr r2, _08129784 @ =gUnknown_02038570
+ ldr r2, _08129784 @ =gContestMons
ldr r4, _08129788 @ =0x020192e4
ldrb r1, [r4, 0x4]
lsls r1, 1
@@ -2035,7 +2035,7 @@ sub_8129740: @ 8129740
pop {r0}
bx r0
.align 2, 0
-_08129784: .4byte gUnknown_02038570
+_08129784: .4byte gContestMons
_08129788: .4byte 0x020192e4
_0812978C: .4byte gContestEffects
_08129790: .4byte gContestMoves
@@ -2185,7 +2185,7 @@ _08129894:
thumb_func_start sub_8129898
sub_8129898: @ 8129898
push {r4,lr}
- ldr r2, _081298DC @ =gUnknown_02038570
+ ldr r2, _081298DC @ =gContestMons
ldr r4, _081298E0 @ =0x020192e4
ldrb r1, [r4, 0x4]
lsls r1, 1
@@ -2218,7 +2218,7 @@ sub_8129898: @ 8129898
pop {r0}
bx r0
.align 2, 0
-_081298DC: .4byte gUnknown_02038570
+_081298DC: .4byte gContestMons
_081298E0: .4byte 0x020192e4
_081298E4: .4byte gContestEffects
_081298E8: .4byte gContestMoves
@@ -2368,7 +2368,7 @@ _081299EC:
thumb_func_start contest_ai_get_move_used_count
contest_ai_get_move_used_count: @ 81299F0
push {r4,lr}
- ldr r3, _08129A20 @ =gUnknown_02038570
+ ldr r3, _08129A20 @ =gContestMons
ldr r4, _08129A24 @ =0x020192e4
ldrb r0, [r4, 0x4]
lsls r0, 1
@@ -2392,7 +2392,7 @@ contest_ai_get_move_used_count: @ 81299F0
movs r0, 0
b _08129A30
.align 2, 0
-_08129A20: .4byte gUnknown_02038570
+_08129A20: .4byte gContestMons
_08129A24: .4byte 0x020192e4
_08129A28:
ldrb r0, [r0, 0xB]
@@ -2558,7 +2558,7 @@ contest_ai_check_combo_starter: @ 8129B44
mov r7, r8
push {r7}
movs r5, 0
- ldr r3, _08129BAC @ =gUnknown_02038570
+ ldr r3, _08129BAC @ =gContestMons
ldr r2, _08129BB0 @ =0x020192e4
ldrb r1, [r2, 0x4]
lsls r1, 1
@@ -2610,7 +2610,7 @@ _08129B96:
pop {r0}
bx r0
.align 2, 0
-_08129BAC: .4byte gUnknown_02038570
+_08129BAC: .4byte gContestMons
_08129BB0: .4byte 0x020192e4
_08129BB4: .4byte gAIScriptPtr
thumb_func_end contest_ai_check_combo_starter
@@ -2697,7 +2697,7 @@ contest_ai_check_combo_finisher: @ 8129C40
mov r7, r8
push {r7}
movs r5, 0
- ldr r3, _08129CA8 @ =gUnknown_02038570
+ ldr r3, _08129CA8 @ =gContestMons
ldr r2, _08129CAC @ =0x020192e4
ldrb r1, [r2, 0x4]
lsls r1, 1
@@ -2748,7 +2748,7 @@ _08129C90:
pop {r0}
bx r0
.align 2, 0
-_08129CA8: .4byte gUnknown_02038570
+_08129CA8: .4byte gContestMons
_08129CAC: .4byte 0x020192e4
_08129CB0: .4byte gAIScriptPtr
thumb_func_end contest_ai_check_combo_finisher
@@ -2833,7 +2833,7 @@ _08129D38: .4byte gAIScriptPtr
contest_ai_check_would_finish_combo: @ 8129D3C
push {r4,r5,lr}
movs r5, 0
- ldr r3, _08129D8C @ =gUnknown_02038570
+ ldr r3, _08129D8C @ =gContestMons
ldr r4, _08129D90 @ =0x020192e4
ldrb r0, [r4, 0x4]
lsls r0, 1
@@ -2872,7 +2872,7 @@ _08129D7A:
pop {r0}
bx r0
.align 2, 0
-_08129D8C: .4byte gUnknown_02038570
+_08129D8C: .4byte gContestMons
_08129D90: .4byte 0x020192e4
_08129D94: .4byte gAIScriptPtr
thumb_func_end contest_ai_check_would_finish_combo
@@ -5166,7 +5166,7 @@ sub_812ADD8: @ 812ADD8
lsls r0, 8
orrs r4, r0
movs r3, 0
- ldr r0, _0812AE0C @ =gUnknown_02038570
+ ldr r0, _0812AE0C @ =gContestMons
mov r12, r0
ldr r5, _0812AE10 @ =0x020192e4
adds r0, r5, 0
@@ -5183,7 +5183,7 @@ sub_812ADD8: @ 812ADD8
b _0812AE2E
.align 2, 0
_0812AE08: .4byte gAIScriptPtr
-_0812AE0C: .4byte gUnknown_02038570
+_0812AE0C: .4byte gContestMons
_0812AE10: .4byte 0x020192e4
_0812AE14:
adds r3, 0x1
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 4149db9dc..af8d1742e 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -277,7 +277,7 @@ sub_80C226C: @ 80C226C
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080C2288 @ =gUnknown_02038695
+ ldr r0, _080C2288 @ =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r5, r0
bne _080C2294
@@ -287,7 +287,7 @@ sub_80C226C: @ 80C226C
adds r2, r0, 0
b _080C2296
.align 2, 0
-_080C2288: .4byte gUnknown_02038695
+_080C2288: .4byte gContestPlayerMonIndex
_080C228C: .4byte gUnknown_020238CC
_080C2290: .4byte gUnknown_083D17DC
_080C2294:
@@ -301,7 +301,7 @@ _080C2296:
strb r0, [r2, 0x2]
adds r2, 0x3
lsls r6, r5, 6
- ldr r7, _080C22EC @ =gUnknown_02038570 + 0x2
+ ldr r7, _080C22EC @ =gContestMons + 0x2
adds r1, r6, r7
adds r0, r2, 0
bl StringCopy
@@ -332,7 +332,7 @@ _080C2296:
b _080C230A
.align 2, 0
_080C22E8: .4byte gUnknown_020238CC
-_080C22EC: .4byte gUnknown_02038570 + 0x2
+_080C22EC: .4byte gContestMons + 0x2
_080C22F0: .4byte gUnknown_083D17E0
_080C22F4: .4byte gUnknown_0203869A
_080C22F8: .4byte gLinkPlayers + 0x8
@@ -1209,7 +1209,7 @@ _080C2A04:
bl StringCopy
_080C2A10:
ldr r0, _080C2A58 @ =gStringVar2
- ldr r1, _080C2A5C @ =gUnknown_02038570 + 0x2
+ ldr r1, _080C2A5C @ =gContestMons + 0x2
adds r1, r4, r1
bl StringCopy
ldr r1, _080C2A60 @ =gContestText_PokeWon
@@ -1241,7 +1241,7 @@ _080C2A4A:
.align 2, 0
_080C2A54: .4byte gUnknown_0203857D
_080C2A58: .4byte gStringVar2
-_080C2A5C: .4byte gUnknown_02038570 + 0x2
+_080C2A5C: .4byte gContestMons + 0x2
_080C2A60: .4byte gContestText_PokeWon
_080C2A64: .4byte 0x02018000
_080C2A68: .4byte 0x0000ffff
@@ -1315,7 +1315,7 @@ _080C2ADC:
ldrb r0, [r3]
lsls r4, r7, 2
mov r10, r4
- ldr r2, _080C2BD4 @ =gUnknown_02038570
+ ldr r2, _080C2BD4 @ =gContestMons
ldr r5, _080C2BD8 @ =gMonFrontPicTable
mov r12, r5
ldr r4, _080C2BDC @ =gMonFrontPicCoords
@@ -1418,7 +1418,7 @@ _080C2BC4: .4byte gUnknown_030042C4
_080C2BC8: .4byte gUnknown_03004240
_080C2BCC: .4byte 0x00005050
_080C2BD0: .4byte gUnknown_02038690
-_080C2BD4: .4byte gUnknown_02038570
+_080C2BD4: .4byte gContestMons
_080C2BD8: .4byte gMonFrontPicTable
_080C2BDC: .4byte gMonFrontPicCoords
_080C2BE0: .4byte gUnknown_081FAF4C
@@ -1593,7 +1593,7 @@ sub_80C2D1C: @ 80C2D1C
lsls r6, r7, 2
cmp r0, 0
bne _080C2D5A
- ldr r5, _080C2D74 @ =gUnknown_02038570
+ ldr r5, _080C2D74 @ =gContestMons
movs r4, 0x3
_080C2D42:
ldrh r0, [r5]
@@ -1620,7 +1620,7 @@ _080C2D66:
.align 2, 0
_080C2D6C: .4byte gMain
_080C2D70: .4byte gUnknown_0203869A
-_080C2D74: .4byte gUnknown_02038570
+_080C2D74: .4byte gContestMons
_080C2D78: .4byte gTasks
_080C2D7C: .4byte sub_80C2D80
thumb_func_end sub_80C2D1C
@@ -1707,7 +1707,7 @@ sub_80C2E14: @ 80C2E14
lsls r5, 24
lsrs r5, 24
ldr r1, _080C2E80 @ =gUnknown_02038690
- ldr r0, _080C2E84 @ =gUnknown_02038695
+ ldr r0, _080C2E84 @ =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -1750,7 +1750,7 @@ sub_80C2E14: @ 80C2E14
bx r0
.align 2, 0
_080C2E80: .4byte gUnknown_02038690
-_080C2E84: .4byte gUnknown_02038695
+_080C2E84: .4byte gContestPlayerMonIndex
_080C2E88: .4byte gScriptContestRank
_080C2E8C: .4byte 0x02000000
_080C2E90: .4byte 0x00015ddf
@@ -2058,7 +2058,7 @@ sub_80C30D4: @ 80C30D4
lsls r1, 24
lsrs r6, r1, 24
movs r5, 0
- ldr r4, _080C3108 @ =gUnknown_02038570
+ ldr r4, _080C3108 @ =gContestMons
_080C30E4:
ldrh r0, [r4]
lsls r1, r5, 24
@@ -2077,7 +2077,7 @@ _080C30E4:
pop {r0}
bx r0
.align 2, 0
-_080C3108: .4byte gUnknown_02038570
+_080C3108: .4byte gContestMons
thumb_func_end sub_80C30D4
thumb_func_start sub_80C310C
@@ -2088,7 +2088,7 @@ sub_80C310C: @ 80C310C
movs r5, 0xA0
lsls r5, 16
_080C3116:
- ldr r1, _080C3150 @ =gUnknown_02038570
+ ldr r1, _080C3150 @ =gContestMons
lsls r0, r4, 6
adds r0, r1
ldrh r0, [r0]
@@ -2115,7 +2115,7 @@ _080C3116:
bx r0
.align 2, 0
_080C314C: .4byte gMonIconPaletteIndices
-_080C3150: .4byte gUnknown_02038570
+_080C3150: .4byte gContestMons
_080C3154: .4byte gMonIconPalettes
thumb_func_end sub_80C310C
@@ -3813,7 +3813,7 @@ sub_80C3E60: @ 80C3E60
adds r1, r2
strh r4, [r1, 0x8]
strh r5, [r1, 0xA]
- ldr r0, _080C3EA0 @ =gUnknown_02038570
+ ldr r0, _080C3EA0 @ =gContestMons
lsls r4, 6
adds r4, r0
ldrh r0, [r4]
@@ -3824,7 +3824,7 @@ sub_80C3E60: @ 80C3E60
.align 2, 0
_080C3E98: .4byte sub_80C3EA4
_080C3E9C: .4byte gTasks
-_080C3EA0: .4byte gUnknown_02038570
+_080C3EA0: .4byte gContestMons
thumb_func_end sub_80C3E60
thumb_func_start sub_80C3EA4
@@ -3852,7 +3852,7 @@ sub_80C3EA4: @ 80C3EA4
strh r0, [r4, 0x1C]
ldrh r0, [r4, 0xC]
ldrb r2, [r4, 0x1E]
- ldr r1, _080C3EFC @ =gUnknown_02038570
+ ldr r1, _080C3EFC @ =gContestMons
lsls r3, r5, 6
adds r1, 0x38
adds r3, r1
@@ -3872,7 +3872,7 @@ _080C3EEE:
bx r0
.align 2, 0
_080C3EF8: .4byte gTasks
-_080C3EFC: .4byte gUnknown_02038570
+_080C3EFC: .4byte gContestMons
thumb_func_end sub_80C3EA4
thumb_func_start sub_80C3F00
@@ -4638,7 +4638,7 @@ sub_80C44C0: @ 80C44C0
push {r4-r7,lr}
sub sp, 0x4
ldr r1, _080C44E8 @ =gUnknown_02038690
- ldr r0, _080C44EC @ =gUnknown_02038695
+ ldr r0, _080C44EC @ =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -4659,7 +4659,7 @@ _080C44DE:
mov pc, r0
.align 2, 0
_080C44E8: .4byte gUnknown_02038690
-_080C44EC: .4byte gUnknown_02038695
+_080C44EC: .4byte gContestPlayerMonIndex
_080C44F0: .4byte gScriptContestCategory
_080C44F4: .4byte _080C44F8
.align 2, 0
@@ -4867,7 +4867,7 @@ sub_80C4698: @ 80C4698
lsls r1, 24
lsrs r4, r1, 24
lsls r1, r4, 6
- ldr r0, _080C46E0 @ =gUnknown_02038570 + 0x2
+ ldr r0, _080C46E0 @ =gContestMons + 0x2
adds r1, r0
adds r0, r5, 0
bl StringCopy
@@ -4897,7 +4897,7 @@ _080C46DA:
pop {r0}
bx r0
.align 2, 0
-_080C46E0: .4byte gUnknown_02038570 + 0x2
+_080C46E0: .4byte gContestMons + 0x2
_080C46E4: .4byte gUnknown_0203869A
_080C46E8: .4byte gLinkPlayers
thumb_func_end sub_80C4698
@@ -5182,7 +5182,7 @@ _080C48F0: .4byte sub_80C489C
thumb_func_start sub_80C48F4
sub_80C48F4: @ 80C48F4
ldr r2, _080C4908 @ =gSpecialVar_0x8004
- ldr r1, _080C490C @ =gUnknown_02038570
+ ldr r1, _080C490C @ =gContestMons
ldr r0, _080C4910 @ =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 6
@@ -5192,7 +5192,7 @@ sub_80C48F4: @ 80C48F4
bx lr
.align 2, 0
_080C4908: .4byte gSpecialVar_0x8004
-_080C490C: .4byte gUnknown_02038570
+_080C490C: .4byte gContestMons
_080C4910: .4byte gSpecialVar_0x8006
thumb_func_end sub_80C48F4
@@ -5244,13 +5244,13 @@ _080C4968: .4byte sub_80C4914
thumb_func_start sub_80C496C
sub_80C496C: @ 80C496C
ldr r0, _080C4978 @ =gSpecialVar_0x8004
- ldr r1, _080C497C @ =gUnknown_02038695
+ ldr r1, _080C497C @ =gContestPlayerMonIndex
ldrb r1, [r1]
strh r1, [r0]
bx lr
.align 2, 0
_080C4978: .4byte gSpecialVar_0x8004
-_080C497C: .4byte gUnknown_02038695
+_080C497C: .4byte gContestPlayerMonIndex
thumb_func_end sub_80C496C
thumb_func_start sub_80C4980
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s
index b06a88faf..bef1d4402 100644
--- a/asm/contest_link_80C857C.s
+++ b/asm/contest_link_80C857C.s
@@ -145,7 +145,7 @@ sub_80C8660: @ 80C8660
cmp r0, 0
beq _080C868E
bl GetMultiplayerId
- ldr r1, _080C8698 @ =gUnknown_02038695
+ ldr r1, _080C8698 @ =gContestPlayerMonIndex
strb r0, [r1]
bl GetLinkPlayerCount
lsls r0, 24
@@ -163,7 +163,7 @@ _080C868E:
bx r0
.align 2, 0
_080C8694: .4byte gReceivedRemoteLinkPlayers
-_080C8698: .4byte gUnknown_02038695
+_080C8698: .4byte gContestPlayerMonIndex
_080C869C: .4byte gUnknown_0203869A
thumb_func_end sub_80C8660
@@ -290,10 +290,10 @@ _080C876C:
b _080C8896
_080C8782:
ldr r0, _080C879C @ =gBlockSendBuffer
- ldr r1, _080C87A0 @ =gUnknown_02038695
+ ldr r1, _080C87A0 @ =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
- ldr r2, _080C87A4 @ =gUnknown_02038570
+ ldr r2, _080C87A4 @ =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@@ -302,14 +302,14 @@ _080C8782:
b _080C87BA
.align 2, 0
_080C879C: .4byte gBlockSendBuffer
-_080C87A0: .4byte gUnknown_02038695
-_080C87A4: .4byte gUnknown_02038570
+_080C87A0: .4byte gContestPlayerMonIndex
+_080C87A4: .4byte gContestMons
_080C87A8:
ldr r0, _080C87C4 @ =gBlockSendBuffer
- ldr r1, _080C87C8 @ =gUnknown_02038695
+ ldr r1, _080C87C8 @ =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
- ldr r2, _080C87CC @ =gUnknown_02038570
+ ldr r2, _080C87CC @ =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@@ -320,8 +320,8 @@ _080C87BA:
b _080C8896
.align 2, 0
_080C87C4: .4byte gBlockSendBuffer
-_080C87C8: .4byte gUnknown_02038695
-_080C87CC: .4byte gUnknown_02038570
+_080C87C8: .4byte gContestPlayerMonIndex
+_080C87CC: .4byte gContestMons
_080C87D0:
bl sub_80C85D8
lsls r0, 24
@@ -329,7 +329,7 @@ _080C87D0:
beq _080C8896
movs r7, 0
str r5, [sp]
- ldr r0, _080C8818 @ =gUnknown_02038570
+ ldr r0, _080C8818 @ =gContestMons
ldr r6, _080C881C @ =gLinkPlayers
movs r5, 0
mov r10, r0
@@ -342,7 +342,7 @@ _080C87EA:
mov r0, r10
movs r2, 0x40
bl memcpy
- ldr r0, _080C8824 @ =gUnknown_02038570 + 0x2
+ ldr r0, _080C8824 @ =gContestMons + 0x2
adds r4, r5, r0
ldrh r0, [r6, 0x1A]
cmp r0, 0x1
@@ -356,10 +356,10 @@ _080C87EA:
bl ConvertInternationalString
b _080C883E
.align 2, 0
-_080C8818: .4byte gUnknown_02038570
+_080C8818: .4byte gContestMons
_080C881C: .4byte gLinkPlayers
_080C8820: .4byte gBlockRecvBuffer
-_080C8824: .4byte gUnknown_02038570 + 0x2
+_080C8824: .4byte gContestMons + 0x2
_080C8828:
ldrb r0, [r4, 0xA]
cmp r0, 0xFC
@@ -612,12 +612,12 @@ _080C8A08:
lsls r0, 24
cmp r0, 0
beq _080C8A30
- ldr r0, _080C8A1C @ =gUnknown_02038695
+ ldr r0, _080C8A1C @ =gContestPlayerMonIndex
movs r1, 0x1
bl sub_80C857C
b _080C8A2A
.align 2, 0
-_080C8A1C: .4byte gUnknown_02038695
+_080C8A1C: .4byte gContestPlayerMonIndex
_080C8A20:
bl sub_80C85D8
lsls r0, 24
@@ -661,7 +661,7 @@ _080C8A64:
lsls r0, 24
cmp r0, 0
beq _080C8AC2
- ldr r0, _080C8A8C @ =gUnknown_02038695
+ ldr r0, _080C8A8C @ =gContestPlayerMonIndex
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -675,7 +675,7 @@ _080C8A64:
strh r0, [r4, 0x8]
b _080C8AC2
.align 2, 0
-_080C8A8C: .4byte gUnknown_02038695
+_080C8A8C: .4byte gContestPlayerMonIndex
_080C8A90: .4byte 0x02019266
_080C8A94:
bl sub_80C85D8
diff --git a/asm/matsuda_debug_menu.s b/asm/matsuda_debug_menu.s
index b05d530be..e9577b8b8 100644
--- a/asm/matsuda_debug_menu.s
+++ b/asm/matsuda_debug_menu.s
@@ -6,900 +6,6 @@
.text
- thumb_func_start sub_80AA5BC
-sub_80AA5BC: @ 80AA5BC
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- ldr r2, _080AA5E0 @ =gMenuWindow
- ldr r1, _080AA5E4 @ =gUnknown_083C93B4
- lsrs r0, 22
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x12
- str r0, [sp]
- adds r0, r2, 0
- movs r2, 0xC2
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080AA5E0: .4byte gMenuWindow
-_080AA5E4: .4byte gUnknown_083C93B4
- thumb_func_end sub_80AA5BC
-
- thumb_func_start sub_80AA5E8
-sub_80AA5E8: @ 80AA5E8
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- ldr r2, _080AA60C @ =gMenuWindow
- ldr r1, _080AA610 @ =gUnknown_083C93F0
- lsrs r0, 22
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x4
- str r0, [sp]
- adds r0, r2, 0
- movs r2, 0xE8
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080AA60C: .4byte gMenuWindow
-_080AA610: .4byte gUnknown_083C93F0
- thumb_func_end sub_80AA5E8
-
- thumb_func_start sub_80AA614
-sub_80AA614: @ 80AA614
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- bl sub_80AE770
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _080AA650 @ =0x02000000
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _080AA654 @ =gMenuWindow
- movs r1, 0xC
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0xE2
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA650: .4byte 0x02000000
-_080AA654: .4byte gMenuWindow
- thumb_func_end sub_80AA614
-
- thumb_func_start sub_80AA658
-sub_80AA658: @ 80AA658
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_80AA340
- adds r0, r5, 0
- bl sub_80AA388
- adds r0, r5, 0
- bl sub_80AA3D0
- adds r0, r5, 0
- bl sub_80AA418
- adds r0, r5, 0
- bl sub_80AA460
- adds r0, r5, 0
- bl sub_80AA4A8
- movs r4, 0
-_080AA684:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80AA4F0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080AA684
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80AA658
-
- thumb_func_start sub_80AA69C
-sub_80AA69C: @ 80AA69C
- push {r4-r6,lr}
- ldr r6, _080AA748 @ =gPlayerParty
- ldr r5, _080AA74C @ =gUnknown_02038695
- ldrb r2, [r5]
- lsls r2, 6
- ldr r4, _080AA750 @ =gUnknown_02038596
- adds r2, r4
- adds r0, r6, 0
- movs r1, 0x16
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r0, r4, 0x2
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x18
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r0, r4, 0x1
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x17
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r0, r4, 0x3
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x21
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r0, r4, 0x4
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x2F
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r0, r4, 0x5
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x30
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- subs r4, 0x8
- adds r2, r4
- adds r0, r6, 0
- movs r1, 0xD
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r2, r4
- adds r2, 0x2
- adds r0, r6, 0
- movs r1, 0xE
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r2, r4
- adds r2, 0x4
- adds r0, r6, 0
- movs r1, 0xF
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 6
- adds r2, r4
- adds r2, 0x6
- adds r0, r6, 0
- movs r1, 0x10
- bl SetMonData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA748: .4byte gPlayerParty
-_080AA74C: .4byte gUnknown_02038695
-_080AA750: .4byte gUnknown_02038596
- thumb_func_end sub_80AA69C
-
- thumb_func_start sub_80AA754
-sub_80AA754: @ 80AA754
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080AA774 @ =gMain
- ldrh r1, [r0, 0x30]
- cmp r1, 0x20
- beq _080AA7A2
- cmp r1, 0x20
- bgt _080AA782
- cmp r1, 0x2
- beq _080AA7F8
- cmp r1, 0x2
- bgt _080AA778
- cmp r1, 0x1
- beq _080AA7D8
- b _080AA870
- .align 2, 0
-_080AA774: .4byte gMain
-_080AA778:
- cmp r1, 0x8
- beq _080AA868
- cmp r1, 0x10
- beq _080AA7A2
- b _080AA870
-_080AA782:
- cmp r1, 0x80
- beq _080AA7C2
- cmp r1, 0x80
- bgt _080AA790
- cmp r1, 0x40
- beq _080AA7AC
- b _080AA870
-_080AA790:
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _080AA814
- movs r0, 0x80
- lsls r0, 2
- cmp r1, r0
- beq _080AA834
- b _080AA870
-_080AA7A2:
- ldrh r0, [r4, 0x2E]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x2E]
- b _080AA870
-_080AA7AC:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080AA7BC
- movs r0, 0x8
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7BC:
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7C2:
- ldrh r1, [r4, 0x30]
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- cmp r0, 0x8
- bne _080AA7D2
- movs r0, 0
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7D2:
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080AA870
-_080AA7D8:
- ldr r2, _080AA7F4 @ =gUnknown_083C92E4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r0, r1
- adds r0, r2
- ldr r2, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- b _080AA84E
- .align 2, 0
-_080AA7F4: .4byte gUnknown_083C92E4
-_080AA7F8:
- ldr r1, _080AA810 @ =gUnknown_083C92E4
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r2, 2
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r2, r0
- adds r2, r1
- movs r1, 0x1
- negs r1, r1
- b _080AA84A
- .align 2, 0
-_080AA810: .4byte gUnknown_083C92E4
-_080AA814:
- ldr r2, _080AA830 @ =gUnknown_083C92E4
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- movs r3, 0x30
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r0, r1
- adds r0, r2
- ldr r2, [r0]
- adds r0, r4, 0
- movs r1, 0xA
- b _080AA84E
- .align 2, 0
-_080AA830: .4byte gUnknown_083C92E4
-_080AA834:
- ldr r1, _080AA864 @ =gUnknown_083C92E4
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- lsls r2, 2
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r2, r0
- adds r2, r1
- movs r1, 0xA
- negs r1, r1
-_080AA84A:
- ldr r2, [r2]
- adds r0, r4, 0
-_080AA84E:
- bl _call_via_r2
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x34]
- lsls r1, 24
- lsrs r1, 24
- bl sub_80AA614
- b _080AA870
- .align 2, 0
-_080AA864: .4byte gUnknown_083C92E4
-_080AA868:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80AAD08
-_080AA870:
- ldr r2, _080AA898 @ =gUnknown_083C9296
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- strh r0, [r4, 0x20]
- ldr r1, _080AA89C @ =gUnknown_083C92A8
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA898: .4byte gUnknown_083C9296
-_080AA89C: .4byte gUnknown_083C92A8
- thumb_func_end sub_80AA754
-
- thumb_func_start sub_80AA8A0
-sub_80AA8A0: @ 80AA8A0
- push {r4,lr}
- adds r4, r0, 0
- lsls r2, 24
- lsrs r0, r2, 24
- lsls r1, 24
- asrs r1, 24
- cmp r1, 0x1
- bne _080AA8C0
- strh r0, [r4, 0x32]
- bl sub_80AA280
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA658
-_080AA8C0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80AA8A0
-
- thumb_func_start sub_80AA8C8
-sub_80AA8C8: @ 80AA8C8
- push {lr}
- lsls r1, 24
- asrs r1, 24
- movs r2, 0
- bl sub_80AA8A0
- pop {r0}
- bx r0
- thumb_func_end sub_80AA8C8
-
- thumb_func_start sub_80AA8D8
-sub_80AA8D8: @ 80AA8D8
- push {lr}
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- bl sub_80AA8A0
- pop {r0}
- bx r0
- thumb_func_end sub_80AA8D8
-
- thumb_func_start sub_80AA8E8
-sub_80AA8E8: @ 80AA8E8
- push {lr}
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x2
- bl sub_80AA8A0
- pop {r0}
- bx r0
- thumb_func_end sub_80AA8E8
-
- thumb_func_start sub_80AA8F8
-sub_80AA8F8: @ 80AA8F8
- push {lr}
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x3
- bl sub_80AA8A0
- pop {r0}
- bx r0
- thumb_func_end sub_80AA8F8
-
- thumb_func_start sub_80AA908
-sub_80AA908: @ 80AA908
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- asrs r2, 24
- adds r2, r1
- lsls r2, 16
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0xFF
- ble _080AA922
- movs r0, 0xFF
- b _080AA928
-_080AA922:
- cmp r2, 0
- bge _080AA928
- movs r0, 0
-_080AA928:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80AA908
-
- thumb_func_start sub_80AA930
-sub_80AA930: @ 80AA930
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AA970 @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x26
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x26
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA340
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA970: .4byte gUnknown_02038570
- thumb_func_end sub_80AA930
-
- thumb_func_start sub_80AA974
-sub_80AA974: @ 80AA974
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AA9B4 @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x28
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x28
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA388
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA9B4: .4byte gUnknown_02038570
- thumb_func_end sub_80AA974
-
- thumb_func_start sub_80AA9B8
-sub_80AA9B8: @ 80AA9B8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AA9F8 @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x27
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x27
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA3D0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AA9F8: .4byte gUnknown_02038570
- thumb_func_end sub_80AA9B8
-
- thumb_func_start sub_80AA9FC
-sub_80AA9FC: @ 80AA9FC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AAA3C @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x29
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x29
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA418
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAA3C: .4byte gUnknown_02038570
- thumb_func_end sub_80AA9FC
-
- thumb_func_start sub_80AAA40
-sub_80AAA40: @ 80AAA40
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AAA80 @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x2A
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x2A
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA460
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAA80: .4byte gUnknown_02038570
- thumb_func_end sub_80AAA40
-
- thumb_func_start sub_80AAA84
-sub_80AAA84: @ 80AAA84
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AAAC4 @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- adds r2, 0x2B
- ldrb r3, [r2]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AA908
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- adds r1, 0x2B
- strb r0, [r1]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA4A8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAAC4: .4byte gUnknown_02038570
- thumb_func_end sub_80AAA84
-
- thumb_func_start sub_80AAAC8
-sub_80AAAC8: @ 80AAAC8
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- asrs r2, 24
- adds r1, r2
- lsls r1, 16
- lsrs r0, r1, 16
- asrs r1, 16
- movs r2, 0xB1
- lsls r2, 1
- cmp r1, r2
- ble _080AAAE6
- movs r0, 0x1
- b _080AAAEC
-_080AAAE6:
- cmp r1, 0
- bge _080AAAEC
- adds r0, r2, 0
-_080AAAEC:
- pop {r1}
- bx r1
- thumb_func_end sub_80AAAC8
-
- thumb_func_start sub_80AAAF0
-sub_80AAAF0: @ 80AAAF0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AAB2C @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- ldrh r3, [r2, 0x1E]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AAAC8
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- strh r0, [r1, 0x1E]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80AA4F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAB2C: .4byte gUnknown_02038570
- thumb_func_end sub_80AAAF0
-
- thumb_func_start sub_80AAB30
-sub_80AAB30: @ 80AAB30
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AAB6C @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- ldrh r3, [r2, 0x20]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AAAC8
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- strh r0, [r1, 0x20]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_80AA4F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAB6C: .4byte gUnknown_02038570
- thumb_func_end sub_80AAB30
-
- thumb_func_start sub_80AAB70
-sub_80AAB70: @ 80AAB70
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AABAC @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- ldrh r3, [r2, 0x22]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AAAC8
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- strh r0, [r1, 0x22]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80AA4F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AABAC: .4byte gUnknown_02038570
- thumb_func_end sub_80AAB70
-
- thumb_func_start sub_80AABB0
-sub_80AABB0: @ 80AABB0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080AABEC @ =gUnknown_02038570
- movs r3, 0x32
- ldrsh r2, [r4, r3]
- lsls r2, 6
- adds r2, r5
- ldrh r3, [r2, 0x24]
- lsls r2, r1, 24
- asrs r2, 24
- adds r1, r3, 0
- bl sub_80AAAC8
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- lsls r1, 6
- adds r1, r5
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl sub_80AA4F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AABEC: .4byte gUnknown_02038570
- thumb_func_end sub_80AABB0
-
- thumb_func_start sub_80AABF0
-sub_80AABF0: @ 80AABF0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- movs r0, 0xFF
- cmp r1, 0
- ble _080AABFE
- movs r0, 0x1
-_080AABFE:
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r5, 0x34]
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080AAC14
- movs r4, 0
- b _080AAC1A
-_080AAC14:
- cmp r0, 0x4
- ble _080AAC1A
- movs r4, 0x4
-_080AAC1A:
- lsls r4, 24
- lsrs r0, r4, 24
- bl sub_80AA5BC
- asrs r4, 24
- strh r4, [r5, 0x34]
- ldr r0, _080AAC54 @ =gScriptContestCategory
- strh r4, [r0]
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080AAC58 @ =gScriptContestRank
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_80AE398
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA280
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- bl sub_80AA658
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080AAC54: .4byte gScriptContestCategory
-_080AAC58: .4byte gScriptContestRank
- thumb_func_end sub_80AABF0
-
thumb_func_start sub_80AAC5C
sub_80AAC5C: @ 80AAC5C
push {r4,r5,lr}
@@ -963,7 +69,7 @@ sub_80AACC4: @ 80AACC4
ands r0, r1
cmp r0, 0
bne _080AACF4
- bl sub_80AA69C
+ bl SetDebugMonForContest
ldr r0, _080AACFC @ =gUnknown_0203869A
ldrb r1, [r0]
movs r0, 0x1
@@ -1024,7 +130,7 @@ sub_80AAD44: @ 80AAD44
asrs r1, 24
cmp r1, 0x1
bne _080AAD72
- bl sub_80AA69C
+ bl SetDebugMonForContest
movs r4, 0
ldr r5, _080AAD78 @ =gUnknown_02038670
_080AAD56:
@@ -1274,7 +380,7 @@ sub_80AAF30: @ 80AAF30
ldr r1, _080AAFC0 @ =gUnknown_0203856C
movs r0, 0x1
strb r0, [r1]
- ldr r1, _080AAFC4 @ =gUnknown_02038695
+ ldr r1, _080AAFC4 @ =gContestPlayerMonIndex
movs r0, 0x3
strb r0, [r1]
movs r0, 0
@@ -1294,7 +400,7 @@ _080AAF56:
movs r4, 0
movs r6, 0
ldr r7, _080AAFCC @ =gUnknown_02038670
- ldr r5, _080AAFD0 @ =gUnknown_02038570
+ ldr r5, _080AAFD0 @ =gContestMons
mov r9, r5
_080AAF6C:
lsls r1, r4, 1
@@ -1338,10 +444,10 @@ _080AAF6C:
bx r0
.align 2, 0
_080AAFC0: .4byte gUnknown_0203856C
-_080AAFC4: .4byte gUnknown_02038695
+_080AAFC4: .4byte gContestPlayerMonIndex
_080AAFC8: .4byte gUnknown_02038690
_080AAFCC: .4byte gUnknown_02038670
-_080AAFD0: .4byte gUnknown_02038570
+_080AAFD0: .4byte gContestMons
_080AAFD4: .4byte gUnknown_02038680
_080AAFD8: .4byte gUnknown_02038678
thumb_func_end sub_80AAF30
@@ -1392,7 +498,7 @@ _080AB028: .4byte gUnknown_02038670
thumb_func_start MatsudaDebugMenu_SetArtMuseumItems
MatsudaDebugMenu_SetArtMuseumItems: @ 80AB02C
push {r4,r5,lr}
- ldr r1, _080AB078 @ =gUnknown_02038695
+ ldr r1, _080AB078 @ =gContestPlayerMonIndex
movs r0, 0x3
strb r0, [r1]
movs r0, 0
@@ -1429,7 +535,7 @@ _080AB058:
pop {r1}
bx r1
.align 2, 0
-_080AB078: .4byte gUnknown_02038695
+_080AB078: .4byte gContestPlayerMonIndex
_080AB07C: .4byte gUnknown_02038690
_080AB080: .4byte gScriptContestCategory
thumb_func_end MatsudaDebugMenu_SetArtMuseumItems
diff --git a/asm/script_pokemon_util_80C4BF0.s b/asm/script_pokemon_util_80C4BF0.s
index dd4c18d96..5d99fa2b2 100644
--- a/asm/script_pokemon_util_80C4BF0.s
+++ b/asm/script_pokemon_util_80C4BF0.s
@@ -10,7 +10,7 @@
sub_80C4BF0: @ 80C4BF0
push {r4,lr}
ldr r2, _080C4C1C @ =gSaveBlock1
- ldr r1, _080C4C20 @ =gUnknown_02038570
+ ldr r1, _080C4C20 @ =gContestMons
ldrb r3, [r1, 0x15]
movs r4, 0x9B
lsls r4, 5
@@ -32,7 +32,7 @@ sub_80C4BF0: @ 80C4BF0
bx r0
.align 2, 0
_080C4C1C: .4byte gSaveBlock1
-_080C4C20: .4byte gUnknown_02038570
+_080C4C20: .4byte gContestMons
_080C4C24: .4byte 0x00001364
thumb_func_end sub_80C4BF0
@@ -161,7 +161,7 @@ sub_80C4CEC: @ 80C4CEC
sub_80C4CF8: @ 80C4CF8
push {lr}
ldr r0, _080C4D28 @ =gUnknown_02038690
- ldr r1, _080C4D2C @ =gUnknown_02038695
+ ldr r1, _080C4D2C @ =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@@ -184,7 +184,7 @@ sub_80C4CF8: @ 80C4CF8
b _080C4D44
.align 2, 0
_080C4D28: .4byte gUnknown_02038690
-_080C4D2C: .4byte gUnknown_02038695
+_080C4D2C: .4byte gContestPlayerMonIndex
_080C4D30: .4byte gScriptContestRank
_080C4D34: .4byte gUnknown_02038678
_080C4D38: .4byte 0x0000031f
@@ -486,7 +486,7 @@ _080C4F6C: .4byte ShowContestWinnerCleanup
sub_80C4F70: @ 80C4F70
push {r4,lr}
ldr r0, _080C4FA8 @ =0x00004010
- ldr r4, _080C4FAC @ =gUnknown_02038570
+ ldr r4, _080C4FAC @ =gContestMons
ldrb r1, [r4, 0x15]
bl VarSet
ldr r0, _080C4FB0 @ =0x00004011
@@ -509,7 +509,7 @@ sub_80C4F70: @ 80C4F70
bx r0
.align 2, 0
_080C4FA8: .4byte 0x00004010
-_080C4FAC: .4byte gUnknown_02038570
+_080C4FAC: .4byte gContestMons
_080C4FB0: .4byte 0x00004011
_080C4FB4: .4byte 0x00004012
_080C4FB8: .4byte 0x00004013
@@ -534,7 +534,7 @@ GiveMonArtistRibbon: @ 80C4FBC
cmp r0, 0
bne _080C5038
ldr r0, _080C5024 @ =gUnknown_02038690
- ldr r1, _080C5028 @ =gUnknown_02038695
+ ldr r1, _080C5028 @ =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@@ -567,7 +567,7 @@ GiveMonArtistRibbon: @ 80C4FBC
_080C501C: .4byte gUnknown_02038694
_080C5020: .4byte gPlayerParty
_080C5024: .4byte gUnknown_02038690
-_080C5028: .4byte gUnknown_02038695
+_080C5028: .4byte gContestPlayerMonIndex
_080C502C: .4byte gScriptContestRank
_080C5030: .4byte gUnknown_02038678
_080C5034: .4byte 0x0000031f
@@ -611,7 +611,7 @@ ShowContestEntryMonPic: @ 80C5050
movs r2, 0x13
movs r3, 0xD
bl MenuDrawTextWindow
- ldr r2, _080C5140 @ =gUnknown_02038570
+ ldr r2, _080C5140 @ =gContestMons
ldr r0, _080C5144 @ =gSpecialVar_0x8006
ldrh r1, [r0]
lsls r1, 6
@@ -703,7 +703,7 @@ _080C512A:
bx r0
.align 2, 0
_080C513C: .4byte sub_80C5190
-_080C5140: .4byte gUnknown_02038570
+_080C5140: .4byte gContestMons
_080C5144: .4byte gSpecialVar_0x8006
_080C5148: .4byte gTasks
_080C514C: .4byte gMonFrontPicTable
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
deleted file mode 100644
index beddfde18..000000000
--- a/asm/trainer_card.s
+++ /dev/null
@@ -1,2180 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8093598
-sub_8093598: @ 8093598
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0x80
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- ldr r1, _080935E4 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080935E8 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080935B6:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _080935B6
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080935E4: .4byte 0x040000d4
-_080935E8: .4byte 0x81000800
- thumb_func_end sub_8093598
-
- thumb_func_start sub_80935EC
-sub_80935EC: @ 80935EC
- sub sp, 0x4
- movs r2, 0xE0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08093608 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0809360C @ =0x81000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x4
- bx lr
- .align 2, 0
-_08093608: .4byte 0x040000d4
-_0809360C: .4byte 0x81000200
- thumb_func_end sub_80935EC
-
- thumb_func_start sub_8093610
-sub_8093610: @ 8093610
- push {r4,r5,lr}
- ldr r5, _08093664 @ =REG_BG0CNT
- movs r1, 0
- strh r1, [r5]
- ldr r2, _08093668 @ =REG_BG1CNT
- strh r1, [r2]
- ldr r3, _0809366C @ =REG_BG2CNT
- strh r1, [r3]
- ldr r4, _08093670 @ =REG_BG3CNT
- strh r1, [r4]
- ldr r0, _08093674 @ =REG_BG0HOFS
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _08093678 @ =0x00001e08
- adds r0, r1, 0
- strh r0, [r5]
- ldr r1, _0809367C @ =0x00000801
- adds r0, r1, 0
- strh r0, [r2]
- ldr r1, _08093680 @ =0x00000902
- adds r0, r1, 0
- strh r0, [r3]
- ldr r1, _08093684 @ =0x00000a03
- adds r0, r1, 0
- strh r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08093664: .4byte REG_BG0CNT
-_08093668: .4byte REG_BG1CNT
-_0809366C: .4byte REG_BG2CNT
-_08093670: .4byte REG_BG3CNT
-_08093674: .4byte REG_BG0HOFS
-_08093678: .4byte 0x00001e08
-_0809367C: .4byte 0x00000801
-_08093680: .4byte 0x00000902
-_08093684: .4byte 0x00000a03
- thumb_func_end sub_8093610
-
- thumb_func_start sub_8093688
-sub_8093688: @ 8093688
- push {r4-r6,lr}
- bl sub_8093324
- ldr r2, _080936D0 @ =0x02000000
- movs r1, 0
- strb r1, [r2]
- strb r1, [r2, 0x3]
- strb r1, [r2, 0x4]
- adds r0, r2, 0
- adds r0, 0x65
- ldrb r0, [r0]
- strb r0, [r2, 0x2]
- strb r1, [r2, 0x5]
- strb r1, [r2, 0x6]
- movs r4, 0
- adds r6, r2, 0
- adds r6, 0x20
- adds r5, r2, 0
- adds r5, 0x8C
-_080936AE:
- lsls r0, r4, 4
- adds r0, r6
- lsls r1, r4, 1
- adds r1, r5, r1
- ldrh r1, [r1]
- bl sub_80EB3FC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080936AE
- bl sub_80936D4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080936D0: .4byte 0x02000000
- thumb_func_end sub_8093688
-
- thumb_func_start sub_80936D4
-sub_80936D4: @ 80936D4
- push {r4-r6,lr}
- ldr r4, _08093798 @ =0x02000000
- movs r0, 0
- strb r0, [r4, 0x7]
- strb r0, [r4, 0x8]
- strb r0, [r4, 0x9]
- strb r0, [r4, 0xA]
- strb r0, [r4, 0xB]
- strb r0, [r4, 0xC]
- strb r0, [r4, 0xD]
- adds r0, r4, 0
- adds r0, 0xE
- movs r1, 0
- movs r2, 0x8
- bl memset
- adds r0, r4, 0
- adds r0, 0x66
- ldrb r0, [r0]
- cmp r0, 0
- beq _08093704
- ldrb r0, [r4, 0x7]
- adds r0, 0x1
- strb r0, [r4, 0x7]
-_08093704:
- adds r0, r4, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- cmp r0, 0
- bne _08093714
- ldr r0, [r4, 0x6C]
- cmp r0, 0
- beq _0809371A
-_08093714:
- ldrb r0, [r4, 0x8]
- adds r0, 0x1
- strb r0, [r4, 0x8]
-_0809371A:
- ldr r1, _08093798 @ =0x02000000
- ldr r0, [r1, 0x78]
- cmp r0, 0
- beq _08093728
- ldrb r0, [r1, 0x9]
- adds r0, 0x1
- strb r0, [r1, 0x9]
-_08093728:
- ldr r0, [r1, 0x7C]
- cmp r0, 0
- beq _08093734
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
-_08093734:
- adds r0, r1, 0
- adds r0, 0x80
- ldrh r0, [r0]
- cmp r0, 0
- beq _08093744
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
- strb r0, [r1, 0xB]
-_08093744:
- adds r0, r1, 0
- adds r0, 0x82
- ldrh r0, [r0]
- cmp r0, 0
- beq _08093754
- ldrb r0, [r1, 0xC]
- adds r0, 0x1
- strb r0, [r1, 0xC]
-_08093754:
- adds r0, r1, 0
- adds r0, 0x84
- ldrh r0, [r0]
- cmp r0, 0
- beq _08093764
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
- strb r0, [r1, 0xD]
-_08093764:
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08093792
- movs r5, 0
- ldr r4, _0809379C @ =0x00000807
- adds r6, r1, 0
- adds r6, 0xE
-_08093772:
- lsls r0, r4, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08093788
- adds r1, r5, r6
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08093788:
- adds r4, 0x1
- adds r5, 0x1
- ldr r0, _080937A0 @ =0x0000080e
- cmp r4, r0
- bls _08093772
-_08093792:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08093798: .4byte 0x02000000
-_0809379C: .4byte 0x00000807
-_080937A0: .4byte 0x0000080e
- thumb_func_end sub_80936D4
-
- thumb_func_start sub_80937A4
-sub_80937A4: @ 80937A4
- push {lr}
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- pop {r0}
- bx r0
- thumb_func_end sub_80937A4
-
- thumb_func_start sub_80937BC
-sub_80937BC: @ 80937BC
- push {r4,lr}
- ldr r4, _080937D4 @ =gWindowConfig_81E6DC4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl MultistepInitMenuWindowBegin
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080937D4: .4byte gWindowConfig_81E6DC4
- thumb_func_end sub_80937BC
-
- thumb_func_start sub_80937D8
-sub_80937D8: @ 80937D8
- push {lr}
- bl sub_8093E04
- bl sub_8093E28
- bl sub_8093F64
- bl sub_8093DAC
- pop {r0}
- bx r0
- thumb_func_end sub_80937D8
-
- thumb_func_start sub_80937F0
-sub_80937F0: @ 80937F0
- push {lr}
- bl sub_8093EF8
- pop {r0}
- bx r0
- thumb_func_end sub_80937F0
-
- thumb_func_start nullsub_15
-nullsub_15: @ 80937FC
- bx lr
- thumb_func_end nullsub_15
-
- thumb_func_start sub_8093800
-sub_8093800: @ 8093800
- push {lr}
- bl sub_809380C
- pop {r0}
- bx r0
- thumb_func_end sub_8093800
-
- thumb_func_start sub_809380C
-sub_809380C: @ 809380C
- push {r4,lr}
- ldr r4, _08093828 @ =sub_809382C
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08093828: .4byte sub_809382C
- thumb_func_end sub_809380C
-
- thumb_func_start sub_809382C
-sub_809382C: @ 809382C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r7, _08093858 @ =gUnknown_083B5EBC
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r6, _0809385C @ =0x02000000
- ldr r5, _08093860 @ =gTasks
-_0809383E:
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r7
- ldr r1, [r0]
- adds r0, r4, r5
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0809383E
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08093858: .4byte gUnknown_083B5EBC
-_0809385C: .4byte 0x02000000
-_08093860: .4byte gTasks
- thumb_func_end sub_809382C
-
- thumb_func_start sub_8093864
-sub_8093864: @ 8093864
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r4, _080938A0 @ =0x02000000
- ldr r2, _080938A4 @ =gSaveBlock2
- ldrb r1, [r2, 0x11]
- movs r0, 0x1
- ands r0, r1
- movs r5, 0
- strb r0, [r4, 0x5]
- ldrb r0, [r2, 0x12]
- strb r0, [r4, 0x6]
- bl sub_80939A4
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080938A0: .4byte 0x02000000
-_080938A4: .4byte gSaveBlock2
- thumb_func_end sub_8093864
-
- thumb_func_start sub_80938A8
-sub_80938A8: @ 80938A8
- push {lr}
- ldr r0, _080938C4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080938BE
- ldr r1, _080938C8 @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080938BE:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080938C4: .4byte gPaletteFade
-_080938C8: .4byte 0x02000000
- thumb_func_end sub_80938A8
-
- thumb_func_start sub_80938CC
-sub_80938CC: @ 80938CC
- push {lr}
- ldr r0, _080938E4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080938EC
- ldr r1, _080938E8 @ =0x02000000
- movs r0, 0x5
- strb r0, [r1]
- movs r0, 0x1
- b _08093914
- .align 2, 0
-_080938E4: .4byte gMain
-_080938E8: .4byte 0x02000000
-_080938EC:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08093912
- ldr r2, _08093900 @ =0x02000000
- ldrb r1, [r2, 0x3]
- cmp r1, 0
- beq _08093904
- movs r0, 0x5
- b _0809390C
- .align 2, 0
-_08093900: .4byte 0x02000000
-_08093904:
- movs r0, 0x1
- eors r0, r1
- strb r0, [r2, 0x3]
- movs r0, 0x3
-_0809390C:
- strb r0, [r2]
- movs r0, 0x1
- b _08093914
-_08093912:
- movs r0, 0
-_08093914:
- pop {r1}
- bx r1
- thumb_func_end sub_80938CC
-
- thumb_func_start sub_8093918
-sub_8093918: @ 8093918
- push {lr}
- bl sub_8093A28
- movs r0, 0x36
- bl PlaySE
- ldr r1, _08093934 @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08093934: .4byte 0x02000000
- thumb_func_end sub_8093918
-
- thumb_func_start sub_8093938
-sub_8093938: @ 8093938
- push {lr}
- bl sub_8093A48
- lsls r0, 24
- cmp r0, 0
- beq _0809394A
- ldr r1, _08093950 @ =0x02000000
- movs r0, 0x2
- strb r0, [r1]
-_0809394A:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08093950: .4byte 0x02000000
- thumb_func_end sub_8093938
-
- thumb_func_start sub_8093954
-sub_8093954: @ 8093954
- push {lr}
- sub sp, 0x4
- bl sub_80939C0
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0809397C @ =0x02000000
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_0809397C: .4byte 0x02000000
- thumb_func_end sub_8093954
-
- thumb_func_start sub_8093980
-sub_8093980: @ 8093980
- push {lr}
- ldr r0, _0809399C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08093996
- ldr r0, _080939A0 @ =0x02000000
- ldr r0, [r0, 0x60]
- bl SetMainCallback2
-_08093996:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809399C: .4byte gPaletteFade
-_080939A0: .4byte 0x02000000
- thumb_func_end sub_8093980
-
- thumb_func_start sub_80939A4
-sub_80939A4: @ 80939A4
- push {lr}
- ldr r0, _080939B8 @ =sub_80939DC
- movs r1, 0
- bl CreateTask
- ldr r0, _080939BC @ =gWindowConfig_81E6DC4
- bl BasicInitMenuWindow
- pop {r0}
- bx r0
- .align 2, 0
-_080939B8: .4byte sub_80939DC
-_080939BC: .4byte gWindowConfig_81E6DC4
- thumb_func_end sub_80939A4
-
- thumb_func_start sub_80939C0
-sub_80939C0: @ 80939C0
- push {lr}
- ldr r0, _080939D8 @ =sub_80939DC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080939D4
- bl DestroyTask
-_080939D4:
- pop {r0}
- bx r0
- .align 2, 0
-_080939D8: .4byte sub_80939DC
- thumb_func_end sub_80939C0
-
- thumb_func_start sub_80939DC
-sub_80939DC: @ 80939DC
- push {lr}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08093A20 @ =gTasks
- adds r2, r1, r0
- ldr r0, _08093A24 @ =0x02000000
- ldrb r1, [r0, 0x5]
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- cmp r1, r0
- beq _08093A04
- strh r1, [r2, 0xA]
- ldrh r0, [r2, 0x8]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r2, 0x8]
-_08093A04:
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- mov r0, sp
- bl sub_8094250
- mov r0, sp
- movs r1, 0xA
- movs r2, 0xC
- bl MenuPrint
- add sp, 0x20
- pop {r0}
- bx r0
- .align 2, 0
-_08093A20: .4byte gTasks
-_08093A24: .4byte 0x02000000
- thumb_func_end sub_80939DC
-
- thumb_func_start sub_8093A28
-sub_8093A28: @ 8093A28
- push {r4,lr}
- ldr r4, _08093A44 @ =sub_8093A68
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08093A44: .4byte sub_8093A68
- thumb_func_end sub_8093A28
-
- thumb_func_start sub_8093A48
-sub_8093A48: @ 8093A48
- push {lr}
- ldr r0, _08093A5C @ =sub_8093A68
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08093A60
- movs r0, 0
- b _08093A62
- .align 2, 0
-_08093A5C: .4byte sub_8093A68
-_08093A60:
- movs r0, 0x1
-_08093A62:
- pop {r1}
- bx r1
- thumb_func_end sub_8093A48
-
- thumb_func_start sub_8093A68
-sub_8093A68: @ 8093A68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08093A98 @ =gUnknown_083B5ED8
- ldr r2, _08093A9C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08093A7A:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _08093A7A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08093A98: .4byte gUnknown_083B5ED8
-_08093A9C: .4byte gTasks
- thumb_func_end sub_8093A68
-
- thumb_func_start sub_8093AA0
-sub_8093AA0: @ 8093AA0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08093AE0 @ =0x02000000
- movs r1, 0
- strb r1, [r0, 0x4]
- bl dp12_8087EA4
- movs r1, 0
- ldr r0, _08093AE4 @ =gUnknown_03004DE0
- ldr r2, _08093AE8 @ =0x0000fffc
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
-_08093ABA:
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x9F
- bls _08093ABA
- ldr r0, _08093AEC @ =sub_8093D7C
- bl SetHBlankCallback
- ldr r1, _08093AE0 @ =0x02000000
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08093AE0: .4byte 0x02000000
-_08093AE4: .4byte gUnknown_03004DE0
-_08093AE8: .4byte 0x0000fffc
-_08093AEC: .4byte sub_8093D7C
- thumb_func_end sub_8093AA0
-
- thumb_func_start sub_8093AF0
-sub_8093AF0: @ 8093AF0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r0
- ldr r1, _08093BFC @ =0x02000000
- movs r0, 0
- strb r0, [r1, 0x4]
- mov r2, r8
- ldrh r0, [r2, 0xA]
- adds r0, 0x3
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4F
- ble _08093B18
- movs r0, 0x4F
- strh r0, [r2, 0xA]
-_08093B18:
- mov r4, r8
- movs r0, 0xA
- ldrsh r7, [r4, r0]
- movs r0, 0xA0
- subs r0, r7
- mov r9, r0
- subs r4, r0, r7
- negs r0, r7
- lsls r6, r0, 16
- movs r0, 0xA0
- lsls r0, 16
- adds r1, r4, 0
- bl __udivsi3
- adds r5, r0, 0
- ldr r1, _08093C00 @ =0xffff0000
- adds r5, r1
- adds r0, r5, 0
- muls r0, r4
- adds r0, r6
- mov r10, r0
- adds r0, r5, 0
- adds r1, r4, 0
- bl __udivsi3
- str r0, [sp]
- lsls r5, 1
- movs r3, 0
- cmp r3, r7
- bcs _08093B74
- ldr r2, _08093C04 @ =gUnknown_03004DE0
- mov r12, r2
- ldr r0, _08093C08 @ =0x0000fffc
- adds r4, r0, 0
-_08093B5C:
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, r0, 1
- add r1, r12
- subs r2, r4, r0
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- asrs r0, 16
- cmp r0, r7
- bcc _08093B5C
-_08093B74:
- lsls r2, r3, 16
- mov r1, r9
- lsls r0, r1, 16
- asrs r1, r0, 16
- mov r4, r10
- lsrs r7, r4, 16
- cmp r2, r0
- bge _08093BAE
- ldr r0, _08093C04 @ =gUnknown_03004DE0
- mov r9, r0
- ldr r4, _08093C08 @ =0x0000fffc
- mov r12, r4
- adds r4, r1, 0
-_08093B8E:
- lsrs r1, r6, 16
- adds r6, r5
- ldr r0, [sp]
- subs r5, r0
- asrs r2, 16
- lsls r0, r2, 1
- add r0, r9
- add r1, r12
- strh r1, [r0]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, r4
- blt _08093B8E
-_08093BAE:
- adds r1, r7, 0
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x9F
- bgt _08093BD4
- ldr r4, _08093C04 @ =gUnknown_03004DE0
- ldr r0, _08093C08 @ =0x0000fffc
- adds r2, r1, r0
-_08093BBE:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r0, r1, 1
- adds r0, r4
- strh r2, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- cmp r1, 0x9F
- ble _08093BBE
-_08093BD4:
- movs r0, 0x1
- ldr r1, _08093BFC @ =0x02000000
- strb r0, [r1, 0x4]
- mov r2, r8
- movs r4, 0xA
- ldrsh r0, [r2, r4]
- cmp r0, 0x4A
- ble _08093BEA
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_08093BEA:
- movs r0, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08093BFC: .4byte 0x02000000
-_08093C00: .4byte 0xffff0000
-_08093C04: .4byte gUnknown_03004DE0
-_08093C08: .4byte 0x0000fffc
- thumb_func_end sub_8093AF0
-
- thumb_func_start sub_8093C0C
-sub_8093C0C: @ 8093C0C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80939C0
- bl sub_8093DAC
- ldr r0, _08093C34 @ =0x02000000
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- bne _08093C24
- bl sub_80939A4
-_08093C24:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08093C34: .4byte 0x02000000
- thumb_func_end sub_8093C0C
-
- thumb_func_start sub_8093C38
-sub_8093C38: @ 8093C38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r0
- ldr r1, _08093D40 @ =0x02000000
- movs r2, 0
- strb r2, [r1, 0x4]
- ldrh r0, [r0, 0xA]
- subs r0, 0x3
- mov r3, r8
- strh r0, [r3, 0xA]
- lsls r0, 16
- cmp r0, 0
- bgt _08093C5C
- strh r2, [r3, 0xA]
-_08093C5C:
- mov r4, r8
- movs r0, 0xA
- ldrsh r7, [r4, r0]
- movs r0, 0xA0
- subs r0, r7
- mov r9, r0
- subs r4, r0, r7
- negs r0, r7
- lsls r6, r0, 16
- movs r0, 0xA0
- lsls r0, 16
- adds r1, r4, 0
- bl __udivsi3
- adds r5, r0, 0
- ldr r1, _08093D44 @ =0xffff0000
- adds r5, r1
- adds r0, r5, 0
- muls r0, r4
- adds r0, r6
- mov r10, r0
- adds r0, r5, 0
- adds r1, r4, 0
- bl __udivsi3
- str r0, [sp]
- lsrs r5, 1
- movs r3, 0
- cmp r3, r7
- bcs _08093CB8
- ldr r2, _08093D48 @ =gUnknown_03004DE0
- mov r12, r2
- ldr r0, _08093D4C @ =0x0000fffc
- adds r4, r0, 0
-_08093CA0:
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, r0, 1
- add r1, r12
- subs r2, r4, r0
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- asrs r0, 16
- cmp r0, r7
- bcc _08093CA0
-_08093CB8:
- lsls r2, r3, 16
- mov r1, r9
- lsls r0, r1, 16
- asrs r1, r0, 16
- mov r4, r10
- lsrs r7, r4, 16
- cmp r2, r0
- bge _08093CF2
- ldr r0, _08093D48 @ =gUnknown_03004DE0
- mov r9, r0
- ldr r3, _08093D4C @ =0x0000fffc
- mov r12, r3
- adds r4, r1, 0
-_08093CD2:
- lsrs r1, r6, 16
- adds r6, r5
- ldr r0, [sp]
- adds r5, r0
- asrs r2, 16
- lsls r0, r2, 1
- add r0, r9
- add r1, r12
- strh r1, [r0]
- adds r2, 0x1
- lsls r2, 16
- lsrs r3, r2, 16
- lsls r2, r3, 16
- asrs r0, r2, 16
- cmp r0, r4
- blt _08093CD2
-_08093CF2:
- adds r1, r7, 0
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x9F
- bgt _08093D18
- ldr r4, _08093D48 @ =gUnknown_03004DE0
- ldr r0, _08093D4C @ =0x0000fffc
- adds r2, r1, r0
-_08093D02:
- lsls r1, r3, 16
- asrs r1, 16
- lsls r0, r1, 1
- adds r0, r4
- strh r2, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- asrs r1, 16
- cmp r1, 0x9F
- ble _08093D02
-_08093D18:
- movs r0, 0x1
- ldr r1, _08093D40 @ =0x02000000
- strb r0, [r1, 0x4]
- mov r2, r8
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bgt _08093D2E
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_08093D2E:
- movs r0, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08093D40: .4byte 0x02000000
-_08093D44: .4byte 0xffff0000
-_08093D48: .4byte gUnknown_03004DE0
-_08093D4C: .4byte 0x0000fffc
- thumb_func_end sub_8093C38
-
- thumb_func_start sub_8093D50
-sub_8093D50: @ 8093D50
- push {lr}
- ldr r1, _08093D74 @ =0x02000000
- movs r0, 0
- strb r0, [r1, 0x4]
- bl SetHBlankCallback
- bl sub_8093E04
- ldr r0, _08093D78 @ =sub_8093A68
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08093D74: .4byte 0x02000000
-_08093D78: .4byte sub_8093A68
- thumb_func_end sub_8093D50
-
- thumb_func_start sub_8093D7C
-sub_8093D7C: @ 8093D7C
- ldr r1, _08093DA0 @ =gUnknown_03004DE0
- ldr r0, _08093DA4 @ =REG_VCOUNT
- ldrh r2, [r0]
- movs r0, 0xFF
- ands r0, r2
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _08093DA8 @ =REG_BG0VOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08093DA0: .4byte gUnknown_03004DE0
-_08093DA4: .4byte REG_VCOUNT
-_08093DA8: .4byte REG_BG0VOFS
- thumb_func_end sub_8093D7C
-
- thumb_func_start sub_8093DAC
-sub_8093DAC: @ 8093DAC
- push {lr}
- ldr r0, _08093DBC @ =0x02000000
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- beq _08093DC0
- bl sub_8093DEC
- b _08093DC4
- .align 2, 0
-_08093DBC: .4byte 0x02000000
-_08093DC0:
- bl sub_8093DC8
-_08093DC4:
- pop {r0}
- bx r0
- thumb_func_end sub_8093DAC
-
- thumb_func_start sub_8093DC8
-sub_8093DC8: @ 8093DC8
- push {lr}
- bl MenuZeroFillScreen
- bl sub_80940E4
- bl sub_8093F14
- bl sub_8093F80
- bl sub_8093FD0
- bl sub_8094038
- bl sub_8094140
- pop {r0}
- bx r0
- thumb_func_end sub_8093DC8
-
- thumb_func_start sub_8093DEC
-sub_8093DEC: @ 8093DEC
- push {lr}
- bl MenuZeroFillScreen
- bl sub_80940E4
- bl sub_8093F48
- bl sub_8094188
- pop {r0}
- bx r0
- thumb_func_end sub_8093DEC
-
- thumb_func_start sub_8093E04
-sub_8093E04: @ 8093E04
- ldr r0, _08093E20 @ =REG_BG0VOFS
- ldr r2, _08093E24 @ =0x0000fffc
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- movs r2, 0
- strh r2, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r2, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08093E20: .4byte REG_BG0VOFS
-_08093E24: .4byte 0x0000fffc
- thumb_func_end sub_8093E04
-
- thumb_func_start sub_8093E28
-sub_8093E28: @ 8093E28
- push {r4-r7,lr}
- bl sub_8093EA0
- ldr r0, _08093E84 @ =gUnknown_083B5F6C
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0xA4
- lsls r5, 5
- ldr r1, _08093E8C @ =0x040000d4
- ldr r6, _08093E90 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08093E4E:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08093E4E
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _08093E94 @ =gBadgesTiles
- ldr r2, _08093E98 @ =0x06001480
- ldr r0, _08093E8C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08093E9C @ =0x80000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08093E84: .4byte gUnknown_083B5F6C
-_08093E88: .4byte gMenuTrainerCard_Gfx
-_08093E8C: .4byte 0x040000d4
-_08093E90: .4byte 0x80000800
-_08093E94: .4byte gBadgesTiles
-_08093E98: .4byte 0x06001480
-_08093E9C: .4byte 0x80000200
- thumb_func_end sub_8093E28
-
- thumb_func_start sub_8093EA0
-sub_8093EA0: @ 8093EA0
- push {r4,lr}
- ldr r1, _08093EE4 @ =gUnknown_083B5EF8
- ldr r4, _08093EE8 @ =0x02000000
- ldrb r0, [r4, 0x2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08093EEC @ =gBadgesPalette
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08093EF0 @ =gUnknown_083B5F4C
- movs r1, 0x40
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x64
- ldrb r0, [r4]
- cmp r0, 0
- beq _08093EDC
- ldr r0, _08093EF4 @ =gUnknown_083B5F0C
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
-_08093EDC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08093EE4: .4byte gUnknown_083B5EF8
-_08093EE8: .4byte 0x02000000
-_08093EEC: .4byte gBadgesPalette
-_08093EF0: .4byte gUnknown_083B5F4C
-_08093EF4: .4byte gUnknown_083B5F0C
- thumb_func_end sub_8093EA0
-
- thumb_func_start sub_8093EF8
-sub_8093EF8: @ 8093EF8
- push {lr}
- ldr r0, _08093F0C @ =0x02000000
- adds r0, 0x64
- ldrb r0, [r0]
- ldr r2, _08093F10 @ =0x06001880
- movs r1, 0x50
- bl LoadTrainerGfx_TrainerCard
- pop {r0}
- bx r0
- .align 2, 0
-_08093F0C: .4byte 0x02000000
-_08093F10: .4byte 0x06001880
- thumb_func_end sub_8093EF8
-
- thumb_func_start sub_8093F14
-sub_8093F14: @ 8093F14
- push {lr}
- sub sp, 0x8
- ldr r0, _08093F3C @ =gUnknown_083B5EEC
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, _08093F40 @ =0x02000000
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, _08093F44 @ =0x06004800
- movs r2, 0xA0
- lsls r2, 1
- bl CpuFastSet
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_08093F3C: .4byte gUnknown_083B5EEC
-_08093F40: .4byte 0x02000000
-_08093F44: .4byte 0x06004800
- thumb_func_end sub_8093F14
-
- thumb_func_start sub_8093F48
-sub_8093F48: @ 8093F48
- push {lr}
- ldr r0, _08093F5C @ =gUnknown_08E8CFC0
- ldr r1, _08093F60 @ =0x06004800
- movs r2, 0xA0
- lsls r2, 1
- bl CpuFastSet
- pop {r0}
- bx r0
- .align 2, 0
-_08093F5C: .4byte gUnknown_08E8CFC0
-_08093F60: .4byte 0x06004800
- thumb_func_end sub_8093F48
-
- thumb_func_start sub_8093F64
-sub_8093F64: @ 8093F64
- push {lr}
- ldr r0, _08093F78 @ =gUnknown_08E8D9C0
- ldr r1, _08093F7C @ =0x06005000
- movs r2, 0xA0
- lsls r2, 1
- bl CpuFastSet
- pop {r0}
- bx r0
- .align 2, 0
-_08093F78: .4byte gUnknown_08E8D9C0
-_08093F7C: .4byte 0x06005000
- thumb_func_end sub_8093F64
-
- thumb_func_start sub_8093F80
-sub_8093F80: @ 8093F80
- push {r4-r7,lr}
- movs r5, 0xC4
- ldr r7, _08093FCC @ =0x06004000
- movs r1, 0x5
- movs r0, 0xA0
- lsls r0, 7
- adds r6, r0, 0
-_08093F8E:
- movs r0, 0x13
- lsls r3, r1, 16
- asrs r4, r3, 11
-_08093F94:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- adds r1, r7
- adds r0, r5, 0
- orrs r0, r6
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1A
- ble _08093F94
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _08093F8E
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08093FCC: .4byte 0x06004000
- thumb_func_end sub_8093F80
-
- thumb_func_start sub_8093FD0
-sub_8093FD0: @ 8093FD0
- push {r4-r6,lr}
- ldr r4, _0809402C @ =0x06004000
- movs r2, 0xF
- ldr r0, _08094030 @ =0x02000000
- ldrb r0, [r0, 0x2]
- adds r0, 0xF
- cmp r2, r0
- bge _08094002
- movs r6, 0xC0
- lsls r6, 1
- ldr r1, _08094034 @ =0x0000408f
- adds r5, r1, 0
- adds r3, r0, 0
-_08093FEA:
- lsls r1, r2, 16
- asrs r1, 16
- lsls r0, r1, 1
- adds r0, r4
- adds r0, r6
- strh r5, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r2, r1, 16
- asrs r1, 16
- cmp r1, r3
- blt _08093FEA
-_08094002:
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, 0x12
- bgt _08094024
- movs r3, 0xC0
- lsls r3, 1
- movs r2, 0
-_08094010:
- asrs r0, r1, 16
- lsls r1, r0, 1
- adds r1, r4
- adds r1, r3
- strh r2, [r1]
- adds r0, 0x1
- lsls r1, r0, 16
- asrs r0, r1, 16
- cmp r0, 0x12
- ble _08094010
-_08094024:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809402C: .4byte 0x06004000
-_08094030: .4byte 0x02000000
-_08094034: .4byte 0x0000408f
- thumb_func_end sub_8093FD0
-
- thumb_func_start sub_8094038
-sub_8094038: @ 8094038
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r1, _080940D0 @ =0x02000000
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080940C2
- ldr r0, _080940D4 @ =0x06004000
- mov r9, r0
- movs r0, 0
- movs r2, 0x4
- adds r1, 0xE
- mov r8, r1
- ldr r7, _080940D8 @ =gUnknown_083B5F8C
- movs r1, 0xC0
- lsls r1, 6
- adds r6, r1, 0
- adds r1, r7, 0x6
- mov r12, r1
-_08094060:
- lsls r0, 16
- asrs r4, r0, 16
- mov r1, r8
- adds r0, r4, r1
- ldrb r0, [r0]
- lsls r5, r2, 16
- cmp r0, 0
- beq _080940AE
- asrs r1, r5, 15
- add r1, r9
- movs r2, 0xF0
- lsls r2, 2
- adds r3, r1, r2
- lsls r2, r4, 3
- adds r0, r2, r7
- ldrh r0, [r0]
- orrs r0, r6
- strh r0, [r3]
- ldr r0, _080940DC @ =0x000003c2
- adds r3, r1, r0
- adds r0, r7, 0x2
- adds r0, r2, r0
- ldrh r0, [r0]
- orrs r0, r6
- strh r0, [r3]
- movs r0, 0x80
- lsls r0, 3
- adds r3, r1, r0
- adds r0, r7, 0x4
- adds r0, r2, r0
- ldrh r0, [r0]
- orrs r0, r6
- strh r0, [r3]
- ldr r0, _080940E0 @ =0x00000402
- adds r1, r0
- add r2, r12
- ldrh r0, [r2]
- orrs r0, r6
- strh r0, [r1]
-_080940AE:
- adds r1, r4, 0x1
- lsls r1, 16
- movs r2, 0xC0
- lsls r2, 10
- adds r0, r5, r2
- lsrs r2, r0, 16
- lsrs r0, r1, 16
- asrs r1, 16
- cmp r1, 0x7
- ble _08094060
-_080940C2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080940D0: .4byte 0x02000000
-_080940D4: .4byte 0x06004000
-_080940D8: .4byte gUnknown_083B5F8C
-_080940DC: .4byte 0x000003c2
-_080940E0: .4byte 0x00000402
- thumb_func_end sub_8094038
-
- thumb_func_start sub_80940E4
-sub_80940E4: @ 80940E4
- push {r4,lr}
- movs r2, 0
- ldr r1, _08094108 @ =0x06004000
- movs r4, 0
- ldr r3, _0809410C @ =0x000003ff
-_080940EE:
- strh r4, [r1]
- lsls r0, r2, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- adds r1, 0x2
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, r3
- ble _080940EE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08094108: .4byte 0x06004000
-_0809410C: .4byte 0x000003ff
- thumb_func_end sub_80940E4
-
- thumb_func_start sub_8094110
-sub_8094110: @ 8094110
- push {r4-r6,lr}
- ldr r6, _0809413C @ =0x06004800
- movs r2, 0x3
- movs r5, 0xA0
- lsls r5, 2
- movs r3, 0x1
- movs r4, 0xB0
- lsls r4, 2
-_08094120:
- lsls r0, r2, 1
- adds r0, r6
- adds r1, r0, r5
- strh r3, [r1]
- adds r0, r4
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x10
- bls _08094120
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809413C: .4byte 0x06004800
- thumb_func_end sub_8094110
-
- thumb_func_start sub_8094140
-sub_8094140: @ 8094140
- push {r4,r5,lr}
- ldr r0, _0809417C @ =gWindowConfig_81E6DC4
- bl BasicInitMenuWindow
- ldr r4, _08094180 @ =gStringVar1
- ldr r5, _08094184 @ =0x02000094
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringCopy
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl ConvertInternationalString
- adds r0, r4, 0
- movs r1, 0x7
- movs r2, 0x5
- bl MenuPrint
- bl sub_80941D8
- bl sub_8094200
- bl sub_8094218
- bl sub_809429C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809417C: .4byte gWindowConfig_81E6DC4
-_08094180: .4byte gStringVar1
-_08094184: .4byte 0x02000094
- thumb_func_end sub_8094140
-
- thumb_func_start sub_8094188
-sub_8094188: @ 8094188
- push {lr}
- ldr r0, _080941D0 @ =gWindowConfig_81E6DC4
- bl BasicInitMenuWindow
- bl sub_80942F8
- bl sub_8094334
- bl sub_80943C4
- bl sub_8094428
- bl sub_8094498
- bl sub_80944E8
- bl sub_8094538
- ldr r0, _080941D4 @ =gWindowConfig_81E6DE0
- bl BasicInitMenuWindow
- bl sub_8094354
- bl sub_80943E4
- bl sub_8094448
- bl sub_80944B8
- bl sub_8094508
- bl sub_8094558
- pop {r0}
- bx r0
- .align 2, 0
-_080941D0: .4byte gWindowConfig_81E6DC4
-_080941D4: .4byte gWindowConfig_81E6DE0
- thumb_func_end sub_8094188
-
- thumb_func_start sub_80941D8
-sub_80941D8: @ 80941D8
- push {lr}
- sub sp, 0x8
- ldr r0, _080941FC @ =0x02000000
- adds r0, 0x72
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x14
- movs r2, 0x2
- bl MenuPrint
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080941FC: .4byte 0x02000000
- thumb_func_end sub_80941D8
-
- thumb_func_start sub_8094200
-sub_8094200: @ 8094200
- push {lr}
- ldr r0, _08094214 @ =0x02000000
- adds r0, 0x88
- ldr r0, [r0]
- movs r1, 0x10
- movs r2, 0x8
- bl sub_80B7AEC
- pop {r0}
- bx r0
- .align 2, 0
-_08094214: .4byte 0x02000000
- thumb_func_end sub_8094200
-
- thumb_func_start sub_8094218
-sub_8094218: @ 8094218
- push {lr}
- sub sp, 0x10
- ldr r1, _0809422C @ =0x02000000
- ldrb r0, [r1, 0x7]
- cmp r0, 0
- bne _08094230
- bl sub_8094110
- b _0809424A
- .align 2, 0
-_0809422C: .4byte 0x02000000
-_08094230:
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x10
- movs r2, 0xA
- bl MenuPrint_RightAligned
-_0809424A:
- add sp, 0x10
- pop {r0}
- bx r0
- thumb_func_end sub_8094218
-
- thumb_func_start sub_8094250
-sub_8094250: @ 8094250
- push {r4,r5,lr}
- sub sp, 0x10
- adds r5, r0, 0
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r0, _08094294 @ =gSaveBlock2
- ldrh r4, [r0, 0xE]
- ldrb r2, [r0, 0x10]
- ldr r1, _08094298 @ =0x02000000
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _08094272
- adds r0, r1, 0
- adds r0, 0x74
- ldrh r4, [r0]
- adds r0, 0x2
- ldrh r2, [r0]
-_08094272:
- lsls r3, 16
- asrs r3, 16
- mov r0, sp
- adds r1, r4, 0
- bl FormatPlayTime
- adds r0, r5, 0
- mov r1, sp
- movs r2, 0x30
- movs r3, 0x1
- bl sub_8072C74
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08094294: .4byte gSaveBlock2
-_08094298: .4byte 0x02000000
- thumb_func_end sub_8094250
-
- thumb_func_start sub_809429C
-sub_809429C: @ 809429C
- push {r4-r6,lr}
- ldr r6, _080942F0 @ =0x02000000
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _080942EA
- ldr r0, _080942F4 @ =gStringVar1
- adds r1, r6, 0
- adds r1, 0x20
- bl StringCopy
- movs r5, 0
- strb r5, [r0]
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0x30
- bl StringCopy
- ldr r4, _080942F4 @ =gStringVar1
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0xE
- bl MenuPrint
- adds r1, r6, 0
- adds r1, 0x40
- adds r0, r4, 0
- bl StringCopy
- strb r5, [r0]
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0x50
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x10
- bl MenuPrint
-_080942EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080942F0: .4byte 0x02000000
-_080942F4: .4byte gStringVar1
- thumb_func_end sub_809429C
-
- thumb_func_start sub_80942F8
-sub_80942F8: @ 80942F8
- push {r4,r5,lr}
- ldr r4, _08094328 @ =gStringVar1
- ldr r5, _0809432C @ =0x02000094
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringCopy
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r1, _08094330 @ =gOtherText_TrainersTrainerCard
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1C
- movs r2, 0x2
- bl MenuPrint_RightAligned
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08094328: .4byte gStringVar1
-_0809432C: .4byte 0x02000094
-_08094330: .4byte gOtherText_TrainersTrainerCard
- thumb_func_end sub_80942F8
-
- thumb_func_start sub_8094334
-sub_8094334: @ 8094334
- push {lr}
- ldr r0, _0809434C @ =0x02000000
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _08094348
- ldr r0, _08094350 @ =gOtherText_FirstHOF
- movs r1, 0x3
- movs r2, 0x5
- bl MenuPrint
-_08094348:
- pop {r0}
- bx r0
- .align 2, 0
-_0809434C: .4byte 0x02000000
-_08094350: .4byte gOtherText_FirstHOF
- thumb_func_end sub_8094334
-
- thumb_func_start sub_8094354
-sub_8094354: @ 8094354
- push {r4,r5,lr}
- ldr r5, _080943B8 @ =0x02000000
- ldrb r0, [r5, 0x8]
- cmp r0, 0
- beq _080943B0
- ldr r2, _080943BC @ =gStringVar1
- adds r0, r5, 0
- adds r0, 0x6A
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- ldr r4, _080943C0 @ =gUnknown_083B5EF4
- adds r1, r4, 0
- bl StringCopy
- adds r2, r0, 0
- adds r0, r5, 0
- adds r0, 0x6C
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- adds r1, r4, 0
- bl StringCopy
- adds r2, r0, 0
- adds r0, r5, 0
- adds r0, 0x6E
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _080943BC @ =gStringVar1
- movs r1, 0x1C
- movs r2, 0x5
- bl MenuPrint_RightAligned
-_080943B0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080943B8: .4byte 0x02000000
-_080943BC: .4byte gStringVar1
-_080943C0: .4byte gUnknown_083B5EF4
- thumb_func_end sub_8094354
-
- thumb_func_start sub_80943C4
-sub_80943C4: @ 80943C4
- push {lr}
- ldr r0, _080943DC @ =0x02000000
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- beq _080943D8
- ldr r0, _080943E0 @ =gOtherText_LinkCableBattles
- movs r1, 0x3
- movs r2, 0x7
- bl MenuPrint
-_080943D8:
- pop {r0}
- bx r0
- .align 2, 0
-_080943DC: .4byte 0x02000000
-_080943E0: .4byte gOtherText_LinkCableBattles
- thumb_func_end sub_80943C4
-
- thumb_func_start sub_80943E4
-sub_80943E4: @ 80943E4
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _08094424 @ =0x02000000
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- beq _0809441C
- adds r0, r4, 0
- adds r0, 0x78
- ldrh r1, [r0]
- mov r0, sp
- bl ConvertIntToDecimalString
- mov r0, sp
- movs r1, 0x16
- movs r2, 0x7
- bl MenuPrint_RightAligned
- adds r0, r4, 0
- adds r0, 0x7A
- ldrh r1, [r0]
- mov r0, sp
- bl ConvertIntToDecimalString
- mov r0, sp
- movs r1, 0x1C
- movs r2, 0x7
- bl MenuPrint_RightAligned
-_0809441C:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08094424: .4byte 0x02000000
- thumb_func_end sub_80943E4
-
- thumb_func_start sub_8094428
-sub_8094428: @ 8094428
- push {lr}
- ldr r0, _08094440 @ =0x02000000
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0809443C
- ldr r0, _08094444 @ =gOtherText_BattleTowerWinRecord
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrint
-_0809443C:
- pop {r0}
- bx r0
- .align 2, 0
-_08094440: .4byte 0x02000000
-_08094444: .4byte gOtherText_BattleTowerWinRecord
- thumb_func_end sub_8094428
-
- thumb_func_start sub_8094448
-sub_8094448: @ 8094448
- push {r4,lr}
- sub sp, 0x10
- ldr r4, _08094494 @ =0x02000000
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- beq _0809448C
- adds r0, r4, 0
- adds r0, 0x7C
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C44
- mov r0, sp
- movs r1, 0x70
- movs r2, 0x78
- movs r3, 0
- bl MenuPrint_PixelCoords
- adds r0, r4, 0
- adds r0, 0x7E
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C44
- mov r0, sp
- movs r1, 0x95
- movs r2, 0x78
- movs r3, 0
- bl MenuPrint_PixelCoords
-_0809448C:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08094494: .4byte 0x02000000
- thumb_func_end sub_8094448
-
- thumb_func_start sub_8094498
-sub_8094498: @ 8094498
- push {lr}
- ldr r0, _080944B0 @ =0x02000000
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- beq _080944AC
- ldr r0, _080944B4 @ =gOtherText_ContestRecord
- movs r1, 0x3
- movs r2, 0xD
- bl MenuPrint
-_080944AC:
- pop {r0}
- bx r0
- .align 2, 0
-_080944B0: .4byte 0x02000000
-_080944B4: .4byte gOtherText_ContestRecord
- thumb_func_end sub_8094498
-
- thumb_func_start sub_80944B8
-sub_80944B8: @ 80944B8
- push {lr}
- sub sp, 0x8
- ldr r1, _080944E4 @ =0x02000000
- ldrb r0, [r1, 0xB]
- cmp r0, 0
- beq _080944DE
- adds r0, r1, 0
- adds r0, 0x80
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x1C
- movs r2, 0xD
- bl MenuPrint_RightAligned
-_080944DE:
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080944E4: .4byte 0x02000000
- thumb_func_end sub_80944B8
-
- thumb_func_start sub_80944E8
-sub_80944E8: @ 80944E8
- push {lr}
- ldr r0, _08094500 @ =0x02000000
- ldrb r0, [r0, 0xC]
- cmp r0, 0
- beq _080944FC
- ldr r0, _08094504 @ =gOtherText_MixingRecord
- movs r1, 0x3
- movs r2, 0xB
- bl MenuPrint
-_080944FC:
- pop {r0}
- bx r0
- .align 2, 0
-_08094500: .4byte 0x02000000
-_08094504: .4byte gOtherText_MixingRecord
- thumb_func_end sub_80944E8
-
- thumb_func_start sub_8094508
-sub_8094508: @ 8094508
- push {lr}
- sub sp, 0x8
- ldr r1, _08094534 @ =0x02000000
- ldrb r0, [r1, 0xC]
- cmp r0, 0
- beq _0809452E
- adds r0, r1, 0
- adds r0, 0x82
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x1C
- movs r2, 0xB
- bl MenuPrint_RightAligned
-_0809452E:
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_08094534: .4byte 0x02000000
- thumb_func_end sub_8094508
-
- thumb_func_start sub_8094538
-sub_8094538: @ 8094538
- push {lr}
- ldr r0, _08094550 @ =0x02000000
- ldrb r0, [r0, 0xD]
- cmp r0, 0
- beq _0809454C
- ldr r0, _08094554 @ =gOtherText_TradeRecord
- movs r1, 0x3
- movs r2, 0x9
- bl MenuPrint
-_0809454C:
- pop {r0}
- bx r0
- .align 2, 0
-_08094550: .4byte 0x02000000
-_08094554: .4byte gOtherText_TradeRecord
- thumb_func_end sub_8094538
-
- thumb_func_start sub_8094558
-sub_8094558: @ 8094558
- push {lr}
- sub sp, 0x8
- ldr r1, _08094584 @ =0x02000000
- ldrb r0, [r1, 0xD]
- cmp r0, 0
- beq _0809457E
- adds r0, r1, 0
- adds r0, 0x84
- ldrh r1, [r0]
- mov r0, sp
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x1C
- movs r2, 0x9
- bl MenuPrint_RightAligned
-_0809457E:
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_08094584: .4byte 0x02000000
- thumb_func_end sub_8094558
-
- thumb_func_start unref_sub_8094588
-unref_sub_8094588: @ 8094588
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r2, r1, 16
- ldr r4, _080945B4 @ =gOtherText_Boy
- ldr r0, _080945B8 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _0809459E
- ldr r4, _080945BC @ =gOtherText_Girl
-_0809459E:
- lsls r1, r3, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080945B4: .4byte gOtherText_Boy
-_080945B8: .4byte gSaveBlock2
-_080945BC: .4byte gOtherText_Girl
- thumb_func_end unref_sub_8094588
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data2.s b/data/data2.s
index 525068cbe..060d359de 100644
--- a/data/data2.s
+++ b/data/data2.s
@@ -13870,62 +13870,62 @@ gMatsudaDebugMenu_GoBackText:: @ 83C9337
gMatsudaDebugMenu_BattlePointsText:: @ 83C933B
.string "{COLOR MAGENTA}BP.$"
-gMatsudaDebugMenuText_Cool:
+MatsudaDebugMenuText_Cool:
.string "かっこよさ$" @ coolness
-gMatsudaDebugMenuText_Cute:
+MatsudaDebugMenuText_Cute:
.string "かわいさ$" @ cuteness
-gMatsudaDebugMenuText_Beauty:
+MatsudaDebugMenuText_Beauty:
.string "うつくしさ$" @ beauty
-gMatsudaDebugMenuText_Smart:
+MatsudaDebugMenuText_Smart:
.string "かしこさ$" @ smartness
-gMatsudaDebugMenuText_Tough:
+MatsudaDebugMenuText_Tough:
.string "たくましさ$" @ toughness
-gMatsudaDebugMenuText_Sheen:
+MatsudaDebugMenuText_Sheen:
.string "けづや$" @ sheen
.align 2
gMatsudaDebugMenuTextList1:: @ 83C9364
- .4byte gMatsudaDebugMenuText_Cool
- .4byte gMatsudaDebugMenuText_Cute
- .4byte gMatsudaDebugMenuText_Beauty
- .4byte gMatsudaDebugMenuText_Smart
- .4byte gMatsudaDebugMenuText_Tough
- .4byte gMatsudaDebugMenuText_Sheen
-
-Unknown_83C937C:
+ .4byte MatsudaDebugMenuText_Cool
+ .4byte MatsudaDebugMenuText_Cute
+ .4byte MatsudaDebugMenuText_Beauty
+ .4byte MatsudaDebugMenuText_Smart
+ .4byte MatsudaDebugMenuText_Tough
+ .4byte MatsudaDebugMenuText_Sheen
+
+MatsudaDebugMenuText_CoolContest:
.string "かっこよさコンテスト$" @ Cool Contest
-Unknown_83C9387:
+MatsudaDebugMenuText_BeautyContest:
.string "うつくしさコンテスト$" @ Beauty Contest
-Unknown_83C9392:
+MatsudaDebugMenuText_CuteContest:
.string "かわいさコンテスト $" @ Cute Contest
-Unknown_83C939D:
+MatsudaDebugMenuText_SmartContest:
.string "かしこさコンテスト $" @ Smart Contest
-Unknown_83C93A8:
+MatsudaDebugMenuText_ToughContest:
.string "たくましさコンテスト$" @ Tough Contest
.align 2
-gUnknown_083C93B4:: @ 83C93B4
- .4byte Unknown_83C937C
- .4byte Unknown_83C9387
- .4byte Unknown_83C9392
- .4byte Unknown_83C939D
- .4byte Unknown_83C93A8
+gMatsudaDebugMenuTextList2:: @ 83C93B4
+ .4byte MatsudaDebugMenuText_CoolContest
+ .4byte MatsudaDebugMenuText_BeautyContest
+ .4byte MatsudaDebugMenuText_CuteContest
+ .4byte MatsudaDebugMenuText_SmartContest
+ .4byte MatsudaDebugMenuText_ToughContest
-Unknown_83C93C8:
+MatsudaDebugMenuText_Fallarbor:
.string "ハジツゲ/ノーマル$" @ Fallarbor / Normal
-Unknown_83C93D2:
+MatsudaDebugMenuText_Verdanturf:
.string "シダケ/スーパー $" @ Verdanturf / Super
-Unknown_83C93DC:
+MatsudaDebugMenuText_Slateport:
.string "カイナ/ハイパー $" @ Slateport / Hyper
-Unknown_83C93E6:
+MatsudaDebugMenuText_Lilycove:
.string "ミナモ/マスター $" @ Lilycove / Master
.align 2
-gUnknown_083C93F0:: @ 83C93F0
- .4byte Unknown_83C93C8
- .4byte Unknown_83C93D2
- .4byte Unknown_83C93DC
- .4byte Unknown_83C93E6
+gMatsudaDebugMenuTextList3:: @ 83C93F0
+ .4byte MatsudaDebugMenuText_Fallarbor @ Normal
+ .4byte MatsudaDebugMenuText_Verdanturf @ Super
+ .4byte MatsudaDebugMenuText_Slateport @ Hyper
+ .4byte MatsudaDebugMenuText_Lilycove @ Master
gUnknown_083C9400:: @ 83C9400
.incbin "baserom.gba", 0x003c9400, 0x8
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 2f9b511b6..f533d8729 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -237,6 +237,7 @@ void objc_exclamation_mark_probably(struct Sprite *sprite);
// asm/rom_80859BC.o
u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *);
+void LoadTrainerGfx_TrainerCard(u8 gender, int, void *);
u8 CreateBirchSprite(u8, u8, u8);
void remove_some_task(void);
void dp12_8087EA4(void);
@@ -292,6 +293,7 @@ void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCal
bool8 IsEnoughMoney(u32, u32);
void sub_80B79B8(u32 *, u32);
void sub_80B79E0(u32 *, u32);
+void sub_80B7AEC(u32, u8 left, u8 top);
void sub_80B7BEC(u32, u8, u8);
void sub_80B7C14(u32, u8, u8);
void RemoveMoneyLabelObject(u8, u8);
@@ -360,6 +362,7 @@ void sub_80E6084();
// asm/easy_chat.o
void sub_80E6764(void);
+void sub_80EB3FC(u8 *, u16);
u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16);
u16 sub_80EB72C(u16);
@@ -394,7 +397,6 @@ void sub_8106630(u32);
// asm/rom6.o
bool8 npc_before_player_of_type(u8);
u8 oei_task_add(void);
-
void sub_810C994(void);
void sub_810CA6C(s32);
s16 sub_810CAE4(u8, struct Pokeblock *);
diff --git a/include/menu.h b/include/menu.h
index 28710b7b9..9592fc291 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -15,7 +15,7 @@ bool32 MultistepInitMenuWindowContinue(void);
void unref_sub_8071DA4(struct WindowConfig *, u16);
void MenuLoadTextWindowGraphics_OverrideFrameType(u8);
void MenuLoadTextWindowGraphics(void);
-void BasicInitMenuWindow(struct WindowConfig *);
+void BasicInitMenuWindow(const struct WindowConfig *);
void MenuPrint(u8 *, u8, u8);
void MenuZeroFillWindowRect(u8, u8, u8, u8);
void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
diff --git a/include/pokemon.h b/include/pokemon.h
index 956a3984f..dd80e1ea1 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -128,41 +128,41 @@ struct PokemonSubstruct2
struct PokemonSubstruct3
{
- u8 pokerus;
- u8 metLocation;
+ /* 0x00 */ u8 pokerus;
+ /* 0x01 */ u8 metLocation;
- u16 metLevel:7;
- u16 metGame:4;
- u16 pokeball:4;
- u16 otGender:1;
+ /* 0x02 */ u16 metLevel:7;
+ /* 0x02 */ u16 metGame:4;
+ /* 0x03 */ u16 pokeball:4;
+ /* 0x03 */ u16 otGender:1;
- u32 hpIV:5;
- u32 attackIV:5;
- u32 defenseIV:5;
- u32 speedIV:5;
- u32 spAttackIV:5;
- u32 spDefenseIV:5;
- u32 isEgg:1;
- u32 altAbility:1;
+ /* 0x04 */ u32 hpIV:5;
+ /* 0x04 */ u32 attackIV:5;
+ /* 0x05 */ u32 defenseIV:5;
+ /* 0x05 */ u32 speedIV:5;
+ /* 0x05 */ u32 spAttackIV:5;
+ /* 0x06 */ u32 spDefenseIV:5;
+ /* 0x07 */ u32 isEgg:1;
+ /* 0x07 */ u32 altAbility:1;
- u32 coolRibbon:3;
- u32 beautyRibbon:3;
- u32 cuteRibbon:3;
- u32 smartRibbon:3;
- u32 toughRibbon:3;
- u32 championRibbon:1;
- u32 winningRibbon:1;
- u32 victoryRibbon:1;
- u32 artistRibbon:1;
- u32 effortRibbon:1;
- u32 giftRibbon1:1;
- u32 giftRibbon2:1;
- u32 giftRibbon3:1;
- u32 giftRibbon4:1;
- u32 giftRibbon5:1;
- u32 giftRibbon6:1;
- u32 giftRibbon7:1;
- u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald
+ /* 0x08 */ u32 coolRibbon:3;
+ /* 0x08 */ u32 beautyRibbon:3;
+ /* 0x08 */ u32 cuteRibbon:3;
+ /* 0x09 */ u32 smartRibbon:3;
+ /* 0x09 */ u32 toughRibbon:3;
+ /* 0x09 */ u32 championRibbon:1;
+ /* 0x0A */ u32 winningRibbon:1;
+ /* 0x0A */ u32 victoryRibbon:1;
+ /* 0x0A */ u32 artistRibbon:1;
+ /* 0x0A */ u32 effortRibbon:1;
+ /* 0x0A */ u32 giftRibbon1:1;
+ /* 0x0A */ u32 giftRibbon2:1;
+ /* 0x0A */ u32 giftRibbon3:1;
+ /* 0x0A */ u32 giftRibbon4:1;
+ /* 0x0B */ u32 giftRibbon5:1;
+ /* 0x0B */ u32 giftRibbon6:1;
+ /* 0x0B */ u32 giftRibbon7:1;
+ /* 0x0B */ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald
};
union PokemonSubstruct
diff --git a/include/text.h b/include/text.h
index ad5313eed..d0d418eab 100644
--- a/include/text.h
+++ b/include/text.h
@@ -86,8 +86,8 @@ extern const struct WindowConfig gWindowConfig_81E6D54;
extern const struct WindowConfig gWindowConfig_81E6D70;
extern const struct WindowConfig gWindowConfig_81E6D8C;
extern const struct WindowConfig gWindowConfig_81E6DA8;
-extern const struct WindowConfig gWindowConfig_81E6DC4;
-extern const struct WindowConfig gWindowConfig_81E6DE0;
+extern const struct WindowConfig WindowConfig_TrainerCard_Back_Values;
+extern const struct WindowConfig WindowConfig_TrainerCard_Back_Labels;
extern const struct WindowConfig gWindowConfig_81E6DFC;
extern const struct WindowConfig gWindowConfig_81E6E18;
extern const struct WindowConfig gWindowConfig_81E6E34;
diff --git a/include/trainer_card.h b/include/trainer_card.h
index aca964151..7269c0b20 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -3,7 +3,7 @@
struct TrainerCard {
/*0x00*/ u8 gender;
- /*0x01*/ u8 var_1;
+ /*0x01*/ u8 stars;
/*0x02*/ bool8 hasPokedex;
/*0x03*/ bool8 var_3;
/*0x04*/ bool8 var_4;
@@ -17,8 +17,8 @@ struct TrainerCard {
/*0x12*/ u16 playTimeMinutes;
/*0x14*/ u16 linkBattleWins;
/*0x16*/ u16 linkBattleLosses;
- /*0x18*/ u16 var_18;
- /*0x1A*/ u16 var_1A;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerLosses;
/*0x1C*/ u16 contestsWithFriends;
/*0x1E*/ u16 pokeblocksWithFriends;
/*0x20*/ u16 pokemonTrades;
@@ -30,76 +30,23 @@ struct TrainerCard {
void sub_8093110(void (*)(void));
void sub_8093130(u8, void (*)(void));
-void sub_8093324(void);
void sub_8093390(struct TrainerCard *);
u8 sub_80934C4(u8 id);
-void sub_8093598(void);
-void sub_80935EC(void);
-void sub_8093610(void);
-void sub_8093688(void);
-// sub_80936D4
-void sub_80937A4(void);
-void sub_80937BC(void);
-void sub_80937D8(void);
-void sub_80937F0(void);
-void nullsub_15(void);
-void sub_8093800(void);
-// sub_809380C
-// sub_809382C
-// sub_8093864
-// sub_80938A8
-// sub_80938CC
-// sub_8093918
-// sub_8093938
-// sub_8093954
-// sub_8093980
-// sub_80939A4
-// sub_80939C0
-// sub_80939DC
-// sub_8093A28
-// sub_8093A48
-// sub_8093A68
-// sub_8093AA0
-// sub_8093AF0
-// sub_8093C0C
-// sub_8093C38
-// sub_8093D50
-// sub_8093D7C
-// sub_8093DAC
-// sub_8093DC8
-// sub_8093DEC
-// sub_8093E04
-// sub_8093E28
-// sub_8093EA0
-// sub_8093EF8
-// sub_8093F14
-// sub_8093F48
-// sub_8093F64
-// sub_8093F80
-// sub_8093FD0
-// sub_8094038
-// sub_80940E4
-// sub_8094110
-// sub_8094140
-// sub_8094188
-// sub_80941D8
-// sub_8094200
-// sub_8094218
-// sub_8094250
-// sub_809429C
-// sub_80942F8
-// sub_8094334
-// sub_8094354
-// sub_80943C4
-// sub_80943E4
-// sub_8094428
-// sub_8094448
-// sub_8094498
-// sub_80944B8
-// sub_80944E8
-// sub_8094508
-// sub_8094538
-// sub_8094558
-// unref_sub_8094588
+
+// gUnknown_083B5EBC:: @ 83B5EBC
+bool8 sub_8093864();
+bool8 sub_80938A8();
+bool8 sub_80938CC();
+bool8 sub_8093918();
+bool8 sub_8093938();
+bool8 sub_8093954();
+bool8 sub_8093980();
+
+// gUnknown_083B5ED8:: @ 83B5ED8
+bool8 sub_8093AA0();
+bool8 sub_8093AF0();
+bool8 sub_8093C0C(struct TrainerCard *trainerCard);
+bool8 sub_8093C38();
+bool8 sub_8093D50(void);
#endif // GUARD_TRAINER_CARD_H
diff --git a/ld_script.txt b/ld_script.txt
index b1b875594..716e0563e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -110,7 +110,6 @@ SECTIONS {
src/pokedex.o(.text);
asm/pokedex.o(.text);
src/trainer_card.o(.text);
- asm/trainer_card.o(.text);
src/save_menu_util.o(.text);
asm/rom_8094928.o(.text);
asm/item_menu.o(.text);
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index 9c20b4078..18f644cbb 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -12,7 +12,7 @@
extern u8 gUnknown_0203869A;
extern u8 gUnknown_0203869B;
-extern u8 gUnknown_02038695;
+extern u8 gContestPlayerMonIndex;
extern u16 gScriptContestCategory;
extern u16 gScriptContestRank;
extern u8 (*gCallback_03004AE8)(void);
@@ -39,9 +39,7 @@ extern void sub_805469C(void);
extern void sub_80AE398(u8, u8);
extern void sub_80AE098(u8);
extern void sub_80AA5BC(u8);
-extern void sub_80AA5E8(u16);
-extern void sub_80AA658(u8);
-extern void sub_80AA614(u8, u8);
+extern u32 sub_80AE770(u8, u8);
extern struct Window gMenuWindow;
@@ -74,24 +72,27 @@ extern u8 gMoveNames[][13];
extern u8 gMatsudaDebugMenu_UnknownByteArray[];
extern u32 gMatsudaDebugMenuTextList1[];
+extern u32 gMatsudaDebugMenuTextList2[];
+extern u32 gMatsudaDebugMenuTextList3[];
extern u8 gMatsudaDebugMenuContestTopLeft[][2];
-struct UnknownStruct
-{
- u8 text[2];
- u8 unk2;
- u8 filler3[27];
- u16 unk1E[4];
- u8 unk26;
- u8 unk27;
- u8 unk28;
- u8 unk29;
- u8 unk2A;
- u8 unk2B;
- u8 filler2C[20];
+struct ContestPokemon
+{
+ /* 0x00 */ u16 species;
+ /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH];
+ /* 0x0D */ u8 trainerName[8];
+ /* 0x15 */ u8 filler15[9];
+ /* 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 filler2C[20];
};
-extern struct UnknownStruct gUnknown_02038570[];
+extern struct ContestPokemon gContestMons[];
extern bool8 gReceivedRemoteLinkPlayers;
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
@@ -111,6 +112,9 @@ void sub_80A9E3C(u8 taskId);
void sub_80A9ED8(u8);
void sub_80A9E80(u8);
void sub_80AA280(u8);
+void sub_80AA5E8(u8);
+void sub_80AA614(u8, u8);
+void sub_80AA658(u8);
u8 unref_sub_80A9B28(void)
{
@@ -303,7 +307,7 @@ void sub_80A9F10(u8 taskId)
{
if(gReceivedRemoteLinkPlayers)
{
- gUnknown_02038695 = GetMultiplayerId();
+ gContestPlayerMonIndex = GetMultiplayerId();
if(GetLinkPlayerCount() == 4)
{
gUnknown_0203869A = 1;
@@ -406,7 +410,7 @@ void sub_80AA10C(void)
gPaletteFade.bufferTransferDisabled = 0;
gUnknown_02038694 = 0;
- if(!(gUnknown_02038570[0].unk2))
+ if(!(gContestMons[0].nickname[0]))
sub_80AE398(0, 0);
sub_80AE098(gUnknown_02038694);
@@ -419,9 +423,9 @@ void sub_80AA10C(void)
}
gScriptContestCategory = gScriptContestRank = 0;
- zero = 0;
+ zero = 0; // it's possible this was some assignment that matsuda used to quickly edit and test things without changing whats passed to the later functions.
sub_80AA5BC(zero);
- sub_80AA5E8((u8)gScriptContestRank);
+ sub_80AA5E8(gScriptContestRank);
sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12);
sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC);
LoadSpriteSheet(gUnknown_083C92B4);
@@ -460,44 +464,704 @@ void sub_80AA280(u8 var)
void sub_80AA340(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk26, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].cool, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]);
}
void sub_80AA388(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk28, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].cute, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]);
}
void sub_80AA3D0(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk27, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].beauty, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]);
}
void sub_80AA418(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk29, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].smart, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]);
}
void sub_80AA460(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk2A, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].tough, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]);
}
void sub_80AA4A8(u8 var)
{
- ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk2B, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].sheen, STR_CONV_MODE_RIGHT_ALIGN, 3);
sub_8003460(&gMenuWindow, unk_2000000, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]);
}
void sub_80AA4F0(u8 var1, u8 var2)
{
FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1);
- sub_8003460(&gMenuWindow, gMoveNames[gUnknown_02038570[var1].unk1E[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]);
- ConvertIntToDecimalStringN(gStringVar1, gUnknown_02038570[var1].unk1E[var2], STR_CONV_MODE_LEADING_ZEROS, 3);
+ sub_8003460(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]);
+ ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3);
sub_8003460(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]);
}
+
+void sub_80AA5BC(u8 var)
+{
+ sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12);
+}
+
+void sub_80AA5E8(u8 var)
+{
+ sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4);
+}
+
+void sub_80AA614(u8 var1, u8 var2)
+{
+ u16 var = sub_80AE770(var1, var2);
+
+ ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC);
+}
+
+void sub_80AA658(u8 var)
+{
+ u8 i;
+
+ sub_80AA340(var);
+ sub_80AA388(var);
+ sub_80AA3D0(var);
+ sub_80AA418(var);
+ sub_80AA460(var);
+ sub_80AA4A8(var);
+
+ for(i = 0; i < 4; i++)
+ sub_80AA4F0(var, i);
+}
+
+void SetDebugMonForContest(void)
+{
+ SetMonData(&gPlayerParty, MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool);
+ SetMonData(&gPlayerParty, MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute);
+ SetMonData(&gPlayerParty, MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty);
+ SetMonData(&gPlayerParty, MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart);
+ SetMonData(&gPlayerParty, MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough);
+ SetMonData(&gPlayerParty, MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen);
+ SetMonData(&gPlayerParty, MON_DATA_MOVE1, &gContestMons[gContestPlayerMonIndex].moves[0]);
+ SetMonData(&gPlayerParty, MON_DATA_MOVE2, &gContestMons[gContestPlayerMonIndex].moves[1]);
+ SetMonData(&gPlayerParty, MON_DATA_MOVE3, &gContestMons[gContestPlayerMonIndex].moves[2]);
+ SetMonData(&gPlayerParty, MON_DATA_MOVE4, &gContestMons[gContestPlayerMonIndex].moves[3]);
+}
+
+// too complicated
+__attribute__((naked))
+void sub_80AA754(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ ldr r0, _080AA774 @ =gMain\n\
+ ldrh r1, [r0, 0x30]\n\
+ cmp r1, 0x20\n\
+ beq _080AA7A2\n\
+ cmp r1, 0x20\n\
+ bgt _080AA782\n\
+ cmp r1, 0x2\n\
+ beq _080AA7F8\n\
+ cmp r1, 0x2\n\
+ bgt _080AA778\n\
+ cmp r1, 0x1\n\
+ beq _080AA7D8\n\
+ b _080AA870\n\
+ .align 2, 0\n\
+_080AA774: .4byte gMain\n\
+_080AA778:\n\
+ cmp r1, 0x8\n\
+ beq _080AA868\n\
+ cmp r1, 0x10\n\
+ beq _080AA7A2\n\
+ b _080AA870\n\
+_080AA782:\n\
+ cmp r1, 0x80\n\
+ beq _080AA7C2\n\
+ cmp r1, 0x80\n\
+ bgt _080AA790\n\
+ cmp r1, 0x40\n\
+ beq _080AA7AC\n\
+ b _080AA870\n\
+_080AA790:\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ cmp r1, r0\n\
+ beq _080AA814\n\
+ movs r0, 0x80\n\
+ lsls r0, 2\n\
+ cmp r1, r0\n\
+ beq _080AA834\n\
+ b _080AA870\n\
+_080AA7A2:\n\
+ ldrh r0, [r4, 0x2E]\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ strh r0, [r4, 0x2E]\n\
+ b _080AA870\n\
+_080AA7AC:\n\
+ ldrh r1, [r4, 0x30]\n\
+ movs r2, 0x30\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ bne _080AA7BC\n\
+ movs r0, 0x8\n\
+ strh r0, [r4, 0x30]\n\
+ b _080AA870\n\
+_080AA7BC:\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r4, 0x30]\n\
+ b _080AA870\n\
+_080AA7C2:\n\
+ ldrh r1, [r4, 0x30]\n\
+ movs r3, 0x30\n\
+ ldrsh r0, [r4, r3]\n\
+ cmp r0, 0x8\n\
+ bne _080AA7D2\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0x30]\n\
+ b _080AA870\n\
+_080AA7D2:\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x30]\n\
+ b _080AA870\n\
+_080AA7D8:\n\
+ ldr r2, _080AA7F4 @ =gUnknown_083C92E4\n\
+ movs r1, 0x2E\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ movs r3, 0x30\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r1, 3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldr r2, [r0]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ b _080AA84E\n\
+ .align 2, 0\n\
+_080AA7F4: .4byte gUnknown_083C92E4\n\
+_080AA7F8:\n\
+ ldr r1, _080AA810 @ =gUnknown_083C92E4\n\
+ movs r0, 0x2E\n\
+ ldrsh r2, [r4, r0]\n\
+ lsls r2, 2\n\
+ movs r3, 0x30\n\
+ ldrsh r0, [r4, r3]\n\
+ lsls r0, 3\n\
+ adds r2, r0\n\
+ adds r2, r1\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ b _080AA84A\n\
+ .align 2, 0\n\
+_080AA810: .4byte gUnknown_083C92E4\n\
+_080AA814:\n\
+ ldr r2, _080AA830 @ =gUnknown_083C92E4\n\
+ movs r1, 0x2E\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ movs r3, 0x30\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r1, 3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldr r2, [r0]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ b _080AA84E\n\
+ .align 2, 0\n\
+_080AA830: .4byte gUnknown_083C92E4\n\
+_080AA834:\n\
+ ldr r1, _080AA864 @ =gUnknown_083C92E4\n\
+ movs r0, 0x2E\n\
+ ldrsh r2, [r4, r0]\n\
+ lsls r2, 2\n\
+ movs r3, 0x30\n\
+ ldrsh r0, [r4, r3]\n\
+ lsls r0, 3\n\
+ adds r2, r0\n\
+ adds r2, r1\n\
+ movs r1, 0xA\n\
+ negs r1, r1\n\
+_080AA84A:\n\
+ ldr r2, [r2]\n\
+ adds r0, r4, 0\n\
+_080AA84E:\n\
+ bl _call_via_r2\n\
+ ldrh r0, [r4, 0x32]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrh r1, [r4, 0x34]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl sub_80AA614\n\
+ b _080AA870\n\
+ .align 2, 0\n\
+_080AA864: .4byte gUnknown_083C92E4\n\
+_080AA868:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_80AAD08\n\
+_080AA870:\n\
+ ldr r2, _080AA898 @ =gUnknown_083C9296\n\
+ movs r0, 0x2E\n\
+ ldrsh r1, [r4, r0]\n\
+ movs r3, 0x30\n\
+ ldrsh r0, [r4, r3]\n\
+ lsls r0, 1\n\
+ adds r1, r0\n\
+ adds r1, r2\n\
+ ldrb r0, [r1]\n\
+ strh r0, [r4, 0x20]\n\
+ ldr r1, _080AA89C @ =gUnknown_083C92A8\n\
+ movs r2, 0x30\n\
+ ldrsh r0, [r4, r2]\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ strh r0, [r4, 0x22]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080AA898: .4byte gUnknown_083C9296\n\
+_080AA89C: .4byte gUnknown_083C92A8\n\
+ .syntax divided");
+}
+
+void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2)
+{
+ if(var1 == 1)
+ {
+ sprite->data2 = var2;
+ sub_80AA280(var2);
+ sub_80AA658(sprite->data2);
+ }
+}
+
+void sub_80AA8C8(struct Sprite *sprite, s8 var1)
+{
+ sub_80AA8A0(sprite, var1, 0);
+}
+
+void sub_80AA8D8(struct Sprite *sprite, s8 var1)
+{
+ sub_80AA8A0(sprite, var1, 1);
+}
+
+void sub_80AA8E8(struct Sprite *sprite, s8 var1)
+{
+ sub_80AA8A0(sprite, var1, 2);
+}
+
+void sub_80AA8F8(struct Sprite *sprite, s8 var1)
+{
+ sub_80AA8A0(sprite, var1, 3);
+}
+
+u8 sub_80AA908(u32 a1, u8 a2, s8 a3) // first param is unused.
+{
+ s16 val = a2 + a3;
+
+ if (val > 255)
+ val = 255;
+ else if (val < 0)
+ val = 0;
+
+ return val;
+}
+
+void sub_80AA930(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2);
+ sub_80AA340(sprite->data2);
+}
+
+void sub_80AA974(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2);
+ sub_80AA388(sprite->data2);
+}
+
+void sub_80AA9B8(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2);
+ sub_80AA3D0(sprite->data2);
+}
+
+void sub_80AA9FC(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2);
+ sub_80AA418(sprite->data2);
+}
+
+void sub_80AAA40(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2);
+ sub_80AA460(sprite->data2);
+}
+
+void sub_80AAA84(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2);
+ sub_80AA4A8(sprite->data2);
+}
+
+// a similar function is at 0x80AA908, however, it apparently returns the wrong type (u8 vs u16).
+u16 sub_80AAAC8(u32 a1, u16 a2, s8 a3) // first param is unused.
+{
+ s16 val = a2 + a3;
+
+ if (val > 354)
+ val = 1;
+ else if (val < 0)
+ val = 354;
+
+ return val;
+}
+
+void sub_80AAAF0(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2);
+ sub_80AA4F0(sprite->data2, 0);
+}
+
+void sub_80AAB30(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2);
+ sub_80AA4F0(sprite->data2, 1);
+}
+
+void sub_80AAB70(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2);
+ sub_80AA4F0(sprite->data2, 2);
+}
+
+void sub_80AABB0(struct Sprite *sprite, u8 var2)
+{
+ u8 val = sprite->data2;
+
+ gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2);
+ sub_80AA4F0(sprite->data2, 3);
+}
+
+// hard/weird function #2
+__attribute__((naked))
+void sub_80AABF0(struct Sprite *sprite, u8 var2)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ adds r5, r0, 0\n\
+ lsls r1, 24\n\
+ movs r0, 0xFF\n\
+ cmp r1, 0\n\
+ ble _080AABFE\n\
+ movs r0, 0x1\n\
+_080AABFE:\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ ldrh r1, [r5, 0x34]\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ bge _080AAC14\n\
+ movs r4, 0\n\
+ b _080AAC1A\n\
+_080AAC14:\n\
+ cmp r0, 0x4\n\
+ ble _080AAC1A\n\
+ movs r4, 0x4\n\
+_080AAC1A:\n\
+ lsls r4, 24\n\
+ lsrs r0, r4, 24\n\
+ bl sub_80AA5BC\n\
+ asrs r4, 24\n\
+ strh r4, [r5, 0x34]\n\
+ ldr r0, _080AAC54 @ =gScriptContestCategory\n\
+ strh r4, [r0]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r0, _080AAC58 @ =gScriptContestRank\n\
+ ldrb r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl sub_80AE398\n\
+ ldrh r0, [r5, 0x32]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl sub_80AA280\n\
+ ldrh r0, [r5, 0x32]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl sub_80AA658\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080AAC54: .4byte gScriptContestCategory\n\
+_080AAC58: .4byte gScriptContestRank\n\
+ .syntax divided");
+}
+
+/*
+ thumb_func_start sub_80AABF0
+sub_80AABF0: @ 80AABF0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ movs r0, 0xFF
+ cmp r1, 0
+ ble _080AABFE
+ movs r0, 0x1
+_080AABFE:
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r5, 0x34]
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ asrs r0, 24
+ cmp r0, 0
+ bge _080AAC14
+ movs r4, 0
+ b _080AAC1A
+_080AAC14:
+ cmp r0, 0x4
+ ble _080AAC1A
+ movs r4, 0x4
+_080AAC1A:
+ lsls r4, 24
+ lsrs r0, r4, 24
+ bl sub_80AA5BC
+ asrs r4, 24
+ strh r4, [r5, 0x34]
+ ldr r0, _080AAC54 @ =gScriptContestCategory
+ strh r4, [r0]
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080AAC58 @ =gScriptContestRank
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl sub_80AE398
+ ldrh r0, [r5, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80AA280
+ ldrh r0, [r5, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80AA658
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AAC54: .4byte gScriptContestCategory
+_080AAC58: .4byte gScriptContestRank
+ thumb_func_end sub_80AABF0
+*/
+
+/*
+ thumb_func_start sub_80AA754
+sub_80AA754: @ 80AA754
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AA774 @ =gMain
+ ldrh r1, [r0, 0x30]
+ cmp r1, 0x20
+ beq _080AA7A2
+ cmp r1, 0x20
+ bgt _080AA782
+ cmp r1, 0x2
+ beq _080AA7F8
+ cmp r1, 0x2
+ bgt _080AA778
+ cmp r1, 0x1
+ beq _080AA7D8
+ b _080AA870
+ .align 2, 0
+_080AA774: .4byte gMain
+_080AA778:
+ cmp r1, 0x8
+ beq _080AA868
+ cmp r1, 0x10
+ beq _080AA7A2
+ b _080AA870
+_080AA782:
+ cmp r1, 0x80
+ beq _080AA7C2
+ cmp r1, 0x80
+ bgt _080AA790
+ cmp r1, 0x40
+ beq _080AA7AC
+ b _080AA870
+_080AA790:
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ beq _080AA814
+ movs r0, 0x80
+ lsls r0, 2
+ cmp r1, r0
+ beq _080AA834
+ b _080AA870
+_080AA7A2:
+ ldrh r0, [r4, 0x2E]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x2E]
+ b _080AA870
+_080AA7AC:
+ ldrh r1, [r4, 0x30]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080AA7BC
+ movs r0, 0x8
+ strh r0, [r4, 0x30]
+ b _080AA870
+_080AA7BC:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080AA870
+_080AA7C2:
+ ldrh r1, [r4, 0x30]
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x8
+ bne _080AA7D2
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ b _080AA870
+_080AA7D2:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ b _080AA870
+_080AA7D8:
+ ldr r2, _080AA7F4 @ =gUnknown_083C92E4
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ movs r3, 0x30
+ ldrsh r1, [r4, r3]
+ lsls r1, 3
+ adds r0, r1
+ adds r0, r2
+ ldr r2, [r0]
+ adds r0, r4, 0
+ movs r1, 0x1
+ b _080AA84E
+ .align 2, 0
+_080AA7F4: .4byte gUnknown_083C92E4
+_080AA7F8:
+ ldr r1, _080AA810 @ =gUnknown_083C92E4
+ movs r0, 0x2E
+ ldrsh r2, [r4, r0]
+ lsls r2, 2
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r2, r0
+ adds r2, r1
+ movs r1, 0x1
+ negs r1, r1
+ b _080AA84A
+ .align 2, 0
+_080AA810: .4byte gUnknown_083C92E4
+_080AA814:
+ ldr r2, _080AA830 @ =gUnknown_083C92E4
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ movs r3, 0x30
+ ldrsh r1, [r4, r3]
+ lsls r1, 3
+ adds r0, r1
+ adds r0, r2
+ ldr r2, [r0]
+ adds r0, r4, 0
+ movs r1, 0xA
+ b _080AA84E
+ .align 2, 0
+_080AA830: .4byte gUnknown_083C92E4
+_080AA834:
+ ldr r1, _080AA864 @ =gUnknown_083C92E4
+ movs r0, 0x2E
+ ldrsh r2, [r4, r0]
+ lsls r2, 2
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r2, r0
+ adds r2, r1
+ movs r1, 0xA
+ negs r1, r1
+_080AA84A:
+ ldr r2, [r2]
+ adds r0, r4, 0
+_080AA84E:
+ bl _call_via_r2
+ ldrh r0, [r4, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x34]
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_80AA614
+ b _080AA870
+ .align 2, 0
+_080AA864: .4byte gUnknown_083C92E4
+_080AA868:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_80AAD08
+_080AA870:
+ ldr r2, _080AA898 @ =gUnknown_083C9296
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ strh r0, [r4, 0x20]
+ ldr r1, _080AA89C @ =gUnknown_083C92A8
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x22]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AA898: .4byte gUnknown_083C9296
+_080AA89C: .4byte gUnknown_083C92A8
+ thumb_func_end sub_80AA754
+*/
diff --git a/src/menu.c b/src/menu.c
index ae0dca058..0b5eab831 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -120,7 +120,7 @@ void MenuLoadTextWindowGraphics(void)
LoadTextWindowGraphics(gMenuWindowPtr);
}
-void BasicInitMenuWindow(struct WindowConfig *winConfig)
+void BasicInitMenuWindow(const struct WindowConfig *winConfig)
{
InitWindowFromConfig(gMenuWindowPtr, winConfig);
gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset;
diff --git a/src/text.c b/src/text.c
index d64d5db15..c632a4fa6 100644
--- a/src/text.c
+++ b/src/text.c
@@ -770,7 +770,7 @@ const struct WindowConfig gWindowConfig_81E6DA8 =
(u16 *)BG_SCREEN_ADDR(11), // tilemap
};
-const struct WindowConfig gWindowConfig_81E6DC4 =
+const struct WindowConfig WindowConfig_TrainerCard_Back_Values =
{
0, // BG number
2, // BG character base block
@@ -791,7 +791,7 @@ const struct WindowConfig gWindowConfig_81E6DC4 =
(u16 *)BG_SCREEN_ADDR(30), // tilemap
};
-const struct WindowConfig gWindowConfig_81E6DE0 =
+const struct WindowConfig WindowConfig_TrainerCard_Back_Labels =
{
0, // BG number
2, // BG character base block
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 84f2d561f..a04ad4359 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -9,22 +9,33 @@
#include "palette.h"
#include "pokedex.h"
#include "rom4.h"
-#include "save_menu_util.h"
+#include "songs.h"
+#include "sound.h"
#include "sprite.h"
+#include "string_util.h"
#include "task.h"
typedef void (*Callback)(void);
-struct Struct2000000
-{
- /*0x00*/ u8 filer0[1];
+struct Struct2000000 {
+ /*0x00*/ u8 var_0;
/*0x01*/ bool8 var_1;
- /*0x02*/ u8 filer1[2];
+ /*0x02*/ u8 var_2;
+ /*0x03*/ bool8 var_3;
/*0x04*/ u8 var_4;
/*0x05*/ u8 var_5;
/*0x06*/ u8 var_6;
- /*0x07*/ u8 filler2[0x59];
- /*0x60*/ Callback * var_60;
+ /*0x07*/ bool8 var_7;
+ /*0x08*/ bool8 var_8;
+ /*0x09*/ bool8 var_9;
+ /*0x0A*/ bool8 var_a;
+ /*0x0B*/ bool8 var_b;
+ /*0x0C*/ bool8 var_c;
+ /*0x0D*/ bool8 var_d;
+ /*0x0E*/ u8 var_e[8];
+ /*0x16*/ u8 filler_16[10];
+ /*0x20*/ u8 var_20[4][0x10];
+ /*0x60*/ Callback *var_60;
/*0x64*/ struct TrainerCard var_64;
/*0x9C*/ u8 language; // 0x9C
};
@@ -33,6 +44,32 @@ extern struct Struct2000000 unk_2000000;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern struct TrainerCard gTrainerCards[4];
+extern u8 gUnknown_03004DE0[]; // TODO: find out correct type
+
+extern u8 gUnknown_083B5EF4[];
+extern u16 *gUnknown_083B5EF8[5];
+extern u16 gUnknown_083B5F0C[];
+extern u16 gBadgesPalette[];
+extern u16 gUnknown_083B5F4C[];
+
+extern u16 gUnknown_08E8CFC0[];
+extern u16 gUnknown_08E8D9C0[];
+
+extern u8 gOtherText_TrainersTrainerCard[];
+extern u8 gOtherText_FirstHOF[];
+extern u8 gOtherText_LinkCableBattles[];
+extern u8 gOtherText_BattleTowerWinRecord[];
+extern u8 gOtherText_ContestRecord[];
+extern u8 gOtherText_MixingRecord[];
+extern u8 gOtherText_TradeRecord[];
+extern u8 gOtherText_Boy[];
+extern u8 gOtherText_Girl[];
+
+// Other signature than on save_menu_util.h
+void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon);
+
+u16 GetPokedexSeenCount(void);
+
enum {
TD_0,
TD_1,
@@ -44,11 +81,68 @@ static void sub_809323C(void);
static void sub_8093254(void);
static void sub_80932AC(Callback callBack);
static void sub_80932E4(u8 arg1, Callback callBack);
+static void sub_8093324(void);
static void nullsub_60(u8);
static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal);
static u8 sub_80934F4(struct TrainerCard *);
static void sub_8093534(void);
static void sub_8093550(void);
+static void sub_8093598(void);
+static void sub_80935EC(void);
+static void sub_8093610(void);
+static void sub_8093688(void);
+static void sub_80936D4(void);
+static void sub_80937A4(void);
+static void sub_80937BC(void);
+static void sub_80937D8(void);
+static void sub_80937F0(void);
+static void nullsub_15(void);
+static void sub_8093800(void);
+static void sub_809380C();
+static void sub_809382C(u8 taskId);
+static void sub_80939A4(void);
+static void sub_80939C0(void);
+static void sub_80939DC(u8 taskId);
+static void sub_8093A28(void);
+static u8 sub_8093A48(void);
+static void sub_8093A68(u8 taskId);
+static void sub_8093D7C(void);
+static void sub_8093DAC(void);
+static void sub_8093DC8(void);
+static void sub_8093DEC(void);
+static void sub_8093E04(void);
+static void sub_8093E28(void);
+static void sub_8093EA0(void);
+static void sub_8093EF8(void);
+static void sub_8093F14(void);
+static void sub_8093F48(void);
+static void sub_8093F64(void);
+static void sub_8093F80(void);
+static void sub_8093FD0(void);
+static void sub_8094038(void);
+static void sub_80940E4(void);
+static void sub_8094110(void);
+static void sub_8094140(void);
+static void sub_8094188(void);
+static void TrainerCard_Front_PrintTrainerID(void);
+static void TrainerCard_Front_PrintMoney(void);
+static void TrainerCard_Front_PrintPokedexCount(void);
+static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon);
+static void sub_809429C(void);
+static void TrainerCard_Back_PrintName(void);
+static void TrainerCard_Back_PrintHallOfFameTime_Label(void);
+static void TrainerCard_Back_PrintHallOfFameTime(void);
+static void TrainerCard_Back_PrintLinkBattlesLabel(void);
+static void TrainerCard_Back_PrintLinkBattles(void);
+static void TrainerCard_Back_PrintBattleTower_Label(void);
+static void TrainerCard_Back_PrintBattleTower(void);
+static void TrainerCard_Back_PrintLinkContests_Label(void);
+static void TrainerCard_Back_PrintLinkContests(void);
+static void TrainerCard_Back_PrintLinkPokeblocks_Label(void);
+static void TrainerCard_Back_PrintLinkPokeblocks(void);
+static void TrainerCard_Back_PrintPokemonTrades_Label(void);
+static void TrainerCard_Back_PrintPokemonTrades(void);
+static void unref_sub_8094588(u16 left, u16 top);
void sub_8093110(Callback arg1) {
sub_80932AC(arg1);
@@ -128,51 +222,19 @@ static void sub_809323C(void) {
UpdatePaletteFade();
}
-__attribute__((naked))
static void sub_8093254(void)
{
- asm(".syntax unified\n\
- push {lr}\n\
- bl LoadOam\n\
- bl ProcessSpriteCopyRequests\n\
- bl TransferPlttBuffer\n\
- ldr r2, _0809329C @ =0x02000000\n\
- ldrb r0, [r2, 0x6]\n\
- adds r0, 0x1\n\
- strb r0, [r2, 0x6]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x3B\n\
- bls _0809327E\n\
- movs r0, 0\n\
- strb r0, [r2, 0x6]\n\
- ldrb r0, [r2, 0x5]\n\
- movs r1, 0x1\n\
- eors r0, r1\n\
- strb r0, [r2, 0x5]\n\
-_0809327E:\n\
- ldrb r0, [r2, 0x4]\n\
- cmp r0, 0\n\
- beq _08093298\n\
- ldr r1, _080932A0 @ =0x040000d4\n\
- ldr r0, _080932A4 @ =gUnknown_03004DE0\n\
- str r0, [r1]\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r0, r2\n\
- str r0, [r1, 0x4]\n\
- ldr r0, _080932A8 @ =0x800000a0\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
-_08093298:\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809329C: .4byte 0x02000000\n\
-_080932A0: .4byte 0x040000d4\n\
-_080932A4: .4byte gUnknown_03004DE0\n\
-_080932A8: .4byte 0x800000a0\n\
- .syntax divided\n");
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ unk_2000000.var_6++;
+ if (unk_2000000.var_6 >= 60)
+ {
+ unk_2000000.var_6 = 0;
+ unk_2000000.var_5 ^= 1;
+ }
+ if (unk_2000000.var_4)
+ DmaCopy16(3, gUnknown_03004DE0, gUnknown_03004DE0 + 0x780, 320);
}
static void sub_80932AC(Callback callBack) {
@@ -191,7 +253,7 @@ static void sub_80932E4(u8 arg1, Callback callBack) {
StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32) callBack);
}
-void sub_8093324(void) {
+static void sub_8093324(void) {
u8 taskId = FindTaskIdByFunc(nullsub_60);
struct Task *task = &gTasks[taskId];
unk_2000000.var_1 = task->data[TD_0];
@@ -250,13 +312,13 @@ void sub_8093390(struct TrainerCard *arg1) {
arg1->pokemonTrades = sav12_xor_get_clamped_above(GAME_STAT_POKEMON_TRADES, 0xFFFF);
// Battle tower?
- arg1->var_18 = gSaveBlock2.filler_A8.var_4C8;
- arg1->var_1A = gSaveBlock2.filler_A8.var_4CA;
- if (arg1->var_18 > 9999) {
- arg1->var_18 = 9999;
+ arg1->battleTowerWins = gSaveBlock2.filler_A8.var_4C8;
+ arg1->battleTowerLosses = gSaveBlock2.filler_A8.var_4CA;
+ if (arg1->battleTowerWins > 9999) {
+ arg1->battleTowerWins = 9999;
}
- if (arg1->var_1A > 9999) {
- arg1->var_1A = 9999;
+ if (arg1->battleTowerLosses > 9999) {
+ arg1->battleTowerLosses = 9999;
}
r4 = FALSE;
@@ -275,11 +337,11 @@ void sub_8093390(struct TrainerCard *arg1) {
arg1->playerName[i] = gSaveBlock2.playerName[i];
}
- arg1->var_1 = sub_80934F4(arg1);
+ arg1->stars = sub_80934F4(arg1);
}
u8 sub_80934C4(u8 id) {
- return gTrainerCards[id].var_1;
+ return gTrainerCards[id].stars;
}
static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal) {
@@ -303,7 +365,7 @@ static u8 sub_80934F4(struct TrainerCard *trainerCard) {
value += 1;
}
- if (trainerCard->var_1A > 49) {
+ if (trainerCard->battleTowerLosses > 49) {
value += 1;
}
@@ -333,3 +395,1633 @@ static void sub_8093550(void) {
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR;
REG_DISPCNT = 0x1f40;
}
+
+__attribute__((naked))
+void sub_8093598() {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 9\n\
+ mov r4, sp\n\
+ movs r6, 0\n\
+ ldr r1, _080935E4 @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _080935E8 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
+_080935B6:\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r5\n\
+ subs r3, r5\n\
+ cmp r3, r5\n\
+ bhi _080935B6\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 1\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080935E4: .4byte 0x040000d4\n\
+_080935E8: .4byte 0x81000800\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+void sub_80935EC() {
+ asm(".syntax unified\n\
+ sub sp, 0x4\n\
+ movs r2, 0xE0\n\
+ lsls r2, 19\n\
+ mov r1, sp\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08093608 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0809360C @ =0x81000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x4\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08093608: .4byte 0x040000d4\n\
+_0809360C: .4byte 0x81000200\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+void sub_8093610() {
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r5, _08093664 @ =REG_BG0CNT\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ ldr r2, _08093668 @ =REG_BG1CNT\n\
+ strh r1, [r2]\n\
+ ldr r3, _0809366C @ =REG_BG2CNT\n\
+ strh r1, [r3]\n\
+ ldr r4, _08093670 @ =REG_BG3CNT\n\
+ strh r1, [r4]\n\
+ ldr r0, _08093674 @ =REG_BG0HOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ ldr r1, _08093678 @ =0x00001e08\n\
+ adds r0, r1, 0\n\
+ strh r0, [r5]\n\
+ ldr r1, _0809367C @ =0x00000801\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2]\n\
+ ldr r1, _08093680 @ =0x00000902\n\
+ adds r0, r1, 0\n\
+ strh r0, [r3]\n\
+ ldr r1, _08093684 @ =0x00000a03\n\
+ adds r0, r1, 0\n\
+ strh r0, [r4]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093664: .4byte 0x4000008 @ REG_BG0CNT\n\
+_08093668: .4byte 0x400000A @ REG_BG1CNT\n\
+_0809366C: .4byte 0x400000C @ REG_BG2CNT\n\
+_08093670: .4byte 0x400000E @ REG_BG3CNT\n\
+_08093674: .4byte 0x4000010 @ REG_BG0HOFS\n\
+_08093678: .4byte 0x00001e08\n\
+_0809367C: .4byte 0x00000801\n\
+_08093680: .4byte 0x00000902\n\
+_08093684: .4byte 0x00000a03\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+static void sub_8093688(void) {
+ int i;
+
+ asm_comment("WIP");
+ sub_8093324();
+
+ unk_2000000.var_0 = FALSE;
+ unk_2000000.var_3 = FALSE;
+ unk_2000000.var_4 = FALSE;
+
+ unk_2000000.var_2 = unk_2000000.var_64.stars;
+
+ unk_2000000.var_5 = FALSE;
+ unk_2000000.var_6 = FALSE;
+
+ for (i = 0; i < 4; i++) {
+ sub_80EB3FC(unk_2000000.var_20[i], unk_2000000.var_64.var_28[i]);
+ }
+
+ sub_80936D4();
+}
+#else
+
+__attribute__((naked))
+static void sub_8093688(void) {
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ bl sub_8093324\n\
+ ldr r2, _080936D0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r2]\n\
+ strb r1, [r2, 0x3]\n\
+ strb r1, [r2, 0x4]\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x65\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x2]\n\
+ strb r1, [r2, 0x5]\n\
+ strb r1, [r2, 0x6]\n\
+ movs r4, 0\n\
+ adds r6, r2, 0\n\
+ adds r6, 0x20\n\
+ adds r5, r2, 0\n\
+ adds r5, 0x8C\n\
+_080936AE:\n\
+ lsls r0, r4, 4\n\
+ adds r0, r6\n\
+ lsls r1, r4, 1\n\
+ adds r1, r5, r1\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080936AE\n\
+ bl sub_80936D4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080936D0: .4byte 0x02000000\n\
+ .syntax divided\n");
+}
+
+#endif
+
+static void sub_80936D4(void) {
+ unk_2000000.var_7 = FALSE;
+ unk_2000000.var_8 = FALSE;
+ unk_2000000.var_9 = FALSE;
+ unk_2000000.var_a = FALSE;
+ unk_2000000.var_b = FALSE;
+ unk_2000000.var_c = FALSE;
+ unk_2000000.var_d = FALSE;
+
+ memset(unk_2000000.var_e, 0, sizeof(unk_2000000.var_e));
+
+ if (unk_2000000.var_64.hasPokedex) {
+ unk_2000000.var_7 += TRUE;
+ }
+
+ if (unk_2000000.var_64.firstHallOfFameA != 0 || unk_2000000.var_64.firstHallOfFameB != 0 ||
+ unk_2000000.var_64.firstHallOfFameC != 0) {
+ unk_2000000.var_8 += TRUE;
+ }
+
+ if (unk_2000000.var_64.linkBattleWins != 0 || unk_2000000.var_64.linkBattleLosses != 0) {
+ unk_2000000.var_9 += TRUE;
+ }
+
+ if (unk_2000000.var_64.battleTowerWins != 0 || unk_2000000.var_64.battleTowerLosses != 0) {
+ unk_2000000.var_a += TRUE;
+ }
+
+ if (unk_2000000.var_64.contestsWithFriends != 0) {
+ unk_2000000.var_b += TRUE;
+ }
+
+ if (unk_2000000.var_64.pokeblocksWithFriends != 0) {
+ unk_2000000.var_c += TRUE;
+ }
+
+ if (unk_2000000.var_64.pokemonTrades != 0) {
+ unk_2000000.var_d += TRUE;
+ }
+
+ if (!unk_2000000.var_1) {
+ u32 badgeFlag;
+ int i;
+
+ i = 0;
+ badgeFlag = BADGE01_GET;
+ while (TRUE) {
+ if (FlagGet(badgeFlag)) {
+ unk_2000000.var_e[i] += TRUE;
+ }
+
+ badgeFlag += 1;
+ i += 1;
+ if (badgeFlag > BADGE08_GET) {
+ break;
+ }
+ }
+ }
+}
+
+void sub_80937A4() {
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+}
+
+void sub_80937BC() {
+ SetUpWindowConfig(&WindowConfig_TrainerCard_Back_Values);
+ MultistepInitMenuWindowBegin(&WindowConfig_TrainerCard_Back_Values);
+}
+
+static void sub_80937D8() {
+ sub_8093E04();
+ sub_8093E28();
+ sub_8093F64();
+ sub_8093DAC();
+}
+
+static void sub_80937F0() {
+ sub_8093EF8();
+}
+
+static void nullsub_15(void) {
+}
+
+static void sub_8093800() {
+ sub_809380C();
+}
+
+static void sub_809380C() {
+ u8 taskId;
+
+ taskId = CreateTask(sub_809382C, 0);
+ sub_809382C(taskId);
+}
+
+__attribute__((naked))
+static void sub_809382C(u8 taskId) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r4, r1, 3\n\
+ ldr r6, _0809385C @ =0x02000000\n\
+ ldr r5, _08093860 @ =gTasks\n\
+_0809383E:\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r7\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, r5\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0809383E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093858: .4byte gUnknown_083B5EBC\n\
+_0809385C: .4byte 0x02000000\n\
+_08093860: .4byte gTasks\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_8093864() {
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ ldr r4, _080938A0 @ =0x02000000\n\
+ ldr r2, _080938A4 @ =gSaveBlock2\n\
+ ldrb r1, [r2, 0x11]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ movs r5, 0\n\
+ strb r0, [r4, 0x5]\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r4, 0x6]\n\
+ bl sub_80939A4\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080938A0: .4byte 0x02000000\n\
+_080938A4: .4byte gSaveBlock2\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_80938A8() {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ ldr r0, _080938C4 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080938BE\n\
+ ldr r1, _080938C8 @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+_080938BE:\n\
+ movs r0, 0\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080938C4: .4byte gPaletteFade\n\
+_080938C8: .4byte 0x02000000\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_80938CC() {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ ldr r0, _080938E4 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080938EC\n\
+ ldr r1, _080938E8 @ =0x02000000\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
+ .align 2, 0\n\
+_080938E4: .4byte gMain\n\
+_080938E8: .4byte 0x02000000\n\
+_080938EC:\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08093912\n\
+ ldr r2, _08093900 @ =0x02000000\n\
+ ldrb r1, [r2, 0x3]\n\
+ cmp r1, 0\n\
+ beq _08093904\n\
+ movs r0, 0x5\n\
+ b _0809390C\n\
+ .align 2, 0\n\
+_08093900: .4byte 0x02000000\n\
+_08093904:\n\
+ movs r0, 0x1\n\
+ eors r0, r1\n\
+ strb r0, [r2, 0x3]\n\
+ movs r0, 0x3\n\
+_0809390C:\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
+_08093912:\n\
+ movs r0, 0\n\
+_08093914:\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+bool8 sub_8093918() {
+ sub_8093A28();
+ PlaySE(SE_CARD);
+
+ unk_2000000.var_0 += TRUE;
+
+ return FALSE;
+}
+
+bool8 sub_8093938() {
+ if (sub_8093A48()) {
+ unk_2000000.var_0 = 2;
+ }
+
+ return FALSE;
+}
+
+__attribute__((naked))
+bool8 sub_8093954() {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ sub sp, 0x4\n\
+ bl sub_80939C0\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, _0809397C @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_0809397C: .4byte 0x02000000\n\
+ .syntax divided\n");
+}
+
+bool8 sub_8093980() {
+ if (!gPaletteFade.active) {
+ SetMainCallback2((MainCallback) unk_2000000.var_60);
+ }
+
+ return FALSE;
+}
+
+static void sub_80939A4(void) {
+ CreateTask(sub_80939DC, 0);
+ BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
+}
+
+static void sub_80939C0(void) {
+ u8 taskId;
+
+ taskId = FindTaskIdByFunc(sub_80939DC);
+
+ if (taskId != 0xFF) {
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80939DC(u8 taskId) {
+ u8 buffer[32];
+ struct Task *task;
+ task = &gTasks[taskId];
+
+ if (unk_2000000.var_5 != task->data[TD_1]) {
+ task->data[TD_1] = unk_2000000.var_5;
+ task->data[TD_0] ^= TRUE;
+ }
+
+ TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]);
+ MenuPrint(buffer, 10, 12);
+}
+
+static void sub_8093A28(void) {
+ u8 taskId;
+
+ taskId = CreateTask(sub_8093A68, 0);
+ sub_8093A68(taskId);
+}
+
+__attribute__((naked))
+static u8 sub_8093A48() {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ ldr r0, _08093A5C @ =sub_8093A68\n\
+ bl FindTaskIdByFunc\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ beq _08093A60\n\
+ movs r0, 0\n\
+ b _08093A62\n\
+ .align 2, 0\n\
+_08093A5C: .4byte sub_8093A68\n\
+_08093A60:\n\
+ movs r0, 0x1\n\
+_08093A62:\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_8093A68(u8 taskId) {
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
+ ldr r2, _08093A9C @ =gTasks\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1, r2\n\
+_08093A7A:\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08093A7A\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093A98: .4byte gUnknown_083B5ED8\n\
+_08093A9C: .4byte gTasks\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_8093AA0() {
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ ldr r0, _08093AE0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r0, 0x4]\n\
+ bl dp12_8087EA4\n\
+ movs r1, 0\n\
+ ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093AE8 @ =0x0000fffc\n\
+ movs r3, 0xF0\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
+_08093ABA:\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, 0x9F\n\
+ bls _08093ABA\n\
+ ldr r0, _08093AEC @ =sub_8093D7C\n\
+ bl SetHBlankCallback\n\
+ ldr r1, _08093AE0 @ =0x02000000\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x4]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ movs r0, 0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08093AE0: .4byte 0x02000000\n\
+_08093AE4: .4byte gUnknown_03004DE0\n\
+_08093AE8: .4byte 0x0000fffc\n\
+_08093AEC: .4byte sub_8093D7C\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_8093AF0() {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ ldrh r0, [r2, 0xA]\n\
+ adds r0, 0x3\n\
+ strh r0, [r2, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x4F\n\
+ ble _08093B18\n\
+ movs r0, 0x4F\n\
+ strh r0, [r2, 0xA]\n\
+_08093B18:\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093C00 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsls r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093B74\n\
+ ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
+_08093B5C:\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093B5C\n\
+_08093B74:\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093BAE\n\
+ ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r4, _08093C08 @ =0x0000fffc\n\
+ mov r12, r4\n\
+ adds r4, r1, 0\n\
+_08093B8E:\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ subs r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093B8E\n\
+_08093BAE:\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093BD4\n\
+ ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
+_08093BBE:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093BBE\n\
+_08093BD4:\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r2, r4]\n\
+ cmp r0, 0x4A\n\
+ ble _08093BEA\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+_08093BEA:\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08093BFC: .4byte 0x02000000\n\
+_08093C00: .4byte 0xffff0000\n\
+_08093C04: .4byte gUnknown_03004DE0\n\
+_08093C08: .4byte 0x0000fffc\n\
+ .syntax divided\n");
+}
+
+bool8 sub_8093C0C(struct TrainerCard *trainerCard) {
+ sub_80939C0();
+ sub_8093DAC();
+
+ if (!unk_2000000.var_3) {
+ sub_80939A4();
+ }
+
+ trainerCard->firstHallOfFameB += 1;
+
+ return TRUE;
+}
+
+__attribute__((naked))
+bool8 sub_8093C38() {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ movs r2, 0\n\
+ strb r2, [r1, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ subs r0, 0x3\n\
+ mov r3, r8\n\
+ strh r0, [r3, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _08093C5C\n\
+ strh r2, [r3, 0xA]\n\
+_08093C5C:\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093D44 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsrs r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093CB8\n\
+ ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
+_08093CA0:\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093CA0\n\
+_08093CB8:\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093CF2\n\
+ ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r3, _08093D4C @ =0x0000fffc\n\
+ mov r12, r3\n\
+ adds r4, r1, 0\n\
+_08093CD2:\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ adds r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093CD2\n\
+_08093CF2:\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093D18\n\
+ ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
+_08093D02:\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093D02\n\
+_08093D18:\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r3, 0xA\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ bgt _08093D2E\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+_08093D2E:\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08093D40: .4byte 0x02000000\n\
+_08093D44: .4byte 0xffff0000\n\
+_08093D48: .4byte gUnknown_03004DE0\n\
+_08093D4C: .4byte 0x0000fffc\n\
+ .syntax divided\n");
+}
+
+bool8 sub_8093D50(void) {
+ u8 taskId;
+
+ unk_2000000.var_4 = FALSE;
+ SetHBlankCallback(NULL);
+ sub_8093E04();
+
+ taskId = FindTaskIdByFunc(sub_8093A68);
+ DestroyTask(taskId);
+
+ return FALSE;
+}
+
+__attribute__((naked))
+static void sub_8093D7C(void) {
+ asm(".syntax unified\n\
+ ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093DA4 @ =REG_VCOUNT\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0xFF\n\
+ ands r0, r2\n\
+ lsls r0, 1\n\
+ movs r2, 0xF0\n\
+ lsls r2, 3\n\
+ adds r1, r2\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08093DA0: .4byte gUnknown_03004DE0\n\
+_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
+_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
+ .syntax divided\n");
+}
+
+static void sub_8093DAC(void) {
+ if (unk_2000000.var_3) {
+ sub_8093DEC();
+ } else {
+ sub_8093DC8();
+ }
+}
+
+static void sub_8093DC8(void) {
+ MenuZeroFillScreen();
+ sub_80940E4();
+ sub_8093F14();
+ sub_8093F80();
+ sub_8093FD0();
+ sub_8094038();
+ sub_8094140();
+}
+
+static void sub_8093DEC(void) {
+ MenuZeroFillScreen();
+ sub_80940E4();
+ sub_8093F48();
+ sub_8094188();
+}
+
+__attribute__((naked))
+static void sub_8093E04() {
+ asm(".syntax unified\n\
+ ldr r0, _08093E20 @ =REG_BG0VOFS\n\
+ ldr r2, _08093E24 @ =0x0000fffc\n\
+ adds r1, r2, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
+_08093E24: .4byte 0x0000fffc\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_8093E28(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ bl sub_8093EA0\n\
+ ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
+ movs r1, 0xE0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
+ movs r4, 0xC0\n\
+ lsls r4, 19\n\
+ movs r5, 0xA4\n\
+ lsls r5, 5\n\
+ ldr r1, _08093E8C @ =0x040000d4\n\
+ ldr r6, _08093E90 @ =0x80000800\n\
+ movs r2, 0x80\n\
+ lsls r2, 5\n\
+ movs r7, 0x80\n\
+ lsls r7, 24\n\
+_08093E4E:\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ str r6, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r3, r2\n\
+ adds r4, r2\n\
+ subs r5, r2\n\
+ cmp r5, r2\n\
+ bhi _08093E4E\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ lsrs r0, r5, 1\n\
+ orrs r0, r7\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, _08093E94 @ =gBadgesTiles\n\
+ ldr r2, _08093E98 @ =0x06001480\n\
+ ldr r0, _08093E8C @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _08093E9C @ =0x80000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093E84: .4byte gUnknown_083B5F6C\n\
+_08093E88: .4byte gMenuTrainerCard_Gfx\n\
+_08093E8C: .4byte 0x040000d4\n\
+_08093E90: .4byte 0x80000800\n\
+_08093E94: .4byte gBadgesTiles\n\
+_08093E98: .4byte 0x06001480\n\
+_08093E9C: .4byte 0x80000200\n\
+ .syntax divided\n");
+}
+
+static void sub_8093EA0(void) {
+ LoadPalette(gUnknown_083B5EF8[unk_2000000.var_2], 0, 48 * 2);
+ LoadPalette(gBadgesPalette, 48, 16 * 2);
+ LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
+
+ if (unk_2000000.var_64.gender != MALE) {
+ LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
+ }
+}
+
+static void sub_8093EF8(void) {
+ LoadTrainerGfx_TrainerCard(unk_2000000.var_64.gender, 80, (void *) (VRAM + 0x1880));
+}
+
+__attribute__((naked))
+static void sub_8093F14(void) {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ sub sp, 0x8\n\
+ ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r0, _08093F40 @ =0x02000000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08093F44 @ =0x06004800\n\
+ movs r2, 0xA0\n\
+ lsls r2, 1\n\
+ bl CpuFastSet\n\
+ add sp, 0x8\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093F3C: .4byte gUnknown_083B5EEC\n\
+_08093F40: .4byte 0x02000000\n\
+_08093F44: .4byte 0x06004800\n\
+ .syntax divided\n");
+}
+
+static void sub_8093F48(void) {
+ CpuFastSet(gUnknown_08E8CFC0, (void *) (VRAM + 0x4800), 320);
+}
+
+static void sub_8093F64(void) {
+ CpuFastSet(gUnknown_08E8D9C0, (void *) (VRAM + 0x5000), 320);
+}
+
+__attribute__((naked))
+static void sub_8093F80(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ movs r5, 0xC4\n\
+ ldr r7, _08093FCC @ =0x06004000\n\
+ movs r1, 0x5\n\
+ movs r0, 0xA0\n\
+ lsls r0, 7\n\
+ adds r6, r0, 0\n\
+_08093F8E:\n\
+ movs r0, 0x13\n\
+ lsls r3, r1, 16\n\
+ asrs r4, r3, 11\n\
+_08093F94:\n\
+ lsls r2, r0, 16\n\
+ asrs r2, 16\n\
+ adds r1, r4, r2\n\
+ lsls r1, 1\n\
+ adds r1, r7\n\
+ adds r0, r5, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsrs r0, r2, 16\n\
+ asrs r2, 16\n\
+ cmp r2, 0x1A\n\
+ ble _08093F94\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r0, r3, r1\n\
+ lsrs r1, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xC\n\
+ ble _08093F8E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08093FCC: .4byte 0x06004000\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_8093FD0(void) {
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r4, _0809402C @ =0x06004000\n\
+ movs r2, 0xF\n\
+ ldr r0, _08094030 @ =0x02000000\n\
+ ldrb r0, [r0, 0x2]\n\
+ adds r0, 0xF\n\
+ cmp r2, r0\n\
+ bge _08094002\n\
+ movs r6, 0xC0\n\
+ lsls r6, 1\n\
+ ldr r1, _08094034 @ =0x0000408f\n\
+ adds r5, r1, 0\n\
+ adds r3, r0, 0\n\
+_08093FEA:\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r6\n\
+ strh r5, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r2, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, r3\n\
+ blt _08093FEA\n\
+_08094002:\n\
+ lsls r1, r2, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ bgt _08094024\n\
+ movs r3, 0xC0\n\
+ lsls r3, 1\n\
+ movs r2, 0\n\
+_08094010:\n\
+ asrs r0, r1, 16\n\
+ lsls r1, r0, 1\n\
+ adds r1, r4\n\
+ adds r1, r3\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r1, r0, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ ble _08094010\n\
+_08094024:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809402C: .4byte 0x06004000\n\
+_08094030: .4byte 0x02000000\n\
+_08094034: .4byte 0x0000408f\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_8094038(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r1, _080940D0 @ =0x02000000\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080940C2\n\
+ ldr r0, _080940D4 @ =0x06004000\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ movs r2, 0x4\n\
+ adds r1, 0xE\n\
+ mov r8, r1\n\
+ ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
+ movs r1, 0xC0\n\
+ lsls r1, 6\n\
+ adds r6, r1, 0\n\
+ adds r1, r7, 0x6\n\
+ mov r12, r1\n\
+_08094060:\n\
+ lsls r0, 16\n\
+ asrs r4, r0, 16\n\
+ mov r1, r8\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r5, r2, 16\n\
+ cmp r0, 0\n\
+ beq _080940AE\n\
+ asrs r1, r5, 15\n\
+ add r1, r9\n\
+ movs r2, 0xF0\n\
+ lsls r2, 2\n\
+ adds r3, r1, r2\n\
+ lsls r2, r4, 3\n\
+ adds r0, r2, r7\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940DC @ =0x000003c2\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x4\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940E0 @ =0x00000402\n\
+ adds r1, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r2]\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+_080940AE:\n\
+ adds r1, r4, 0x1\n\
+ lsls r1, 16\n\
+ movs r2, 0xC0\n\
+ lsls r2, 10\n\
+ adds r0, r5, r2\n\
+ lsrs r2, r0, 16\n\
+ lsrs r0, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x7\n\
+ ble _08094060\n\
+_080940C2:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080940D0: .4byte 0x02000000\n\
+_080940D4: .4byte 0x06004000\n\
+_080940D8: .4byte gUnknown_083B5F8C\n\
+_080940DC: .4byte 0x000003c2\n\
+_080940E0: .4byte 0x00000402\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_80940E4() {
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ movs r2, 0\n\
+ ldr r1, _08094108 @ =0x06004000\n\
+ movs r4, 0\n\
+ ldr r3, _0809410C @ =0x000003ff\n\
+_080940EE:\n\
+ strh r4, [r1]\n\
+ lsls r0, r2, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ adds r1, 0x2\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ ble _080940EE\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08094108: .4byte 0x06004000\n\
+_0809410C: .4byte 0x000003ff\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+static void sub_8094110() {
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r6, _0809413C @ =0x06004800\n\
+ movs r2, 0x3\n\
+ movs r5, 0xA0\n\
+ lsls r5, 2\n\
+ movs r3, 0x1\n\
+ movs r4, 0xB0\n\
+ lsls r4, 2\n\
+_08094120:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ adds r1, r0, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r4\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x10\n\
+ bls _08094120\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809413C: .4byte 0x06004800\n\
+ .syntax divided\n");
+}
+
+
+static void sub_8094140(void) {
+ u8 *buffer;
+
+ BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
+
+ buffer = gStringVar1;
+ StringCopy(buffer, unk_2000000.var_64.playerName);
+ ConvertInternationalString(buffer, unk_2000000.language);
+ MenuPrint(buffer, 7, 5);
+
+ TrainerCard_Front_PrintTrainerID();
+ TrainerCard_Front_PrintMoney();
+ TrainerCard_Front_PrintPokedexCount();
+ sub_809429C();
+}
+
+static void sub_8094188(void) {
+ BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
+ TrainerCard_Back_PrintName();
+ TrainerCard_Back_PrintHallOfFameTime_Label();
+ TrainerCard_Back_PrintLinkBattlesLabel();
+ TrainerCard_Back_PrintBattleTower_Label();
+ TrainerCard_Back_PrintLinkContests_Label();
+ TrainerCard_Back_PrintLinkPokeblocks_Label();
+ TrainerCard_Back_PrintPokemonTrades_Label();
+
+ BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Labels);
+ TrainerCard_Back_PrintHallOfFameTime();
+ TrainerCard_Back_PrintLinkBattles();
+ TrainerCard_Back_PrintBattleTower();
+ TrainerCard_Back_PrintLinkContests();
+ TrainerCard_Back_PrintLinkPokeblocks();
+ TrainerCard_Back_PrintPokemonTrades();
+}
+
+static void TrainerCard_Front_PrintTrainerID(void) {
+ u8 buffer[8];
+
+ ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
+ MenuPrint(buffer, 20, 2);
+}
+
+static void TrainerCard_Front_PrintMoney(void) {
+ sub_80B7AEC(unk_2000000.var_64.money, 16, 8);
+}
+
+static void TrainerCard_Front_PrintPokedexCount(void) {
+ u8 buffer[16];
+
+ if (unk_2000000.var_7 == FALSE) {
+ sub_8094110();
+ return;
+ }
+
+ ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 16, 10);
+}
+
+static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) {
+ u8 buffer[16];
+ u16 playTimeHours;
+ u16 playTimeMinutes;
+
+ playTimeHours = gSaveBlock2.playTimeHours;
+ playTimeMinutes = gSaveBlock2.playTimeMinutes;
+
+ if (unk_2000000.var_1 != 0) {
+ playTimeHours = unk_2000000.var_64.playTimeHours;
+ playTimeMinutes = unk_2000000.var_64.playTimeMinutes;
+ }
+
+ FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
+ sub_8072C74(arg1, buffer, 48, 1);
+}
+
+static void sub_809429C(void) {
+ u8 *bufferPtr;
+
+ if (unk_2000000.var_1 == FALSE) {
+ return;
+ }
+
+ bufferPtr = gStringVar1;
+ bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[0]);
+ bufferPtr[0] = 00;
+ bufferPtr++;
+ bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[1]);
+ MenuPrint(gStringVar1, 2, 14);
+
+ bufferPtr = gStringVar1;
+ bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[2]);
+ bufferPtr[0] = 00;
+ bufferPtr++;
+ bufferPtr = StringCopy(bufferPtr, unk_2000000.var_20[3]);
+ MenuPrint(gStringVar1, 2, 16);
+}
+
+static void TrainerCard_Back_PrintName(void) {
+ u8 *bufferPtr;
+
+ bufferPtr = gStringVar1;
+ StringCopy(bufferPtr, unk_2000000.var_64.playerName);
+ ConvertInternationalString(bufferPtr, unk_2000000.language);
+
+ StringAppend(bufferPtr, gOtherText_TrainersTrainerCard);
+
+ MenuPrint_RightAligned(gStringVar1, 28, 2);
+}
+
+static void TrainerCard_Back_PrintHallOfFameTime_Label(void) {
+ if (unk_2000000.var_8 == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_FirstHOF, 3, 5);
+}
+
+static void TrainerCard_Back_PrintHallOfFameTime(void) {
+ u8 *bufferPtr;
+
+ if (unk_2000000.var_8 == FALSE) {
+ return;
+ }
+
+ bufferPtr = gStringVar1;
+ bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN,
+ 3);
+ bufferPtr = StringCopy(bufferPtr, gUnknown_083B5EF4);
+ bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS,
+ 2);
+ bufferPtr = StringCopy(bufferPtr, gUnknown_083B5EF4);
+ bufferPtr = ConvertIntToDecimalStringN(bufferPtr, unk_2000000.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS,
+ 2);
+
+ MenuPrint_RightAligned(gStringVar1, 28, 5);
+}
+
+static void TrainerCard_Back_PrintLinkBattlesLabel(void) {
+ if (unk_2000000.var_9 == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_LinkCableBattles, 3, 7);
+}
+
+static void TrainerCard_Back_PrintLinkBattles(void) {
+ u8 buffer[16];
+
+ if (unk_2000000.var_9 == FALSE) {
+ return;
+ }
+
+ ConvertIntToDecimalString(buffer, unk_2000000.var_64.linkBattleWins);
+ MenuPrint_RightAligned(buffer, 22, 7);
+
+ ConvertIntToDecimalString(buffer, unk_2000000.var_64.linkBattleLosses);
+ MenuPrint_RightAligned(buffer, 28, 7);
+}
+
+static void TrainerCard_Back_PrintBattleTower_Label(void) {
+ if (unk_2000000.var_a == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
+}
+
+static void TrainerCard_Back_PrintBattleTower(void) {
+ u8 buffer[16];
+
+ if (unk_2000000.var_a == FALSE) {
+ return;
+ }
+
+ sub_8072C44(buffer, unk_2000000.var_64.battleTowerWins, 24, 1);
+ MenuPrint_PixelCoords(buffer, 112, 120, 0);
+
+ sub_8072C44(buffer, unk_2000000.var_64.battleTowerLosses, 24, 1);
+ MenuPrint_PixelCoords(buffer, 149, 120, 0);
+}
+
+static void TrainerCard_Back_PrintLinkContests_Label(void) {
+ if (unk_2000000.var_b == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_ContestRecord, 3, 13);
+}
+
+static void TrainerCard_Back_PrintLinkContests(void) {
+ u8 buffer[8];
+
+ if (unk_2000000.var_b == FALSE) {
+ return;
+ }
+
+ ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 28, 13);
+}
+
+static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) {
+ if (unk_2000000.var_c == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_MixingRecord, 3, 11);
+}
+
+static void TrainerCard_Back_PrintLinkPokeblocks(void) {
+ u8 buffer[8];
+
+ if (unk_2000000.var_c == FALSE) {
+ return;
+ }
+
+ ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 11);
+}
+
+static void TrainerCard_Back_PrintPokemonTrades_Label(void) {
+ if (unk_2000000.var_d == FALSE) {
+ return;
+ }
+
+ MenuPrint(gOtherText_TradeRecord, 3, 9);
+}
+
+static void TrainerCard_Back_PrintPokemonTrades(void) {
+ u8 buffer[8];
+
+ if (unk_2000000.var_d == FALSE) {
+ return;
+ }
+
+ ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 9);
+}
+
+static void unref_sub_8094588(u16 left, u16 top) {
+ u8 *text = gOtherText_Boy;
+
+ if (gSaveBlock2.playerGender == FEMALE) {
+ text = gOtherText_Girl;
+ }
+
+ MenuPrint(text, (u8) left, (u8) top);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index bdaca2da7..842903712 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -729,12 +729,13 @@ gUnknown_02038568: @ 2038568
gUnknown_0203856C: @ 203856C
.space 0x4
-gUnknown_02038570: @ 2038570
+gContestMons: @ 2038570
.space 0xD
gUnknown_0203857D: @ 203857D
.space 0x11
+ @ contest move space
gUnknown_0203858E: @ 203858E
.space 0x8
@@ -759,7 +760,7 @@ gUnknown_02038690: @ 2038690
gUnknown_02038694: @ 2038694
.space 0x1
-gUnknown_02038695: @ 2038695
+gContestPlayerMonIndex: @ 2038695
.space 0x1
gUnknown_02038696: @ 2038696