mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
Frontier, finish ranking hall
This commit is contained in:
parent
98d8dbfd8a
commit
3a9eeef844
@ -7,805 +7,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start sub_81A447C
|
|
||||||
sub_81A447C: @ 81A447C
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x8
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp]
|
|
||||||
_081A448C:
|
|
||||||
ldr r1, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r1]
|
|
||||||
ldr r2, [sp]
|
|
||||||
lsls r1, r2, 1
|
|
||||||
ldr r4, =0x00000caa
|
|
||||||
adds r0, r4
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r0, [r0]
|
|
||||||
subs r0, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
mov r9, r1
|
|
||||||
adds r2, 0x1
|
|
||||||
str r2, [sp, 0x4]
|
|
||||||
cmp r0, 0x5
|
|
||||||
bhi _081A454E
|
|
||||||
movs r6, 0
|
|
||||||
ldr r0, [sp]
|
|
||||||
movs r2, 0x64
|
|
||||||
adds r1, r0, 0
|
|
||||||
muls r1, r2
|
|
||||||
ldr r0, =gPlayerParty
|
|
||||||
adds r7, r1, r0
|
|
||||||
_081A44BA:
|
|
||||||
movs r5, 0
|
|
||||||
movs r4, 0xD
|
|
||||||
adds r4, r6
|
|
||||||
mov r8, r4
|
|
||||||
adds r0, r6, 0x1
|
|
||||||
mov r10, r0
|
|
||||||
_081A44C6:
|
|
||||||
ldr r1, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r1]
|
|
||||||
ldr r2, =0x00000caa
|
|
||||||
adds r0, r2
|
|
||||||
add r0, r9
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r4, 0x64
|
|
||||||
adds r1, r0, 0
|
|
||||||
muls r1, r4
|
|
||||||
movs r0, 0xEA
|
|
||||||
lsls r0, 1
|
|
||||||
adds r1, r0
|
|
||||||
ldr r2, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r2]
|
|
||||||
adds r0, r1
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0xD
|
|
||||||
movs r2, 0
|
|
||||||
bl GetMonData
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r0, r7, 0
|
|
||||||
mov r1, r8
|
|
||||||
movs r2, 0
|
|
||||||
bl GetMonData
|
|
||||||
cmp r4, r0
|
|
||||||
beq _081A4508
|
|
||||||
adds r0, r5, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
cmp r5, 0x3
|
|
||||||
bls _081A44C6
|
|
||||||
_081A4508:
|
|
||||||
cmp r5, 0x4
|
|
||||||
bne _081A4516
|
|
||||||
adds r0, r7, 0
|
|
||||||
movs r1, 0xA6
|
|
||||||
adds r2, r6, 0
|
|
||||||
bl SetMonMoveSlot
|
|
||||||
_081A4516:
|
|
||||||
mov r4, r10
|
|
||||||
lsls r0, r4, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
cmp r6, 0x3
|
|
||||||
bls _081A44BA
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r2, =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r2]
|
|
||||||
ldr r4, =0x00000caa
|
|
||||||
adds r1, r4
|
|
||||||
add r1, r9
|
|
||||||
ldrh r1, [r1]
|
|
||||||
subs r1, 0x1
|
|
||||||
movs r3, 0x64
|
|
||||||
muls r1, r3
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x8E
|
|
||||||
lsls r1, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r2, =gPlayerParty
|
|
||||||
ldr r4, [sp]
|
|
||||||
adds r1, r4, 0
|
|
||||||
muls r1, r3
|
|
||||||
adds r1, r2
|
|
||||||
movs r2, 0x64
|
|
||||||
bl memcpy
|
|
||||||
_081A454E:
|
|
||||||
ldr r1, [sp, 0x4]
|
|
||||||
lsls r0, r1, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
str r0, [sp]
|
|
||||||
cmp r0, 0x3
|
|
||||||
bls _081A448C
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A447C
|
|
||||||
|
|
||||||
thumb_func_start sub_81A457C
|
|
||||||
sub_81A457C: @ 81A457C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl sub_81A5030
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A457C
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4594
|
|
||||||
sub_81A4594: @ 81A4594
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x2C
|
|
||||||
mov r8, r1
|
|
||||||
adds r6, r3, 0
|
|
||||||
ldr r1, =gRecordsWindowId
|
|
||||||
ldrb r5, [r1]
|
|
||||||
lsls r4, r0, 1
|
|
||||||
adds r4, r0
|
|
||||||
ldr r1, =gText_1Dot
|
|
||||||
adds r4, r1
|
|
||||||
mov r1, r8
|
|
||||||
lsls r3, r1, 27
|
|
||||||
lsrs r3, 24
|
|
||||||
lsls r1, r0, 2
|
|
||||||
adds r1, r0
|
|
||||||
adds r2, r1
|
|
||||||
lsls r2, 3
|
|
||||||
adds r2, 0x1
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r7, r2, 24
|
|
||||||
str r7, [sp]
|
|
||||||
movs r0, 0xFF
|
|
||||||
mov r10, r0
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r1, 0
|
|
||||||
mov r9, r1
|
|
||||||
str r1, [sp, 0x8]
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
movs r0, 0xFF
|
|
||||||
strb r0, [r6, 0xD]
|
|
||||||
ldrh r0, [r6, 0x4]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _081A465C
|
|
||||||
adds r1, r6, 0x6
|
|
||||||
ldrb r2, [r6, 0xE]
|
|
||||||
add r0, sp, 0xC
|
|
||||||
bl TVShowConvertInternationalString
|
|
||||||
ldr r1, =gRecordsWindowId
|
|
||||||
ldrb r0, [r1]
|
|
||||||
mov r3, r8
|
|
||||||
adds r3, 0x2
|
|
||||||
lsls r3, 27
|
|
||||||
lsrs r3, 24
|
|
||||||
str r7, [sp]
|
|
||||||
mov r1, r10
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
mov r1, r9
|
|
||||||
str r1, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
add r2, sp, 0xC
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
ldrh r1, [r6, 0x4]
|
|
||||||
ldr r0, =0x0000270f
|
|
||||||
cmp r1, r0
|
|
||||||
bls _081A4618
|
|
||||||
adds r1, r0, 0
|
|
||||||
_081A4618:
|
|
||||||
ldr r0, =gStringVar2
|
|
||||||
movs r2, 0x1
|
|
||||||
movs r3, 0x4
|
|
||||||
bl ConvertIntToDecimalStringN
|
|
||||||
ldr r5, =gStringVar4
|
|
||||||
ldr r1, =gUnknown_08611D08
|
|
||||||
ldr r0, [sp, 0x4C]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r4, [r0]
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x1
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0xC8
|
|
||||||
bl GetStringRightAlignXOffset
|
|
||||||
adds r3, r0, 0
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
ldr r1, =gRecordsWindowId
|
|
||||||
ldrb r0, [r1]
|
|
||||||
str r7, [sp]
|
|
||||||
mov r1, r10
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
mov r1, r9
|
|
||||||
str r1, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
_081A465C:
|
|
||||||
add sp, 0x2C
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A4594
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4684
|
|
||||||
sub_81A4684: @ 81A4684
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x2C
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r7, r1, 0
|
|
||||||
mov r10, r2
|
|
||||||
adds r5, r3, 0
|
|
||||||
ldr r1, =gRecordsWindowId
|
|
||||||
ldrb r0, [r1]
|
|
||||||
lsls r2, r6, 1
|
|
||||||
adds r2, r6
|
|
||||||
ldr r1, =gText_1Dot
|
|
||||||
adds r2, r1
|
|
||||||
lsls r3, r7, 27
|
|
||||||
lsrs r3, 24
|
|
||||||
mov r12, r3
|
|
||||||
lsls r1, r6, 2
|
|
||||||
adds r1, r6
|
|
||||||
mov r3, r10
|
|
||||||
adds r4, r3, r1
|
|
||||||
lsls r1, r4, 3
|
|
||||||
adds r1, 0x1
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
str r1, [sp]
|
|
||||||
movs r1, 0xFF
|
|
||||||
mov r9, r1
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
movs r3, 0
|
|
||||||
mov r8, r3
|
|
||||||
str r3, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
mov r3, r12
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
ldrh r0, [r5, 0x8]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _081A47BC
|
|
||||||
movs r0, 0xFF
|
|
||||||
strb r0, [r5, 0x11]
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
strb r0, [r5, 0x19]
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r1, 0xA
|
|
||||||
ldrb r2, [r5, 0x1A]
|
|
||||||
add r0, sp, 0xC
|
|
||||||
bl TVShowConvertInternationalString
|
|
||||||
ldr r1, =gRecordsWindowId
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r3, r7, 0x2
|
|
||||||
lsls r3, 27
|
|
||||||
lsrs r3, 24
|
|
||||||
subs r1, r4, 0x1
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, 0x1
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
str r1, [sp]
|
|
||||||
mov r2, r9
|
|
||||||
str r2, [sp, 0x4]
|
|
||||||
mov r1, r8
|
|
||||||
str r1, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
add r2, sp, 0xC
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
adds r4, r5, 0
|
|
||||||
adds r4, 0x12
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl IsStringJapanese
|
|
||||||
cmp r0, 0
|
|
||||||
beq _081A4734
|
|
||||||
add r0, sp, 0xC
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0x1
|
|
||||||
bl TVShowConvertInternationalString
|
|
||||||
b _081A473C
|
|
||||||
.pool
|
|
||||||
_081A4734:
|
|
||||||
add r0, sp, 0xC
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl StringCopy
|
|
||||||
_081A473C:
|
|
||||||
ldr r2, =gRecordsWindowId
|
|
||||||
mov r9, r2
|
|
||||||
ldrb r0, [r2]
|
|
||||||
adds r3, r7, 0x4
|
|
||||||
lsls r3, 27
|
|
||||||
lsrs r3, 24
|
|
||||||
lsls r1, r6, 2
|
|
||||||
adds r1, r6
|
|
||||||
mov r2, r10
|
|
||||||
adds r6, r2, r1
|
|
||||||
adds r1, r6, 0x1
|
|
||||||
lsls r1, 3
|
|
||||||
adds r1, 0x1
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
str r1, [sp]
|
|
||||||
movs r1, 0xFF
|
|
||||||
mov r8, r1
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
movs r7, 0
|
|
||||||
str r7, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
add r2, sp, 0xC
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
ldrh r1, [r5, 0x8]
|
|
||||||
ldr r0, =0x0000270f
|
|
||||||
cmp r1, r0
|
|
||||||
bls _081A4778
|
|
||||||
adds r1, r0, 0
|
|
||||||
_081A4778:
|
|
||||||
ldr r0, =gStringVar2
|
|
||||||
movs r2, 0x1
|
|
||||||
movs r3, 0x4
|
|
||||||
bl ConvertIntToDecimalStringN
|
|
||||||
ldr r5, =gStringVar4
|
|
||||||
ldr r0, =gUnknown_08611D08
|
|
||||||
ldr r4, [r0, 0x24]
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x1
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0xC8
|
|
||||||
bl GetStringRightAlignXOffset
|
|
||||||
adds r3, r0, 0
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
mov r2, r9
|
|
||||||
ldrb r0, [r2]
|
|
||||||
lsls r1, r6, 3
|
|
||||||
adds r1, 0x1
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
str r1, [sp]
|
|
||||||
mov r1, r8
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
str r7, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
_081A47BC:
|
|
||||||
add sp, 0x2C
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A4684
|
|
||||||
|
|
||||||
thumb_func_start sub_81A47E0
|
|
||||||
sub_81A47E0: @ 81A47E0
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x44
|
|
||||||
mov r9, r0
|
|
||||||
mov r10, r1
|
|
||||||
str r2, [sp, 0x40]
|
|
||||||
movs r0, 0xAC
|
|
||||||
lsls r0, 1
|
|
||||||
bl AllocZeroed
|
|
||||||
mov r8, r0
|
|
||||||
bl sub_80E8260
|
|
||||||
add r0, sp, 0x30
|
|
||||||
mov r12, r0
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r3, [sp, 0x40]
|
|
||||||
lsls r1, r3, 1
|
|
||||||
adds r1, r3
|
|
||||||
lsls r1, 4
|
|
||||||
mov r4, r10
|
|
||||||
lsls r0, r4, 1
|
|
||||||
add r0, r10
|
|
||||||
lsls r0, 5
|
|
||||||
adds r1, r0
|
|
||||||
adds r4, r1, r2
|
|
||||||
mov r3, sp
|
|
||||||
movs r2, 0x2
|
|
||||||
_081A4820:
|
|
||||||
adds r0, r3, 0
|
|
||||||
movs r5, 0x87
|
|
||||||
lsls r5, 2
|
|
||||||
adds r1, r4, r5
|
|
||||||
ldm r1!, {r5-r7}
|
|
||||||
stm r0!, {r5-r7}
|
|
||||||
ldr r1, [r1]
|
|
||||||
str r1, [r0]
|
|
||||||
adds r4, 0x10
|
|
||||||
adds r3, 0x10
|
|
||||||
subs r2, 0x1
|
|
||||||
cmp r2, 0
|
|
||||||
bge _081A4820
|
|
||||||
ldr r6, [sp, 0x40]
|
|
||||||
lsls r0, r6, 4
|
|
||||||
mov r7, r10
|
|
||||||
lsls r1, r7, 5
|
|
||||||
adds r0, r1
|
|
||||||
mov r1, r12
|
|
||||||
add r0, r8
|
|
||||||
ldm r0!, {r2-r4}
|
|
||||||
stm r1!, {r2-r4}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
movs r2, 0
|
|
||||||
_081A4852:
|
|
||||||
movs r1, 0
|
|
||||||
movs r4, 0
|
|
||||||
movs r3, 0
|
|
||||||
lsls r5, r2, 4
|
|
||||||
adds r6, r2, 0x1
|
|
||||||
mov r2, sp
|
|
||||||
_081A485E:
|
|
||||||
ldrh r0, [r2, 0x4]
|
|
||||||
cmp r0, r1
|
|
||||||
ble _081A4868
|
|
||||||
adds r4, r3, 0
|
|
||||||
adds r1, r0, 0
|
|
||||||
_081A4868:
|
|
||||||
adds r2, 0x10
|
|
||||||
adds r3, 0x1
|
|
||||||
cmp r3, 0x3
|
|
||||||
ble _081A485E
|
|
||||||
mov r0, sp
|
|
||||||
ldrh r0, [r0, 0x34]
|
|
||||||
cmp r0, r1
|
|
||||||
blt _081A487A
|
|
||||||
movs r4, 0x3
|
|
||||||
_081A487A:
|
|
||||||
lsls r0, r4, 4
|
|
||||||
mov r7, sp
|
|
||||||
adds r2, r7, r0
|
|
||||||
mov r0, r9
|
|
||||||
adds r1, r5, r0
|
|
||||||
adds r0, r2, 0
|
|
||||||
ldm r0!, {r3-r5}
|
|
||||||
stm r1!, {r3-r5}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r2, 0x4]
|
|
||||||
adds r2, r6, 0
|
|
||||||
cmp r2, 0x2
|
|
||||||
ble _081A4852
|
|
||||||
mov r0, r8
|
|
||||||
bl Free
|
|
||||||
add sp, 0x44
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A47E0
|
|
||||||
|
|
||||||
thumb_func_start sub_81A48B4
|
|
||||||
sub_81A48B4: @ 81A48B4
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x74
|
|
||||||
mov r9, r0
|
|
||||||
mov r10, r1
|
|
||||||
movs r0, 0xAC
|
|
||||||
lsls r0, 1
|
|
||||||
bl AllocZeroed
|
|
||||||
mov r8, r0
|
|
||||||
bl sub_80E8260
|
|
||||||
mov r0, sp
|
|
||||||
adds r0, 0x54
|
|
||||||
str r0, [sp, 0x70]
|
|
||||||
add r1, sp, 0x5C
|
|
||||||
mov r12, r1
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
movs r0, 0x54
|
|
||||||
mov r2, r10
|
|
||||||
muls r2, r0
|
|
||||||
adds r0, r2, 0
|
|
||||||
adds r3, r0, r1
|
|
||||||
mov r2, sp
|
|
||||||
movs r4, 0x2
|
|
||||||
_081A48EE:
|
|
||||||
adds r0, r2, 0
|
|
||||||
ldr r5, =0x0000057c
|
|
||||||
adds r1, r3, r5
|
|
||||||
ldm r1!, {r5-r7}
|
|
||||||
stm r0!, {r5-r7}
|
|
||||||
ldm r1!, {r5-r7}
|
|
||||||
stm r0!, {r5-r7}
|
|
||||||
ldr r1, [r1]
|
|
||||||
str r1, [r0]
|
|
||||||
adds r3, 0x1C
|
|
||||||
adds r2, 0x1C
|
|
||||||
subs r4, 0x1
|
|
||||||
cmp r4, 0
|
|
||||||
bge _081A48EE
|
|
||||||
mov r6, r10
|
|
||||||
lsls r0, r6, 3
|
|
||||||
subs r0, r6
|
|
||||||
lsls r0, 2
|
|
||||||
add r0, r8
|
|
||||||
ldr r1, [sp, 0x70]
|
|
||||||
movs r7, 0x90
|
|
||||||
lsls r7, 1
|
|
||||||
adds r0, r7
|
|
||||||
ldm r0!, {r2-r4}
|
|
||||||
stm r1!, {r2-r4}
|
|
||||||
ldm r0!, {r5-r7}
|
|
||||||
stm r1!, {r5-r7}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
movs r4, 0
|
|
||||||
_081A492A:
|
|
||||||
movs r1, 0
|
|
||||||
movs r5, 0
|
|
||||||
movs r3, 0
|
|
||||||
lsls r6, r4, 3
|
|
||||||
adds r7, r4, 0x1
|
|
||||||
mov r2, sp
|
|
||||||
_081A4936:
|
|
||||||
ldrh r0, [r2, 0x8]
|
|
||||||
cmp r0, r1
|
|
||||||
ble _081A4940
|
|
||||||
adds r5, r3, 0
|
|
||||||
adds r1, r0, 0
|
|
||||||
_081A4940:
|
|
||||||
adds r2, 0x1C
|
|
||||||
adds r3, 0x1
|
|
||||||
cmp r3, 0x2
|
|
||||||
ble _081A4936
|
|
||||||
mov r2, r12
|
|
||||||
ldrh r0, [r2]
|
|
||||||
cmp r0, r1
|
|
||||||
blt _081A4952
|
|
||||||
movs r5, 0x3
|
|
||||||
_081A4952:
|
|
||||||
subs r1, r6, r4
|
|
||||||
lsls r1, 2
|
|
||||||
lsls r0, r5, 3
|
|
||||||
subs r0, r5
|
|
||||||
lsls r0, 2
|
|
||||||
mov r3, sp
|
|
||||||
adds r2, r3, r0
|
|
||||||
add r1, r9
|
|
||||||
adds r0, r2, 0
|
|
||||||
ldm r0!, {r4-r6}
|
|
||||||
stm r1!, {r4-r6}
|
|
||||||
ldm r0!, {r3-r5}
|
|
||||||
stm r1!, {r3-r5}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r2, 0x8]
|
|
||||||
adds r4, r7, 0
|
|
||||||
cmp r4, 0x2
|
|
||||||
ble _081A492A
|
|
||||||
mov r0, r8
|
|
||||||
bl Free
|
|
||||||
add sp, 0x74
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A48B4
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4998
|
|
||||||
sub_81A4998: @ 81A4998
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x94
|
|
||||||
adds r7, r0, 0
|
|
||||||
str r1, [sp, 0x90]
|
|
||||||
ldr r0, =gStringVar1
|
|
||||||
ldr r4, =gUnknown_08611CB0
|
|
||||||
lsls r5, r7, 3
|
|
||||||
adds r1, r5, r4
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl StringCopy
|
|
||||||
ldr r6, =gStringVar4
|
|
||||||
adds r4, 0x4
|
|
||||||
adds r5, r4
|
|
||||||
ldr r1, [r5]
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
ldr r0, =gRecordsWindowId
|
|
||||||
mov r8, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
movs r1, 0x1
|
|
||||||
mov r10, r1
|
|
||||||
str r1, [sp]
|
|
||||||
movs r2, 0xFF
|
|
||||||
mov r9, r2
|
|
||||||
str r2, [sp, 0x4]
|
|
||||||
movs r5, 0
|
|
||||||
str r5, [sp, 0x8]
|
|
||||||
adds r2, r6, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
ldr r1, =gUnknown_08611D00
|
|
||||||
ldr r2, [sp, 0x90]
|
|
||||||
lsls r0, r2, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r4, [r0]
|
|
||||||
movs r0, 0x1
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0xD0
|
|
||||||
bl GetStringRightAlignXOffset
|
|
||||||
adds r3, r0, 0
|
|
||||||
mov r1, r8
|
|
||||||
ldrb r0, [r1]
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
mov r2, r10
|
|
||||||
str r2, [sp]
|
|
||||||
mov r1, r9
|
|
||||||
str r1, [sp, 0x4]
|
|
||||||
str r5, [sp, 0x8]
|
|
||||||
movs r1, 0x1
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
cmp r7, 0x9
|
|
||||||
bne _081A4A6C
|
|
||||||
ldr r2, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r2]
|
|
||||||
ldr r1, =0x00000ee8
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0xFF
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r0, [r2]
|
|
||||||
movs r2, 0xEF
|
|
||||||
lsls r2, 4
|
|
||||||
adds r0, r2
|
|
||||||
movs r1, 0x1
|
|
||||||
negs r1, r1
|
|
||||||
strb r1, [r0]
|
|
||||||
add r4, sp, 0x3C
|
|
||||||
adds r0, r4, 0
|
|
||||||
ldr r1, [sp, 0x90]
|
|
||||||
bl sub_81A48B4
|
|
||||||
_081A4A3A:
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
movs r2, 0x4
|
|
||||||
adds r3, r4, 0
|
|
||||||
bl sub_81A4684
|
|
||||||
adds r4, 0x1C
|
|
||||||
adds r5, 0x1
|
|
||||||
cmp r5, 0x2
|
|
||||||
ble _081A4A3A
|
|
||||||
b _081A4A90
|
|
||||||
.pool
|
|
||||||
_081A4A6C:
|
|
||||||
add r0, sp, 0xC
|
|
||||||
adds r1, r7, 0
|
|
||||||
ldr r2, [sp, 0x90]
|
|
||||||
bl sub_81A47E0
|
|
||||||
movs r5, 0
|
|
||||||
add r4, sp, 0xC
|
|
||||||
_081A4A7A:
|
|
||||||
str r7, [sp]
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
movs r2, 0x4
|
|
||||||
adds r3, r4, 0
|
|
||||||
bl sub_81A4594
|
|
||||||
adds r4, 0x10
|
|
||||||
adds r5, 0x1
|
|
||||||
cmp r5, 0x2
|
|
||||||
ble _081A4A7A
|
|
||||||
_081A4A90:
|
|
||||||
add sp, 0x94
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_81A4998
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4AA0
|
|
||||||
sub_81A4AA0: @ 81A4AA0
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, =gRecordsWindowId
|
|
||||||
ldr r0, =gUnknown_08611C84
|
|
||||||
bl AddWindow
|
|
||||||
strb r0, [r4]
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0
|
|
||||||
bl NewMenuHelpers_DrawStdWindowFrame
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x11
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
ldr r0, =gSpecialVar_0x8005
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r1, 0
|
|
||||||
bl sub_81A4998
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl PutWindowTilemap
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CopyWindowToVram
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A4AA0
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4AE8
|
|
||||||
sub_81A4AE8: @ 81A4AE8
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, =gRecordsWindowId
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x11
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
ldr r0, =gSpecialVar_0x8005
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r1, 0x1
|
|
||||||
bl sub_81A4998
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x2
|
|
||||||
bl CopyWindowToVram
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A4AE8
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4B14
|
thumb_func_start sub_81A4B14
|
||||||
sub_81A4B14: @ 81A4B14
|
sub_81A4B14: @ 81A4B14
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
.section .rodata
|
.section .rodata
|
||||||
|
|
||||||
.align 2
|
|
||||||
gUnknown_08611550:: @ 8611550
|
|
||||||
.byte 0x23, 0x46, 0x23, 0x01, 0x04, 0x09, 0x05, 0x00, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x38, 0x1c, 0x01, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x8c, 0x38, 0x01, 0x15, 0x46, 0x23, 0x00
|
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_0861156C:: @ 861156C
|
gUnknown_0861156C:: @ 861156C
|
||||||
|
@ -62,9 +62,9 @@ BattleFrontier_RankingHall_EventScript_25E516:: @ 825E516
|
|||||||
end
|
end
|
||||||
|
|
||||||
BattleFrontier_RankingHall_EventScript_25E522:: @ 825E522
|
BattleFrontier_RankingHall_EventScript_25E522:: @ 825E522
|
||||||
special sub_81A4AA0
|
special ShowRankingHallRecordsWindow
|
||||||
waitbuttonpress
|
waitbuttonpress
|
||||||
special sub_81A4AE8
|
special ScrollRankingHallRecordsWindow
|
||||||
waitbuttonpress
|
waitbuttonpress
|
||||||
special RemoveRecordsWindow
|
special RemoveRecordsWindow
|
||||||
releaseall
|
releaseall
|
||||||
|
@ -448,8 +448,8 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_80F90DC
|
def_special sub_80F90DC
|
||||||
def_special sub_80F910C
|
def_special sub_80F910C
|
||||||
def_special sub_80F9160
|
def_special sub_80F9160
|
||||||
def_special sub_81A4AA0
|
def_special ShowRankingHallRecordsWindow
|
||||||
def_special sub_81A4AE8
|
def_special ScrollRankingHallRecordsWindow
|
||||||
def_special sub_8139F20
|
def_special sub_8139F20
|
||||||
def_special sub_80F9134
|
def_special sub_80F9134
|
||||||
def_special sub_80F9154
|
def_special sub_80F9154
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef GUARD_BATTLE_FRONTIER_2_H
|
#ifndef GUARD_FRONTIER_UTIL_H
|
||||||
#define GUARD_BATTLE_FRONTIER_2_H
|
#define GUARD_FRONTIER_UTIL_H
|
||||||
|
|
||||||
#define FRONTIER_BEFORE_TEXT 0
|
#define FRONTIER_BEFORE_TEXT 0
|
||||||
#define FRONTIER_PLAYER_LOST_TEXT 1
|
#define FRONTIER_PLAYER_LOST_TEXT 1
|
||||||
@ -18,4 +18,4 @@ u8 sub_81A6CA8(u8, u8);
|
|||||||
void sub_81A3908(void);
|
void sub_81A3908(void);
|
||||||
u32 GetCurrentFacilityWinStreak(void);
|
u32 GetCurrentFacilityWinStreak(void);
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_FRONTIER_2_H
|
#endif // GUARD_FRONTIER_UTIL_H
|
@ -137,6 +137,7 @@ enum LanguageId
|
|||||||
#define BAG_BERRIES_COUNT 46
|
#define BAG_BERRIES_COUNT 46
|
||||||
|
|
||||||
#define PYRAMID_BAG_ITEMS_COUNT 10
|
#define PYRAMID_BAG_ITEMS_COUNT 10
|
||||||
|
#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode.
|
||||||
|
|
||||||
// string lengths
|
// string lengths
|
||||||
#define ITEM_NAME_LENGTH 14
|
#define ITEM_NAME_LENGTH 14
|
||||||
@ -402,9 +403,9 @@ struct BattleFrontier
|
|||||||
/*0xCDC*/ u32 field_CDC;
|
/*0xCDC*/ u32 field_CDC;
|
||||||
/*0xCE0*/ u16 towerWinStreaks[4][2];
|
/*0xCE0*/ u16 towerWinStreaks[4][2];
|
||||||
/*0xCF0*/ u16 towerRecordWinStreaks[4][2];
|
/*0xCF0*/ u16 towerRecordWinStreaks[4][2];
|
||||||
/*0xD06*/ u16 field_D00;
|
/*0xD00*/ u16 field_D00;
|
||||||
/*0xD06*/ u16 field_D02;
|
/*0xD02*/ u16 field_D02;
|
||||||
/*0xD06*/ u16 field_D04;
|
/*0xD04*/ u16 field_D04;
|
||||||
/*0xD06*/ u8 field_D06;
|
/*0xD06*/ u8 field_D06;
|
||||||
/*0xD07*/ u8 field_D07;
|
/*0xD07*/ u8 field_D07;
|
||||||
/*0xD08*/ u8 field_D08_0:1;
|
/*0xD08*/ u8 field_D08_0:1;
|
||||||
@ -482,6 +483,24 @@ struct PlayersApprentice
|
|||||||
/*0xB8*/ struct Sav2_B8 field_B8[9];
|
/*0xB8*/ struct Sav2_B8 field_B8[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct RankingHall1P
|
||||||
|
{
|
||||||
|
u8 id[4];
|
||||||
|
u16 winStreak;
|
||||||
|
u8 name[PLAYER_NAME_LENGTH + 1];
|
||||||
|
u8 language;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RankingHall2P
|
||||||
|
{
|
||||||
|
u8 id1[4];
|
||||||
|
u8 id2[4];
|
||||||
|
u16 winStreak;
|
||||||
|
u8 name1[PLAYER_NAME_LENGTH + 1];
|
||||||
|
u8 name2[PLAYER_NAME_LENGTH + 1];
|
||||||
|
u8 language;
|
||||||
|
};
|
||||||
|
|
||||||
struct SaveBlock2
|
struct SaveBlock2
|
||||||
{
|
{
|
||||||
/*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
/*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||||
@ -506,11 +525,12 @@ struct SaveBlock2
|
|||||||
/*0xA8*/ u32 field_A8;
|
/*0xA8*/ u32 field_A8;
|
||||||
/*0xAC*/ u32 encryptionKey;
|
/*0xAC*/ u32 encryptionKey;
|
||||||
/*0xB0*/ struct PlayersApprentice playerApprentice;
|
/*0xB0*/ struct PlayersApprentice playerApprentice;
|
||||||
/*0xDC*/ struct Apprentice apprentices[4];
|
/*0xDC*/ struct Apprentice apprentices[4]; // From record mixing.
|
||||||
/*0x1EC*/ struct BerryCrush berryCrush;
|
/*0x1EC*/ struct BerryCrush berryCrush;
|
||||||
/*0x1FC*/ struct PokemonJumpResults pokeJump;
|
/*0x1FC*/ struct PokemonJumpResults pokeJump;
|
||||||
/*0x20C*/ struct BerryPickingResults berryPick;
|
/*0x20C*/ struct BerryPickingResults berryPick;
|
||||||
/*0x21C*/ u8 field_21C[1032];
|
/*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing.
|
||||||
|
/*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing.
|
||||||
/*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories.
|
/*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories.
|
||||||
/*0x64C*/ struct BattleFrontier frontier;
|
/*0x64C*/ struct BattleFrontier frontier;
|
||||||
}; // sizeof=0xF2C
|
}; // sizeof=0xF2C
|
||||||
|
@ -26,7 +26,6 @@ u16 RunTextPrintersAndIsPrinter0Active(void);
|
|||||||
void sub_81973A4(void);
|
void sub_81973A4(void);
|
||||||
void NewMenuHelpers_DrawDialogueFrame(u8, u8);
|
void NewMenuHelpers_DrawDialogueFrame(u8, u8);
|
||||||
void sub_819746C(u8 windowId, bool8 copyToVram);
|
void sub_819746C(u8 windowId, bool8 copyToVram);
|
||||||
void NewMenuHelpers_DrawStdWindowFrame(u8, u8);
|
|
||||||
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
|
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
|
||||||
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
|
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
|
||||||
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
|
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
|
||||||
|
@ -1,35 +1,13 @@
|
|||||||
#ifndef GUARD_RECORD_MIXING_H
|
#ifndef GUARD_RECORD_MIXING_H
|
||||||
#define GUARD_RECORD_MIXING_H
|
#define GUARD_RECORD_MIXING_H
|
||||||
|
|
||||||
// Exported type declarations
|
struct PlayerHallRecords
|
||||||
struct UnkRecordMixingStruct2a
|
|
||||||
{
|
{
|
||||||
u8 playerId[4];
|
struct RankingHall1P onePlayer[9][2];
|
||||||
u16 field_4;
|
struct RankingHall2P twoPlayers[2];
|
||||||
u8 playerName[PLAYER_NAME_LENGTH + 1];
|
|
||||||
u8 language;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkRecordMixingStruct2b
|
|
||||||
{
|
|
||||||
u8 playerId1[4];
|
|
||||||
u8 playerId2[4];
|
|
||||||
u16 field_8;
|
|
||||||
u8 playerName1[PLAYER_NAME_LENGTH + 1];
|
|
||||||
u8 playerName2[PLAYER_NAME_LENGTH + 1];
|
|
||||||
u8 language;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct UnkRecordMixingStruct2
|
|
||||||
{
|
|
||||||
struct UnkRecordMixingStruct2a field_0[9][2];
|
|
||||||
struct UnkRecordMixingStruct2b field_120[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Exported RAM declarations
|
|
||||||
|
|
||||||
// Exported ROM declarations
|
|
||||||
void sub_80E6BE8(void);
|
void sub_80E6BE8(void);
|
||||||
void sub_80E8260(struct UnkRecordMixingStruct2 *arg0);
|
void GetPlayerHallRecords(struct PlayerHallRecords *dst);
|
||||||
|
|
||||||
#endif //GUARD_RECORD_MIXING_H
|
#endif //GUARD_RECORD_MIXING_H
|
||||||
|
@ -877,4 +877,47 @@ extern const u8 gText_PokemonOnHook[];
|
|||||||
extern const u8 gText_NotEvenANibble[];
|
extern const u8 gText_NotEvenANibble[];
|
||||||
extern const u8 gText_ItGotAway[];
|
extern const u8 gText_ItGotAway[];
|
||||||
|
|
||||||
|
// Frontier records.
|
||||||
|
extern const u8 gText_WinStreak[];
|
||||||
|
extern const u8 gText_Record[];
|
||||||
|
extern const u8 gText_Current[];
|
||||||
|
extern const u8 gText_RoomsCleared[];
|
||||||
|
extern const u8 gText_Prev[];
|
||||||
|
extern const u8 gText_SingleBattleRoomResults[];
|
||||||
|
extern const u8 gText_DoubleBattleRoomResults[];
|
||||||
|
extern const u8 gText_MultiBattleRoomResults[];
|
||||||
|
extern const u8 gText_LinkMultiBattleRoomResults[];
|
||||||
|
extern const u8 gText_Lv502[];
|
||||||
|
extern const u8 gText_OpenLv[];
|
||||||
|
extern const u8 gText_RentalSwap[];
|
||||||
|
extern const u8 gText_ClearStreak[];
|
||||||
|
extern const u8 gText_Total[];
|
||||||
|
extern const u8 gText_Championships[];
|
||||||
|
extern const u8 gText_SingleBattleTourneyResults[];
|
||||||
|
extern const u8 gText_DoubleBattleTourneyResults[];
|
||||||
|
extern const u8 gText_SingleBattleHallResults[];
|
||||||
|
extern const u8 gText_DoubleBattleHallResults[];
|
||||||
|
extern const u8 gText_BattleChoiceResults[];
|
||||||
|
extern const u8 gText_TimesCleared[];
|
||||||
|
extern const u8 gText_KOsInARow[];
|
||||||
|
extern const u8 gText_SetKOTourneyResults[];
|
||||||
|
extern const u8 gText_TimesVar1[];
|
||||||
|
extern const u8 gText_BattleSwapSingleResults[];
|
||||||
|
extern const u8 gText_BattleSwapDoubleResults[];
|
||||||
|
extern const u8 gText_FloorsCleared[];
|
||||||
|
extern const u8 gText_BattleQuestResults[];
|
||||||
|
extern const u8 gText_LinkContestResults[];
|
||||||
|
extern const u8 gText_4th[];
|
||||||
|
extern const u8 gText_3rd[];
|
||||||
|
extern const u8 gText_2nd[];
|
||||||
|
extern const u8 gText_1st[];
|
||||||
|
extern const u8 gText_SpaceAndSpace[];
|
||||||
|
extern const u8 gText_CommaSpace[];
|
||||||
|
extern const u8 gText_NewLine[];
|
||||||
|
extern const u8 gText_ScrollTextUp[];
|
||||||
|
extern const u8 gText_Space2[];
|
||||||
|
extern const u8 gText_Are[];
|
||||||
|
extern const u8 gText_Are2[];
|
||||||
|
extern const u8 gText_123Dot[][3];
|
||||||
|
|
||||||
#endif //GUARD_STRINGS_H
|
#endif //GUARD_STRINGS_H
|
||||||
|
@ -246,7 +246,7 @@ SECTIONS {
|
|||||||
src/menu.o(.text);
|
src/menu.o(.text);
|
||||||
src/battle_factory.o(.text);
|
src/battle_factory.o(.text);
|
||||||
src/apprentice.o(.text);
|
src/apprentice.o(.text);
|
||||||
src/battle_frontier_2.o(.text);
|
src/frontier_util.o(.text);
|
||||||
asm/battle_frontier_2.o(.text);
|
asm/battle_frontier_2.o(.text);
|
||||||
src/item_menu.o(.text);
|
src/item_menu.o(.text);
|
||||||
src/list_menu.o(.text);
|
src/list_menu.o(.text);
|
||||||
@ -533,6 +533,7 @@ SECTIONS {
|
|||||||
src/menu.o(.rodata);
|
src/menu.o(.rodata);
|
||||||
src/battle_factory.o(.rodata);
|
src/battle_factory.o(.rodata);
|
||||||
src/apprentice.o(.rodata);
|
src/apprentice.o(.rodata);
|
||||||
|
src/frontier_util.o(.rodata);
|
||||||
data/battle_frontier_2.o(.rodata);
|
data/battle_frontier_2.o(.rodata);
|
||||||
src/item_menu.o(.rodata);
|
src/item_menu.o(.rodata);
|
||||||
src/list_menu.o(.rodata);
|
src/list_menu.o(.rodata);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "battle_frontier_2.h"
|
#include "frontier_util.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "battle_setup.h"
|
#include "battle_setup.h"
|
||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
@ -22,10 +22,14 @@
|
|||||||
#include "pokedex.h"
|
#include "pokedex.h"
|
||||||
#include "recorded_battle.h"
|
#include "recorded_battle.h"
|
||||||
#include "data2.h"
|
#include "data2.h"
|
||||||
|
#include "record_mixing.h"
|
||||||
|
#include "strings.h"
|
||||||
|
#include "malloc.h"
|
||||||
#include "constants/battle_frontier.h"
|
#include "constants/battle_frontier.h"
|
||||||
#include "constants/trainers.h"
|
#include "constants/trainers.h"
|
||||||
#include "constants/species.h"
|
#include "constants/species.h"
|
||||||
#include "constants/game_stat.h"
|
#include "constants/game_stat.h"
|
||||||
|
#include "constants/moves.h"
|
||||||
|
|
||||||
extern u8 gUnknown_0203CEF8[];
|
extern u8 gUnknown_0203CEF8[];
|
||||||
|
|
||||||
@ -34,22 +38,42 @@ extern const u16 gUnknown_08611BFC[][2];
|
|||||||
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
|
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
|
||||||
extern const struct WindowTemplate gUnknown_08611C74;
|
extern const struct WindowTemplate gUnknown_08611C74;
|
||||||
extern const struct WindowTemplate gUnknown_08611C7C;
|
extern const struct WindowTemplate gUnknown_08611C7C;
|
||||||
|
extern const struct WindowTemplate gUnknown_08611C84;
|
||||||
|
extern const u8 gUnknown_086118B4[29][7][4];
|
||||||
|
extern const u16 gUnknown_08611C9A[];
|
||||||
|
extern const u8 *const gUnknown_08611D08[];
|
||||||
|
extern const u8 *const gUnknown_08611CB0[][2];
|
||||||
|
extern const u8 *const gUnknown_08611D00[];
|
||||||
|
|
||||||
extern void sub_81B8558(void);
|
extern void sub_81B8558(void);
|
||||||
|
|
||||||
// This file's functions.
|
// This file's functions.
|
||||||
u8 sub_81A3B30(u8 facility);
|
u8 sub_81A3B30(u8 facility);
|
||||||
void ShowTowerResultsWindow(u8);
|
static void ShowTowerResultsWindow(u8);
|
||||||
void ShowDomeResultsWindow(u8);
|
static void ShowDomeResultsWindow(u8);
|
||||||
void ShowPalaceResultsWindow(u8);
|
static void ShowPalaceResultsWindow(u8);
|
||||||
void ShowPikeResultsWindow(void);
|
static void ShowPikeResultsWindow(void);
|
||||||
void ShowFactoryResultsWindow(u8);
|
static void ShowFactoryResultsWindow(u8);
|
||||||
void ShowArenaResultsWindow(void);
|
static void ShowArenaResultsWindow(void);
|
||||||
void ShowPyramidResultsWindow(void);
|
static void ShowPyramidResultsWindow(void);
|
||||||
void ShowLinkContestResultsWindow(void);
|
static void ShowLinkContestResultsWindow(void);
|
||||||
u8 sub_81A3610(void);
|
u8 sub_81A3610(void);
|
||||||
void sub_81A51A8(u8);
|
void sub_81A51A8(u8);
|
||||||
|
void sub_81A5030(u8);
|
||||||
|
|
||||||
|
// const rom data
|
||||||
|
const u8 gUnknown_08611550[][4] =
|
||||||
|
{
|
||||||
|
[FRONTIER_FACILITY_TOWER] = {0x23, 0x46, 0x23, 0x01},
|
||||||
|
[FRONTIER_FACILITY_DOME] = {0x04, 0x09, 0x05, 0x00},
|
||||||
|
[FRONTIER_FACILITY_PALACE] = {0x15, 0x2a, 0x15, 0x01},
|
||||||
|
[FRONTIER_FACILITY_ARENA] = {0x1c, 0x38, 0x1c, 0x01},
|
||||||
|
[FRONTIER_FACILITY_FACTORY] = {0x15, 0x2a, 0x15, 0x01},
|
||||||
|
[FRONTIER_FACILITY_PIKE] = {0x1c, 0x8c, 0x38, 0x01},
|
||||||
|
[FRONTIER_FACILITY_PYRAMID] = {0x15, 0x46, 0x23, 0x00},
|
||||||
|
};
|
||||||
|
|
||||||
|
// code
|
||||||
void sub_81A1780(void)
|
void sub_81A1780(void)
|
||||||
{
|
{
|
||||||
gUnknown_08611C18[gSpecialVar_0x8004]();
|
gUnknown_08611C18[gSpecialVar_0x8004]();
|
||||||
@ -214,7 +238,7 @@ void sub_81A1B98(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_81A1C24(u32 flags)
|
static bool8 sub_81A1C24(u32 flags)
|
||||||
{
|
{
|
||||||
if (gSaveBlock2Ptr->frontier.field_CDC & flags)
|
if (gSaveBlock2Ptr->frontier.field_CDC & flags)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -222,14 +246,14 @@ bool8 sub_81A1C24(u32 flags)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81A1C4C(const u8 *str, s32 y)
|
static void sub_81A1C4C(const u8 *str, s32 y)
|
||||||
{
|
{
|
||||||
s32 x = GetStringCenterAlignXOffset(1, str, 0xE0);
|
s32 x = GetStringCenterAlignXOffset(1, str, 0xE0);
|
||||||
y = (y * 8) + 1;
|
y = (y * 8) + 1;
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintHyphens(s32 y)
|
static void PrintHyphens(s32 y)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
u8 text[37];
|
u8 text[37];
|
||||||
@ -242,47 +266,8 @@ void PrintHyphens(s32 y)
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, text, 4, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, text, 4, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const u8 gText_WinStreak[];
|
// Battle Tower records.
|
||||||
extern const u8 gText_Record[];
|
static void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
extern const u8 gText_Current[];
|
|
||||||
extern const u8 gText_RoomsCleared[];
|
|
||||||
extern const u8 gText_Prev[];
|
|
||||||
extern const u8 gText_SingleBattleRoomResults[];
|
|
||||||
extern const u8 gText_DoubleBattleRoomResults[];
|
|
||||||
extern const u8 gText_MultiBattleRoomResults[];
|
|
||||||
extern const u8 gText_LinkMultiBattleRoomResults[];
|
|
||||||
extern const u8 gText_Lv502[];
|
|
||||||
extern const u8 gText_OpenLv[];
|
|
||||||
extern const u8 gText_RentalSwap[];
|
|
||||||
extern const u8 gText_ClearStreak[];
|
|
||||||
extern const u8 gText_Total[];
|
|
||||||
extern const u8 gText_Championships[];
|
|
||||||
extern const u8 gText_SingleBattleTourneyResults[];
|
|
||||||
extern const u8 gText_DoubleBattleTourneyResults[];
|
|
||||||
extern const u8 gText_SingleBattleHallResults[];
|
|
||||||
extern const u8 gText_DoubleBattleHallResults[];
|
|
||||||
extern const u8 gText_BattleChoiceResults[];
|
|
||||||
extern const u8 gText_TimesCleared[];
|
|
||||||
extern const u8 gText_KOsInARow[];
|
|
||||||
extern const u8 gText_SetKOTourneyResults[];
|
|
||||||
extern const u8 gText_TimesVar1[];
|
|
||||||
extern const u8 gText_BattleSwapSingleResults[];
|
|
||||||
extern const u8 gText_BattleSwapDoubleResults[];
|
|
||||||
extern const u8 gText_FloorsCleared[];
|
|
||||||
extern const u8 gText_BattleQuestResults[];
|
|
||||||
extern const u8 gText_LinkContestResults[];
|
|
||||||
extern const u8 gText_4th[];
|
|
||||||
extern const u8 gText_3rd[];
|
|
||||||
extern const u8 gText_2nd[];
|
|
||||||
extern const u8 gText_1st[];
|
|
||||||
extern const u8 gText_Cool[];
|
|
||||||
extern const u8 gText_Beauty[];
|
|
||||||
extern const u8 gText_Cute[];
|
|
||||||
extern const u8 gText_Smart[];
|
|
||||||
extern const u8 gText_Tough[];
|
|
||||||
|
|
||||||
// Battle Tower.
|
|
||||||
void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
if (num > 9999)
|
if (num > 9999)
|
||||||
@ -292,13 +277,13 @@ void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
u16 num = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode];
|
u16 num = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode];
|
||||||
TowerPrintStreak(gText_Record, num, x1, x2, y);
|
TowerPrintStreak(gText_Record, num, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
static u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -307,7 +292,7 @@ u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = TowerGetWinStreak(battleMode, lvlMode);
|
u16 winStreak = TowerGetWinStreak(battleMode, lvlMode);
|
||||||
@ -346,7 +331,7 @@ void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y
|
|||||||
TowerPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
TowerPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowTowerResultsWindow(u8 battleMode)
|
static void ShowTowerResultsWindow(u8 battleMode)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -372,8 +357,8 @@ void ShowTowerResultsWindow(u8 battleMode)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Dome.
|
// Battle Dome records.
|
||||||
u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
static u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -382,7 +367,7 @@ u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
static void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||||
@ -390,7 +375,7 @@ void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = DomeGetWinStreak(battleMode, lvlMode);
|
u16 winStreak = DomeGetWinStreak(battleMode, lvlMode);
|
||||||
@ -417,7 +402,7 @@ void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
|||||||
PrintTwoStrings(gText_Prev, gText_ClearStreak, winStreak, x1, x2, y);
|
PrintTwoStrings(gText_Prev, gText_ClearStreak, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowDomeResultsWindow(u8 battleMode)
|
static void ShowDomeResultsWindow(u8 battleMode)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -441,8 +426,8 @@ void ShowDomeResultsWindow(u8 battleMode)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Palace.
|
// Battle Palace records.
|
||||||
void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
static void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
if (num > 9999)
|
if (num > 9999)
|
||||||
@ -452,13 +437,13 @@ void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
u16 num = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode];
|
u16 num = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode];
|
||||||
PalacePrintStreak(gText_Record, num, x1, x2, y);
|
PalacePrintStreak(gText_Record, num, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
static u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -467,7 +452,7 @@ u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = PalaceGetWinStreak(battleMode, lvlMode);
|
u16 winStreak = PalaceGetWinStreak(battleMode, lvlMode);
|
||||||
@ -493,7 +478,7 @@ void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8
|
|||||||
PalacePrintStreak(gText_Prev, winStreak, x1, x2, y);
|
PalacePrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowPalaceResultsWindow(u8 battleMode)
|
static void ShowPalaceResultsWindow(u8 battleMode)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -515,8 +500,8 @@ void ShowPalaceResultsWindow(u8 battleMode)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Pike.
|
// Battle Pike records.
|
||||||
u16 PikeGetWinStreak(u8 lvlMode)
|
static u16 PikeGetWinStreak(u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -525,7 +510,7 @@ u16 PikeGetWinStreak(u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
static void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||||
@ -533,7 +518,7 @@ void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = PikeGetWinStreak(lvlMode);
|
u16 winStreak = PikeGetWinStreak(lvlMode);
|
||||||
@ -549,7 +534,7 @@ void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
|||||||
PrintTwoStrings(gText_Prev, gText_RoomsCleared, winStreak, x1, x2, y);
|
PrintTwoStrings(gText_Prev, gText_RoomsCleared, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowPikeResultsWindow(void)
|
static void ShowPikeResultsWindow(void)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -569,8 +554,8 @@ void ShowPikeResultsWindow(void)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Arena.
|
// Battle Arena records.
|
||||||
void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
static void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
if (num > 9999)
|
if (num > 9999)
|
||||||
@ -580,13 +565,13 @@ void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
u16 num = gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode];
|
u16 num = gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode];
|
||||||
ArenaPrintStreak(gText_Record, num, x1, x2, y);
|
ArenaPrintStreak(gText_Record, num, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 ArenaGetWinStreak(u8 lvlMode)
|
static u16 ArenaGetWinStreak(u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -595,7 +580,7 @@ u16 ArenaGetWinStreak(u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = ArenaGetWinStreak(lvlMode);
|
u16 winStreak = ArenaGetWinStreak(lvlMode);
|
||||||
@ -611,7 +596,7 @@ void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
|||||||
ArenaPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
ArenaPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowArenaResultsWindow(void)
|
static void ShowArenaResultsWindow(void)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -629,8 +614,8 @@ void ShowArenaResultsWindow(void)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Factory.
|
// Battle Factory records.
|
||||||
void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y)
|
static void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
if (num1 > 9999)
|
if (num1 > 9999)
|
||||||
@ -644,14 +629,14 @@ void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3,
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x3, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x3, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
static void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||||
{
|
{
|
||||||
u16 num1 = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode];
|
u16 num1 = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode];
|
||||||
u16 num2 = gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode];
|
u16 num2 = gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode];
|
||||||
FactoryPrintStreak(gText_Record, num1, num2, x1, x2, x3, y);
|
FactoryPrintStreak(gText_Record, num1, num2, x1, x2, x3, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
static u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -660,7 +645,7 @@ u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
static u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
|
u16 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
|
||||||
if (rents > 9999)
|
if (rents > 9999)
|
||||||
@ -669,7 +654,7 @@ u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
|||||||
return rents;
|
return rents;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = FactoryGetWinStreak(battleMode, lvlMode);
|
u16 winStreak = FactoryGetWinStreak(battleMode, lvlMode);
|
||||||
@ -697,7 +682,7 @@ void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8
|
|||||||
FactoryPrintStreak(gText_Prev, winStreak, rents, x1, x2, x3, y);
|
FactoryPrintStreak(gText_Prev, winStreak, rents, x1, x2, x3, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowFactoryResultsWindow(u8 battleMode)
|
static void ShowFactoryResultsWindow(u8 battleMode)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -720,8 +705,8 @@ void ShowFactoryResultsWindow(u8 battleMode)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Battle Pyramid.
|
// Battle Pyramid records.
|
||||||
void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
static void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||||
if (num > 9999)
|
if (num > 9999)
|
||||||
@ -731,13 +716,13 @@ void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
|||||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
u16 num = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode];
|
u16 num = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode];
|
||||||
PyramidPrintStreak(gText_Record, num, x1, x2, y);
|
PyramidPrintStreak(gText_Record, num, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 PyramidGetWinStreak(u8 lvlMode)
|
static u16 PyramidGetWinStreak(u8 lvlMode)
|
||||||
{
|
{
|
||||||
u16 winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
|
u16 winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
|
||||||
if (winStreak > 9999)
|
if (winStreak > 9999)
|
||||||
@ -746,7 +731,7 @@ u16 PyramidGetWinStreak(u8 lvlMode)
|
|||||||
return winStreak;
|
return winStreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||||
{
|
{
|
||||||
bool8 isCurrent;
|
bool8 isCurrent;
|
||||||
u16 winStreak = PyramidGetWinStreak(lvlMode);
|
u16 winStreak = PyramidGetWinStreak(lvlMode);
|
||||||
@ -762,7 +747,7 @@ void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
|||||||
PyramidPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
PyramidPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowPyramidResultsWindow(void)
|
static void ShowPyramidResultsWindow(void)
|
||||||
{
|
{
|
||||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
@ -780,8 +765,8 @@ void ShowPyramidResultsWindow(void)
|
|||||||
CopyWindowToVram(gRecordsWindowId, 3);
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Link contest. Why is it in this file?
|
// Link contest records. Why is it in this file?
|
||||||
void ShowLinkContestResultsWindow(void)
|
static void ShowLinkContestResultsWindow(void)
|
||||||
{
|
{
|
||||||
const u8 *str;
|
const u8 *str;
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
@ -957,8 +942,6 @@ void sub_81A35EC(void)
|
|||||||
gSpecialVar_Result = sub_81A3610();
|
gSpecialVar_Result = sub_81A3610();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const u8 gUnknown_08611550[][4];
|
|
||||||
|
|
||||||
u8 sub_81A3610(void)
|
u8 sub_81A3610(void)
|
||||||
{
|
{
|
||||||
s32 ret = 0;
|
s32 ret = 0;
|
||||||
@ -1151,8 +1134,6 @@ u8 sub_81A3B30(u8 facility)
|
|||||||
+ FlagGet(FLAG_SYS_TOWER_GOLD + facility * 2);
|
+ FlagGet(FLAG_SYS_TOWER_GOLD + facility * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const u8 gUnknown_086118B4[29][7][4];
|
|
||||||
|
|
||||||
void sub_81A3B64(void)
|
void sub_81A3B64(void)
|
||||||
{
|
{
|
||||||
s32 challengeNum = 0;
|
s32 challengeNum = 0;
|
||||||
@ -1235,15 +1216,7 @@ void sub_81A3DA0(void)
|
|||||||
gSpecialVar_Result = FALSE;
|
gSpecialVar_Result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const u8 gText_SpaceAndSpace[];
|
static u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
||||||
extern const u8 gText_CommaSpace[];
|
|
||||||
extern const u8 gText_NewLine[];
|
|
||||||
extern const u8 gText_ScrollTextUp[];
|
|
||||||
extern const u8 gText_Space2[];
|
|
||||||
extern const u8 gText_Are[];
|
|
||||||
extern const u8 gText_Are2[];
|
|
||||||
|
|
||||||
u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
|
||||||
{
|
{
|
||||||
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
||||||
{
|
{
|
||||||
@ -1282,9 +1255,7 @@ u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
|||||||
return arg1;
|
return arg1;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const u16 gUnknown_08611C9A[];
|
static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
|
||||||
|
|
||||||
void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
|
|
||||||
{
|
{
|
||||||
s32 i = 0;
|
s32 i = 0;
|
||||||
|
|
||||||
@ -1494,3 +1465,194 @@ void sub_81A443C(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_81A447C(void)
|
||||||
|
{
|
||||||
|
u8 i, j, k;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
|
||||||
|
if (monId < PARTY_SIZE)
|
||||||
|
{
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
|
{
|
||||||
|
for (k = 0; k < 4; k++)
|
||||||
|
{
|
||||||
|
if (GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + k, NULL)
|
||||||
|
== GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j, NULL))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (k == 4)
|
||||||
|
SetMonMoveSlot(&gPlayerParty[i], MOVE_SKETCH, j);
|
||||||
|
}
|
||||||
|
gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81A457C(void)
|
||||||
|
{
|
||||||
|
sub_81A5030(VarGet(VAR_FRONTIER_FACILITY));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Battle Frontier Ranking Hall records.
|
||||||
|
static void Print1PRecord(s32 position, s32 x, s32 y, struct RankingHall1P *hallRecord, s32 hallFacilityId)
|
||||||
|
{
|
||||||
|
u8 text[32];
|
||||||
|
u16 winStreak;
|
||||||
|
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
hallRecord->name[PLAYER_NAME_LENGTH] = EOS;
|
||||||
|
if (hallRecord->winStreak)
|
||||||
|
{
|
||||||
|
TVShowConvertInternationalString(text, hallRecord->name, hallRecord->language);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
winStreak = hallRecord->winStreak;
|
||||||
|
if (winStreak > 9999)
|
||||||
|
winStreak = 9999;
|
||||||
|
ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||||
|
StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[hallFacilityId]);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[hallFacilityId], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hallRecord)
|
||||||
|
{
|
||||||
|
u8 text[32];
|
||||||
|
u16 winStreak;
|
||||||
|
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
if (hallRecord->winStreak)
|
||||||
|
{
|
||||||
|
hallRecord->name1[PLAYER_NAME_LENGTH] = EOS;
|
||||||
|
hallRecord->name2[PLAYER_NAME_LENGTH] = EOS;
|
||||||
|
TVShowConvertInternationalString(text, hallRecord->name1, hallRecord->language);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position - 1)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
if (IsStringJapanese(hallRecord->name2))
|
||||||
|
TVShowConvertInternationalString(text, hallRecord->name2, LANGUAGE_JAPANESE);
|
||||||
|
else
|
||||||
|
StringCopy(text, hallRecord->name2);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 4) * 8, (8 * (y + 5 * position + 1)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
|
||||||
|
winStreak = hallRecord->winStreak;
|
||||||
|
if (winStreak > 9999)
|
||||||
|
winStreak = 9999;
|
||||||
|
ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||||
|
StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[9]);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[9], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode)
|
||||||
|
{
|
||||||
|
s32 i, j;
|
||||||
|
struct RankingHall1P record1P[4];
|
||||||
|
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
|
||||||
|
GetPlayerHallRecords(playerHallRecords);
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
record1P[i] = gSaveBlock2Ptr->hallRecords1P[hallFacilityId][lvlMode][i];
|
||||||
|
|
||||||
|
record1P[3] = playerHallRecords->onePlayer[hallFacilityId][lvlMode];
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
s32 highestWinStreak = 0;
|
||||||
|
s32 highestId = 0;
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
|
{
|
||||||
|
if (record1P[j].winStreak > highestWinStreak)
|
||||||
|
{
|
||||||
|
highestId = j;
|
||||||
|
highestWinStreak = record1P[j].winStreak;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (record1P[3].winStreak >= highestWinStreak)
|
||||||
|
highestId = 3;
|
||||||
|
|
||||||
|
dst[i] = record1P[highestId];
|
||||||
|
record1P[highestId].winStreak = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(playerHallRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode)
|
||||||
|
{
|
||||||
|
s32 i, j;
|
||||||
|
struct RankingHall2P record2P[4];
|
||||||
|
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
|
||||||
|
GetPlayerHallRecords(playerHallRecords);
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
record2P[i] = gSaveBlock2Ptr->hallRecords2P[lvlMode][i];
|
||||||
|
|
||||||
|
record2P[3] = playerHallRecords->twoPlayers[lvlMode];
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
s32 highestWinStreak = 0;
|
||||||
|
s32 highestId = 0;
|
||||||
|
for (j = 0; j < 3; j++)
|
||||||
|
{
|
||||||
|
if (record2P[j].winStreak > highestWinStreak)
|
||||||
|
{
|
||||||
|
highestId = j;
|
||||||
|
highestWinStreak = record2P[j].winStreak;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (record2P[3].winStreak >= highestWinStreak)
|
||||||
|
highestId = 3;
|
||||||
|
|
||||||
|
dst[i] = record2P[highestId];
|
||||||
|
record2P[highestId].winStreak = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(playerHallRecords);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
s32 x;
|
||||||
|
struct RankingHall1P records1P[3];
|
||||||
|
struct RankingHall2P records2P[3];
|
||||||
|
|
||||||
|
StringCopy(gStringVar1, gUnknown_08611CB0[hallFacilityId][0]);
|
||||||
|
StringExpandPlaceholders(gStringVar4, gUnknown_08611CB0[hallFacilityId][1]);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
|
||||||
|
x = GetStringRightAlignXOffset(1, gUnknown_08611D00[lvlMode], 0xD0);
|
||||||
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gUnknown_08611D00[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
|
||||||
|
if (hallFacilityId == HALL_FACILITIES_COUNT)
|
||||||
|
{
|
||||||
|
gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS;
|
||||||
|
gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS;
|
||||||
|
Fill2PRecords(records2P, lvlMode);
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
Print2PRecord(i, 1, 4, &records2P[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Fill1PRecords(records1P, hallFacilityId, lvlMode);
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
Print1PRecord(i, 1, 4, &records1P[i], hallFacilityId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowRankingHallRecordsWindow(void)
|
||||||
|
{
|
||||||
|
gRecordsWindowId = AddWindow(&gUnknown_08611C84);
|
||||||
|
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||||
|
FillWindowPixelBuffer(gRecordsWindowId, 0x11);
|
||||||
|
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50);
|
||||||
|
PutWindowTilemap(gRecordsWindowId);
|
||||||
|
CopyWindowToVram(gRecordsWindowId, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollRankingHallRecordsWindow(void)
|
||||||
|
{
|
||||||
|
FillWindowPixelBuffer(gRecordsWindowId, 0x11);
|
||||||
|
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN);
|
||||||
|
CopyWindowToVram(gRecordsWindowId, 2);
|
||||||
|
}
|
@ -33,31 +33,17 @@
|
|||||||
#include "new_game.h"
|
#include "new_game.h"
|
||||||
#include "daycare.h"
|
#include "daycare.h"
|
||||||
#include "international_string_util.h"
|
#include "international_string_util.h"
|
||||||
|
#include "constants/battle_frontier.h"
|
||||||
|
|
||||||
extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
|
extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
|
||||||
extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
|
extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
|
||||||
|
|
||||||
// Static type declarations
|
// Static type declarations
|
||||||
|
|
||||||
struct UnknownRecMixingStruct
|
struct RecordMixingHallRecords
|
||||||
{
|
{
|
||||||
u32 field_0;
|
struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][6];
|
||||||
u16 field_4;
|
struct RankingHall2P hallRecords2P[2][6];
|
||||||
u8 field_6[9];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct UnknownRecMixingStruct2
|
|
||||||
{
|
|
||||||
u32 field_0;
|
|
||||||
u16 field_4;
|
|
||||||
u16 field_6;
|
|
||||||
u16 field_8;
|
|
||||||
u8 field_A[16];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct UnknownRecMixingStruct3
|
|
||||||
{
|
|
||||||
u8 field_0[0x810];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PlayerRecordsRS
|
struct PlayerRecordsRS
|
||||||
@ -85,7 +71,7 @@ struct PlayerRecordsEmerald
|
|||||||
/* 0x1210 */ u16 giftItem;
|
/* 0x1210 */ u16 giftItem;
|
||||||
/* 0x1214 */ LilycoveLady lilycoveLady;
|
/* 0x1214 */ LilycoveLady lilycoveLady;
|
||||||
/* 0x1254 */ struct Apprentice apprentice[2];
|
/* 0x1254 */ struct Apprentice apprentice[2];
|
||||||
/* 0x12dc */ struct UnkRecordMixingStruct2 unk_12dc;
|
/* 0x12dc */ struct PlayerHallRecords hallRecords;
|
||||||
/* 0x1434 */ u8 field_1434[0x10];
|
/* 0x1434 */ u8 field_1434[0x10];
|
||||||
}; // 0x1444
|
}; // 0x1444
|
||||||
|
|
||||||
@ -106,7 +92,7 @@ static IWRAM_DATA struct EasyChatPair *sEasyChatPairsSave;
|
|||||||
static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148;
|
static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148;
|
||||||
static IWRAM_DATA void *sBattleTowerSave;
|
static IWRAM_DATA void *sBattleTowerSave;
|
||||||
static IWRAM_DATA LilycoveLady *sLilycoveLadySave;
|
static IWRAM_DATA LilycoveLady *sLilycoveLadySave;
|
||||||
static IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
|
static IWRAM_DATA void *sApprenticesSave;
|
||||||
static IWRAM_DATA void *sBattleTowerSave_Duplicate;
|
static IWRAM_DATA void *sBattleTowerSave_Duplicate;
|
||||||
static IWRAM_DATA u32 sRecordStructSize;
|
static IWRAM_DATA u32 sRecordStructSize;
|
||||||
static IWRAM_DATA u8 gUnknown_03001160;
|
static IWRAM_DATA u8 gUnknown_03001160;
|
||||||
@ -137,7 +123,7 @@ static void ReceiveGiftItem(u16 *item, u8 which);
|
|||||||
static void sub_80E7FF8(u8 taskId);
|
static void sub_80E7FF8(u8 taskId);
|
||||||
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
|
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
|
||||||
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
|
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
|
||||||
static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2);
|
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
|
||||||
static void sub_80E89F8(struct RecordMixingDayCareMail *dst);
|
static void sub_80E89F8(struct RecordMixingDayCareMail *dst);
|
||||||
static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src);
|
static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src);
|
||||||
static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
|
static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
|
||||||
@ -200,7 +186,7 @@ static void SetSrcLookupPointers(void)
|
|||||||
gUnknown_03001148 = &gUnknown_02039F9C;
|
gUnknown_03001148 = &gUnknown_02039F9C;
|
||||||
sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
|
sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
|
||||||
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
|
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
|
||||||
gUnknown_03001154 = gSaveBlock2Ptr->apprentices;
|
sApprenticesSave = gSaveBlock2Ptr->apprentices;
|
||||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer;
|
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,8 +252,8 @@ static void PrepareExchangePacket(void)
|
|||||||
if (GetMultiplayerId() == 0)
|
if (GetMultiplayerId() == 0)
|
||||||
sSentRecord->emerald.giftItem = GetRecordMixingGift();
|
sSentRecord->emerald.giftItem = GetRecordMixingGift();
|
||||||
|
|
||||||
sub_80E8110(sSentRecord->emerald.apprentice, gUnknown_03001154);
|
sub_80E8110(sSentRecord->emerald.apprentice, sApprenticesSave);
|
||||||
sub_80E8260(&sSentRecord->emerald.unk_12dc);
|
GetPlayerHallRecords(&sSentRecord->emerald.hallRecords);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +286,7 @@ static void ReceiveExchangePacket(u32 which)
|
|||||||
ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
|
ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
|
||||||
ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
|
ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
|
||||||
ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
||||||
sub_80E89AC(&sReceivedRecords->emerald.unk_12dc, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1608,42 +1594,42 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
|
void GetPlayerHallRecords(struct PlayerHallRecords *dst)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
|
|
||||||
for (i = 0; i < 9; i++)
|
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
|
||||||
{
|
{
|
||||||
for (j = 0; j < 2; j++)
|
for (j = 0; j < 2; j++)
|
||||||
{
|
{
|
||||||
CopyUnalignedWord(dst->field_0[i][j].playerId, gSaveBlock2Ptr->playerTrainerId);
|
CopyUnalignedWord(dst->onePlayer[i][j].id, gSaveBlock2Ptr->playerTrainerId);
|
||||||
dst->field_0[i][j].language = GAME_LANGUAGE;
|
dst->onePlayer[i][j].language = GAME_LANGUAGE;
|
||||||
StringCopy(dst->field_0[i][j].playerName, gSaveBlock2Ptr->playerName);
|
StringCopy(dst->onePlayer[i][j].name, gSaveBlock2Ptr->playerName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
for (j = 0; j < 2; j++)
|
||||||
{
|
{
|
||||||
dst->field_120[j].language = GAME_LANGUAGE;
|
dst->twoPlayers[j].language = GAME_LANGUAGE;
|
||||||
CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId);
|
CopyUnalignedWord(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
|
||||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
CopyUnalignedWord(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||||
StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName);
|
StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
|
||||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
|
dst->onePlayer[0][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
|
dst->onePlayer[1][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i];
|
||||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
|
dst->onePlayer[2][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i];
|
||||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i];
|
dst->onePlayer[3][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i];
|
dst->onePlayer[4][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
|
dst->onePlayer[5][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
|
||||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
|
dst->onePlayer[6][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
|
dst->onePlayer[7][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
|
||||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i];
|
dst->onePlayer[8][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
|
||||||
|
|
||||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i];
|
dst->twoPlayers[i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_LINK_MULTIS][i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1702,7 +1688,7 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2
|
|||||||
}
|
}
|
||||||
|
|
||||||
NAKED
|
NAKED
|
||||||
static void sub_80E8578(struct UnknownRecMixingStruct3 *arg0, struct UnkRecordMixingStruct2 *arg1, size_t arg2, u32 arg3, u32 arg4)
|
static void sub_80E8578(struct RecordMixingHallRecords *arg0, struct PlayerHallRecords *arg1, size_t arg2, u32 arg3, u32 arg4)
|
||||||
{
|
{
|
||||||
asm_unified(" push {r4-r7,lr}\n\
|
asm_unified(" push {r4-r7,lr}\n\
|
||||||
mov r7, r10\n\
|
mov r7, r10\n\
|
||||||
@ -2106,133 +2092,75 @@ _080E8864:\n\
|
|||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80E8880(struct UnknownRecMixingStruct *arg0, struct UnknownRecMixingStruct *arg1)
|
static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
s32 r2 = 0;
|
s32 highestWinStreak = 0;
|
||||||
s32 r4 = -1;
|
s32 highestId = -1;
|
||||||
for (j = 0; j < 6; j++)
|
for (j = 0; j < 6; j++)
|
||||||
{
|
{
|
||||||
if (arg1[j].field_4 > r2)
|
if (arg1[j].winStreak > highestWinStreak)
|
||||||
{
|
{
|
||||||
r4 = j;
|
highestId = j;
|
||||||
r2 = arg1[j].field_4;
|
highestWinStreak = arg1[j].winStreak;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r4 >= 0)
|
if (highestId >= 0)
|
||||||
{
|
{
|
||||||
arg0[i] = arg1[r4];
|
arg0[i] = arg1[highestId];
|
||||||
arg1[r4].field_4 = 0;
|
arg1[highestId].winStreak = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80E88CC(struct UnknownRecMixingStruct2 *arg0, struct UnknownRecMixingStruct2 *arg1)
|
static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
s32 r2 = 0;
|
s32 highestWinStreak = 0;
|
||||||
s32 r4 = -1;
|
s32 highestId = -1;
|
||||||
for (j = 0; j < 6; j++)
|
for (j = 0; j < 6; j++)
|
||||||
{
|
{
|
||||||
if (arg1[j].field_8 > r2)
|
if (arg1[j].winStreak > highestWinStreak)
|
||||||
{
|
{
|
||||||
r4 = j;
|
highestId = j;
|
||||||
r2 = arg1[j].field_8;
|
highestWinStreak = arg1[j].winStreak;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r4 >= 0)
|
if (highestId >= 0)
|
||||||
{
|
{
|
||||||
arg0[i] = arg1[r4];
|
arg0[i] = arg1[highestId];
|
||||||
arg1[r4].field_8 = 0;
|
arg1[highestId].winStreak = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NAKED
|
static void sub_80E8924(struct RecordMixingHallRecords *arg0)
|
||||||
static void sub_80E8924(struct UnknownRecMixingStruct3 *arg0)
|
|
||||||
{
|
{
|
||||||
asm_unified("push {r4-r7,lr}\n\
|
s32 i, j;
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
|
||||||
mov r5, r8\n\
|
{
|
||||||
push {r5-r7}\n\
|
for (j = 0; j < 2; j++)
|
||||||
mov r9, r0\n\
|
sub_80E8880(gSaveBlock2Ptr->hallRecords1P[i][j], arg0->hallRecords1P[i][j]);
|
||||||
movs r0, 0\n\
|
}
|
||||||
ldr r1, =gSaveBlock2Ptr\n\
|
for (j = 0; j < 2; j++)
|
||||||
mov r10, r1\n\
|
sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]);
|
||||||
_080E8936:\n\
|
|
||||||
lsls r1, r0, 1\n\
|
|
||||||
adds r2, r0, 0x1\n\
|
|
||||||
mov r8, r2\n\
|
|
||||||
adds r1, r0\n\
|
|
||||||
lsls r0, r1, 5\n\
|
|
||||||
movs r2, 0x87\n\
|
|
||||||
lsls r2, 2\n\
|
|
||||||
adds r7, r0, r2\n\
|
|
||||||
lsls r1, 6\n\
|
|
||||||
mov r0, r9\n\
|
|
||||||
adds r4, r0, r1\n\
|
|
||||||
movs r6, 0\n\
|
|
||||||
movs r5, 0x1\n\
|
|
||||||
_080E8950:\n\
|
|
||||||
mov r1, r10\n\
|
|
||||||
ldr r0, [r1]\n\
|
|
||||||
adds r0, r7\n\
|
|
||||||
adds r0, r6\n\
|
|
||||||
adds r1, r4, 0\n\
|
|
||||||
bl sub_80E8880\n\
|
|
||||||
adds r4, 0x60\n\
|
|
||||||
adds r6, 0x30\n\
|
|
||||||
subs r5, 0x1\n\
|
|
||||||
cmp r5, 0\n\
|
|
||||||
bge _080E8950\n\
|
|
||||||
mov r0, r8\n\
|
|
||||||
cmp r0, 0x8\n\
|
|
||||||
ble _080E8936\n\
|
|
||||||
movs r5, 0\n\
|
|
||||||
ldr r4, =gSaveBlock2Ptr\n\
|
|
||||||
_080E8972:\n\
|
|
||||||
movs r0, 0x54\n\
|
|
||||||
adds r1, r5, 0\n\
|
|
||||||
muls r1, r0\n\
|
|
||||||
ldr r2, =0x0000057c\n\
|
|
||||||
adds r1, r2\n\
|
|
||||||
ldr r0, [r4]\n\
|
|
||||||
adds r0, r1\n\
|
|
||||||
movs r1, 0xA8\n\
|
|
||||||
muls r1, r5\n\
|
|
||||||
movs r2, 0xD8\n\
|
|
||||||
lsls r2, 3\n\
|
|
||||||
adds r1, r2\n\
|
|
||||||
add r1, r9\n\
|
|
||||||
bl sub_80E88CC\n\
|
|
||||||
adds r5, 0x1\n\
|
|
||||||
cmp r5, 0x1\n\
|
|
||||||
ble _080E8972\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2)
|
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2)
|
||||||
{
|
{
|
||||||
u8 linkPlayerCount = GetLinkPlayerCount();
|
u8 linkPlayerCount = GetLinkPlayerCount();
|
||||||
struct UnknownRecMixingStruct3 *largeStructPtr = AllocZeroed(sizeof(struct UnknownRecMixingStruct3));
|
struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords));
|
||||||
|
|
||||||
sub_80E8578(largeStructPtr, arg0, arg1, arg2, linkPlayerCount);
|
sub_80E8578(largeStructPtr, hallRecords, arg1, arg2, linkPlayerCount);
|
||||||
sub_80E8924(largeStructPtr);
|
sub_80E8924(largeStructPtr);
|
||||||
|
|
||||||
Free(largeStructPtr);
|
Free(largeStructPtr);
|
||||||
|
@ -1569,9 +1569,7 @@ asm(".align 2");
|
|||||||
const u8 gUnknown_085EE410[] = _("Floors cleared: {STR_VAR_2}");
|
const u8 gUnknown_085EE410[] = _("Floors cleared: {STR_VAR_2}");
|
||||||
|
|
||||||
asm(".align 2");
|
asm(".align 2");
|
||||||
const u8 gText_1Dot[] = _("1.");
|
const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")};
|
||||||
const u8 gUnknown_085EE427[] = _("2.");
|
|
||||||
const u8 gUnknown_085EE42A[] = _("3.");
|
|
||||||
const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER.");
|
const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER.");
|
||||||
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
|
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
|
||||||
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");
|
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");
|
||||||
|
Loading…
Reference in New Issue
Block a user