Merge branch 'master' into multiplayer-stuff

This commit is contained in:
Phlosioneer 2019-02-21 21:21:10 -05:00
commit eca329f9c5
48 changed files with 5297 additions and 8331 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -5,823 +5,6 @@
.text
thumb_func_start sub_810DE70
sub_810DE70: @ 810DE70
push {r4,lr}
adds r4, r0, 0
movs r1, 0
bl InitSpritePosToAnimTarget
ldrh r0, [r4, 0x22]
adds r0, 0x14
strh r0, [r4, 0x22]
movs r0, 0xBF
strh r0, [r4, 0x30]
ldr r1, =sub_810DE98
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810DE70
thumb_func_start sub_810DE98
sub_810DE98: @ 810DE98
push {r4,lr}
adds r4, r0, 0
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x20
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x30
ldrsh r0, [r4, r1]
movs r1, 0x8
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x30]
adds r0, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
lsls r0, 16
asrs r0, 16
cmp r0, 0x47
bne _0810DED2
adds r0, r4, 0
bl DestroyAnimSprite
_0810DED2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_810DE98
thumb_func_start sub_810DED8
sub_810DED8: @ 810DED8
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r1, =gTasks
lsls r4, r0, 2
adds r4, r0
lsls r4, 3
adds r4, r1
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x2]
strh r0, [r4, 0x8]
ldrh r0, [r1]
strh r0, [r4, 0xA]
ldr r0, =0x00002719
bl IndexOfSpritePaletteTag
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xC]
ldr r0, =sub_810DF18
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810DED8
thumb_func_start sub_810DF18
sub_810DF18: @ 810DF18
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r2, =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r3, r0, r2
ldrh r0, [r3, 0x1C]
adds r1, r0, 0x1
strh r1, [r3, 0x1C]
lsls r0, 16
asrs r0, 16
movs r4, 0xA
ldrsh r1, [r3, r4]
adds r7, r2, 0
cmp r0, r1
bne _0810DF76
movs r0, 0
strh r0, [r3, 0x1C]
ldrb r0, [r3, 0xC]
ldr r2, =gPlttBufferFaded
lsls r0, 4
movs r3, 0x84
lsls r3, 1
adds r1, r0, r3
lsls r1, 1
adds r1, r2
ldrh r6, [r1]
movs r4, 0x7
mov r12, r0
ldr r0, =0x00000107
add r0, r12
lsls r0, 1
adds r3, r0, r2
_0810DF5E:
ldrh r0, [r3]
strh r0, [r1]
subs r3, 0x2
subs r1, 0x2
subs r4, 0x1
cmp r4, 0
bgt _0810DF5E
ldr r0, =0x00000101
add r0, r12
lsls r0, 1
adds r0, r2
strh r6, [r0]
_0810DF76:
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r7
ldrh r1, [r0, 0x8]
subs r1, 0x1
strh r1, [r0, 0x8]
lsls r1, 16
cmp r1, 0
bne _0810DF90
adds r0, r5, 0
bl DestroyAnimVisualTask
_0810DF90:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_810DF18
thumb_func_start sub_810DFA8
sub_810DFA8: @ 810DFA8
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimAttacker
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DFC8
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
_0810DFC8:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
adds r0, r1
strh r0, [r6, 0x32]
ldrh r0, [r6, 0x22]
strh r0, [r6, 0x34]
ldrb r0, [r5]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
adds r0, r4
strh r0, [r6, 0x36]
adds r0, r6, 0
bl InitAnimLinearTranslation
ldr r0, =RunStoredCallbackWhenAffineAnimEnds
str r0, [r6, 0x1C]
ldr r1, =sub_810E028
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_810DFA8
thumb_func_start sub_810E028
sub_810E028: @ 810E028
push {r4,lr}
adds r4, r0, 0
bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _0810E03C
adds r0, r4, 0
bl DestroyAnimSprite
_0810E03C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_810E028
thumb_func_start sub_810E044
sub_810E044: @ 810E044
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810E070
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
negs r0, r0
strh r0, [r1]
ldrh r0, [r1, 0x2]
negs r0, r0
strh r0, [r1, 0x2]
ldrh r0, [r1, 0x4]
negs r0, r0
strh r0, [r1, 0x4]
ldrh r0, [r1, 0x6]
negs r0, r0
strh r0, [r1, 0x6]
_0810E070:
bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810E088
ldr r0, =gBattleAnimArgs
ldrh r1, [r0, 0x2]
negs r1, r1
strh r1, [r0, 0x2]
ldrh r1, [r0, 0x6]
negs r1, r1
strh r1, [r0, 0x6]
_0810E088:
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r2, =gBattleAnimArgs
ldrh r1, [r2]
ldrh r3, [r5, 0x20]
adds r1, r3
strh r1, [r5, 0x20]
lsrs r0, 24
ldrh r1, [r2, 0x2]
adds r0, r1
strh r0, [r5, 0x22]
ldrh r0, [r2, 0x8]
strh r0, [r5, 0x2E]
movs r3, 0xC
ldrsh r0, [r2, r3]
cmp r0, 0
bne _0810E0EC
ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
b _0810E0FE
.pool
_0810E0EC:
ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
bl SetAverageBattlerPositions
_0810E0FE:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x4]
ldrh r1, [r5, 0x32]
adds r0, r1
strh r0, [r5, 0x32]
ldrh r0, [r4, 0x6]
ldrh r3, [r5, 0x36]
adds r0, r3
strh r0, [r5, 0x36]
ldr r0, =StartAnimLinearTranslation
str r0, [r5, 0x1C]
ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrb r1, [r4, 0xA]
adds r0, r5, 0
bl SeekSpriteAnim
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E044
thumb_func_start sub_810E13C
sub_810E13C: @ 810E13C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl InitSpritePosToAnimAttacker
ldr r1, =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x30]
ldr r0, =sub_810E184
str r0, [r4, 0x1C]
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r0, [r1]
movs r2, 0x4
orrs r0, r2
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E13C
thumb_func_start sub_810E184
sub_810E184: @ 810E184
push {lr}
adds r2, r0, 0
ldrh r1, [r2, 0x2E]
movs r3, 0x2E
ldrsh r0, [r2, r3]
cmp r0, 0
ble _0810E198
subs r0, r1, 0x1
strh r0, [r2, 0x2E]
b _0810E1AA
_0810E198:
ldrh r0, [r2, 0x30]
ldrh r1, [r2, 0x32]
adds r0, r1
strh r0, [r2, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r2, 0x26]
subs r1, r0
strh r1, [r2, 0x26]
_0810E1AA:
movs r3, 0x22
ldrsh r0, [r2, r3]
movs r3, 0x26
ldrsh r1, [r2, r3]
adds r0, r1
movs r1, 0x20
negs r1, r1
cmp r0, r1
bge _0810E1C2
adds r0, r2, 0
bl DestroyAnimSprite
_0810E1C2:
pop {r0}
bx r0
thumb_func_end sub_810E184
thumb_func_start sub_810E1C8
sub_810E1C8: @ 810E1C8
push {r4,r5,lr}
adds r5, r0, 0
ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810E1F8
movs r0, 0x88
lsls r0, 1
strh r0, [r5, 0x20]
ldr r0, =0x0000ffe0
strh r0, [r5, 0x22]
adds r0, r5, 0
movs r1, 0x1
bl StartSpriteAffineAnim
b _0810E1FE
.pool
_0810E1F8:
ldr r0, =0x0000ffe0
strh r0, [r5, 0x20]
strh r0, [r5, 0x22]
_0810E1FE:
ldr r0, =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x22]
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
bl InitAnimLinearTranslation
ldr r0, =sub_810E24C
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E1C8
thumb_func_start sub_810E24C
sub_810E24C: @ 810E24C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl AnimTranslateLinear
ldrh r1, [r4, 0x34]
lsrs r0, r1, 8
cmp r0, 0xC8
bls _0810E274
ldrh r0, [r4, 0x24]
ldrh r2, [r4, 0x20]
adds r0, r2
strh r0, [r4, 0x20]
movs r0, 0
strh r0, [r4, 0x24]
movs r0, 0xFF
ands r0, r1
strh r0, [r4, 0x34]
_0810E274:
movs r1, 0x20
ldrsh r0, [r4, r1]
movs r2, 0x24
ldrsh r1, [r4, r2]
adds r0, r1
adds r0, 0x20
movs r1, 0x98
lsls r1, 1
cmp r0, r1
bhi _0810E296
movs r1, 0x22
ldrsh r0, [r4, r1]
movs r2, 0x26
ldrsh r1, [r4, r2]
adds r0, r1
cmp r0, 0xA0
ble _0810E2BC
_0810E296:
movs r0, 0
bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x5
negs r0, r0
ands r0, r2
strb r0, [r1]
adds r0, r4, 0
bl DestroyAnimSprite
_0810E2BC:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E24C
thumb_func_start sub_810E2C8
sub_810E2C8: @ 810E2C8
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x2E]
subs r1, r0, 0x1
strh r1, [r4, 0x2E]
lsls r0, 16
cmp r0, 0
bgt _0810E308
ldrb r0, [r4, 0x1]
lsls r0, 30
lsrs r0, 30
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0810E2FA
ldrb r0, [r4, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
ldrb r1, [r4, 0x1]
movs r0, 0x4
negs r0, r0
ands r0, r1
strb r0, [r4, 0x1]
_0810E2FA:
adds r0, r4, 0
bl DestroySprite
ldr r1, =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
_0810E308:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E2C8
thumb_func_start sub_810E314
sub_810E314: @ 810E314
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
adds r5, r7, 0
adds r5, 0x2E
ldr r0, =gBattleAnimArgs
ldrh r1, [r0, 0xE]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _0810E33C
ldr r0, =gBattleAnimAttacker
b _0810E33E
.pool
_0810E33C:
ldr r0, =gBattleAnimTarget
_0810E33E:
ldrb r6, [r0]
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810E354
ldr r1, =gBattleAnimArgs
ldrh r0, [r1]
negs r0, r0
strh r0, [r1]
_0810E354:
adds r0, r6, 0
movs r1, 0
bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
ldrh r1, [r4]
adds r0, r1
strh r0, [r7, 0x20]
adds r0, r6, 0
movs r1, 0x1
bl GetBattlerSpriteCoord
lsls r0, 24
ldrh r1, [r4, 0x2]
lsrs r0, 24
adds r1, r0, r1
strh r1, [r7, 0x22]
lsls r1, 8
strh r1, [r5, 0x8]
ldrh r1, [r4, 0xC]
adds r0, r1
lsls r0, 1
ldrh r2, [r5, 0xE]
movs r1, 0x1
ands r1, r2
orrs r1, r0
strh r1, [r5, 0xE]
ldrb r0, [r5]
movs r2, 0x4
mov r8, r2
mov r1, r8
orrs r0, r1
strb r0, [r5]
ldrh r0, [r4, 0x4]
ldrb r1, [r4, 0x4]
strh r1, [r5, 0x2]
lsls r0, 16
lsrs r0, 24
strh r0, [r5, 0xA]
ldrh r0, [r4, 0x6]
strh r0, [r5, 0x4]
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x6]
ldrh r0, [r4, 0xA]
strh r0, [r5, 0xC]
subs r1, 0x40
lsls r1, 16
lsrs r1, 16
cmp r1, 0x7F
bhi _0810E44A
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E3F0
adds r0, r6, 0
bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
movs r1, 0x3
ands r0, r1
lsls r0, 2
ldrb r2, [r7, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x5]
b _0810E408
.pool
_0810E3F0:
adds r0, r6, 0
bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r7, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r7, 0x5]
_0810E408:
ldrb r1, [r5, 0xE]
movs r4, 0x2
negs r4, r4
adds r0, r4, 0
ands r0, r1
strb r0, [r5, 0xE]
movs r2, 0x4
ldrsh r0, [r5, r2]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
bne _0810E4AA
adds r3, r7, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r0, r2, 31
lsrs r0, 31
movs r1, 0x1
eors r1, r0
adds r0, r4, 0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r7, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
movs r1, 0x4
orrs r0, r1
b _0810E4A2
_0810E44A:
adds r0, r6, 0
bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
ldrb r2, [r7, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r7, 0x5]
ldrb r0, [r5, 0xE]
movs r4, 0x1
orrs r0, r4
strb r0, [r5, 0xE]
movs r1, 0x4
ldrsh r0, [r5, r1]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _0810E4AA
adds r3, r7, 0
adds r3, 0x3F
ldrb r2, [r3]
lsls r1, r2, 31
lsrs r1, 31
movs r0, 0x1
eors r1, r0
ands r1, r4
movs r0, 0x2
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
lsls r0, 31
lsrs r0, 31
adds r1, r7, 0
adds r1, 0x2A
strb r0, [r1]
ldrb r0, [r3]
mov r2, r8
orrs r0, r2
_0810E4A2:
movs r1, 0x11
negs r1, r1
ands r0, r1
strb r0, [r3]
_0810E4AA:
ldrh r1, [r5, 0x2]
lsrs r1, 6
lsls r1, 4
ldrb r2, [r5]
movs r0, 0xF
ands r0, r2
orrs r0, r1
strb r0, [r5]
ldr r3, =gSineTable
ldrh r0, [r5, 0x2]
lsls r0, 1
adds r0, r3
movs r2, 0
ldrsh r1, [r0, r2]
ldrb r0, [r5, 0xC]
muls r0, r1
asrs r0, 8
strh r0, [r7, 0x24]
ldrb r2, [r7, 0x3]
lsls r2, 26
lsrs r2, 27
movs r1, 0x24
ldrsh r0, [r7, r1]
negs r0, r0
asrs r0, 1
ldrb r5, [r5, 0xA]
adds r0, r5
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r3
ldrh r4, [r1]
ldr r1, =gOamMatrices
lsls r2, 3
adds r2, r1
adds r0, 0x40
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
strh r0, [r2, 0x6]
strh r0, [r2]
strh r4, [r2, 0x2]
lsls r0, r4, 16
asrs r0, 16
negs r0, r0
strh r0, [r2, 0x4]
ldr r0, =sub_810E520
str r0, [r7, 0x1C]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_810E314
thumb_func_start sub_810E520
sub_810E520: @ 810E520
push {r4-r7,lr}

File diff suppressed because it is too large Load Diff

View File

@ -8315,6 +8315,11 @@ _0801AFC2:
.pool
thumb_func_end sub_801AC54
@void sub_801AFD8() {
@ CpuFill32(0, &gSaveBlock1Ptr->field_322C, 219);
@ sub_801B180();
@ sub_811F8BC();
@}
thumb_func_start sub_801AFD8
sub_801AFD8: @ 801AFD8
push {lr}
@ -8367,25 +8372,25 @@ sav1_get_mevent_buffer_2: @ 801B034
.pool
thumb_func_end sav1_get_mevent_buffer_2
thumb_func_start sub_801B044
sub_801B044: @ 801B044
thumb_func_start GetSaveBlock1Field356C
GetSaveBlock1Field356C: @ 801B044
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x0000356c
adds r0, r1
bx lr
.pool
thumb_func_end sub_801B044
thumb_func_end GetSaveBlock1Field356C
thumb_func_start sub_801B058
sub_801B058: @ 801B058
thumb_func_start GetSaveBlock1Field3564
GetSaveBlock1Field3564: @ 801B058
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003564
adds r0, r1
bx lr
.pool
thumb_func_end sub_801B058
thumb_func_end GetSaveBlock1Field3564
thumb_func_start sub_801B06C
sub_801B06C: @ 801B06C
@ -8531,7 +8536,7 @@ sub_801B180: @ 801B180
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_801B044
bl GetSaveBlock1Field356C
adds r1, r0, 0
ldr r2, =0x05000001
mov r0, sp
@ -13795,7 +13800,7 @@ _0801DB60:
sub_801DB68: @ 801DB68
push {r4,r5,lr}
adds r4, r0, 0
bl sub_801B044
bl GetSaveBlock1Field356C
adds r5, r0, 0
movs r0, 0x3
adds r1, r4, 0
@ -13841,7 +13846,7 @@ _0801DBB8:
thumb_func_start sub_801DBC0
sub_801DBC0: @ 801DBC0
push {lr}
bl sub_801B044
bl GetSaveBlock1Field356C
movs r1, 0
strb r1, [r0]
strb r1, [r0, 0x1]
@ -13858,7 +13863,7 @@ sub_801DBDC: @ 801DBDC
ldr r0, =0x0000402e
bl GetVarPointer
adds r4, r0, 0
bl sub_801B044
bl GetSaveBlock1Field356C
adds r2, r0, 0
ldr r0, [r2]
lsls r0, 24
@ -13889,7 +13894,7 @@ _0801DC10:
sub_801DC20: @ 801DC20
push {r4-r6,lr}
ldr r6, =gSpecialVar_Result
bl sub_801B044
bl GetSaveBlock1Field356C
adds r4, r0, 0
bl IsMysteryEventEnabled
cmp r0, 0
@ -27181,7 +27186,7 @@ sub_8024700: @ 8024700
adds r0, r5, 0
bl sub_8024668
adds r1, r0, r4
ldr r2, =0x0001869f
ldr r2, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET
cmp r1, r2
bhi _08024730
adds r0, r5, 0

View File

@ -1,2 +1,2 @@
gUnknown_030060B0
gUnusedPokedexU8
gUnknown_030060B4

View File

@ -17,7 +17,7 @@ gUnknown_08597530:: @ 8597530
.4byte 0x0000001b
.4byte sub_811A938
gUnknown_08597550:: @ 8597550
gEasyChatScreenTemplates:: @ 8597550
.byte 0x00, 0x02, 0x02, 0x00
.align 2
@ -208,13 +208,20 @@ gUnknown_08597550:: @ 8597550
.4byte gText_IsAsShownOkay
gUnknown_08597748:: @ 8597748
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00
.byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00
.byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13
.byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
gUnknown_08597764:: @ 8597764
.2byte 0x0209, 0x140b, 0x1030, 0x102a
gUnknown_0859776C:: @ 859776C
.2byte 0x1240, 0x0628, 0x061f, 0x2204, 0x1422, 0x0197, 0x0415, 0x0198, 0x2207, 0x0449
.2byte 0x1240, 0x0628
.2byte 0x061f, 0x2204
.2byte 0x1422, 0x0197
.2byte 0x0415, 0x0198
.2byte 0x2207, 0x0449
.align 2
gUnknown_08597780:: @ 8597780

View File

@ -940,7 +940,7 @@ EventScript_27149D:: @ 827149D
setberrytree 82, 36, 5
return
EventScript_2715DE:: @ 82715DE
EventScript_ResetAllMapFlags:: @ 82715DE
setflag FLAG_LINK_CONTEST_POKE_BALL
setflag FLAG_HIDE_ROUTE_111_VICTORIA_WINSTRATE
setflag FLAG_HIDE_ROUTE_111_VIVI_WINSTRATE

View File

@ -65,7 +65,7 @@ gFieldEffectScriptPointers:: @ 82DB9D4
.4byte gFieldEffectScript_Unknown57
.4byte gFieldEffectScript_Unknown58
.4byte gFieldEffectScript_FieldMoveShowMonInit
.4byte gFieldEffectScript_Unknown60
.4byte gFieldEffectScript_UsePuzzleEffect
.4byte gFieldEffectScript_Unknown61
.4byte gFieldEffectScript_Unknown62
.4byte gFieldEffectScript_Unknown63
@ -315,7 +315,7 @@ gFieldEffectScript_FieldMoveShowMonInit:: @ 82DBCCC
field_eff_callnative FldEff_FieldMoveShowMonInit
field_eff_end
gFieldEffectScript_Unknown60:: @ 82DBCD2
gFieldEffectScript_UsePuzzleEffect:: @ 82DBCD2
field_eff_callnative FldEff_UsePuzzleEffect
field_eff_end

View File

@ -25,7 +25,7 @@ AncientTomb_EventScript_238FEE:: @ 8238FEE
return
AncientTomb_MapScript1_238FF2: @ 8238FF2
call_if_unset FLAG_SYS_BRAILLE_FLY, AncientTomb_EventScript_238FFC
call_if_unset FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED, AncientTomb_EventScript_238FFC
end
AncientTomb_EventScript_238FFC:: @ 8238FFC
@ -39,7 +39,7 @@ AncientTomb_EventScript_238FFC:: @ 8238FFC
AncientTomb_EventScript_239033:: @ 8239033
lockall
goto_if_set FLAG_SYS_BRAILLE_FLY, AncientTomb_EventScript_239046
goto_if_set FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED, AncientTomb_EventScript_239046
braillemessage AncientTomb_Braille_2A6D06
waitbuttonpress
hidebox2

View File

@ -16,7 +16,7 @@ DesertRuins_EventScript_22D975:: @ 822D975
return
DesertRuins_MapScript1_22D989: @ 822D989
call_if_unset FLAG_SYS_BRAILLE_STRENGTH, DesertRuins_EventScript_22D993
call_if_unset FLAG_SYS_REGIROCK_PUZZLE_COMPLETED, DesertRuins_EventScript_22D993
end
DesertRuins_EventScript_22D993:: @ 822D993
@ -39,7 +39,7 @@ DesertRuins_EventScript_22D9D7:: @ 822D9D7
DesertRuins_EventScript_22D9DB:: @ 822D9DB
lockall
goto_if_set FLAG_SYS_BRAILLE_STRENGTH, DesertRuins_EventScript_22D9EE
goto_if_set FLAG_SYS_REGIROCK_PUZZLE_COMPLETED, DesertRuins_EventScript_22D9EE
braillemessage DesertRuins_Braille_2A6CA0
waitbuttonpress
hidebox2

View File

@ -16,7 +16,7 @@ IslandCave_EventScript_238E44:: @ 8238E44
return
IslandCave_MapScript1_238E58: @ 8238E58
call_if_unset FLAG_SYS_BRAILLE_WAIT, IslandCave_EventScript_238E62
call_if_unset FLAG_SYS_BRAILLE_REGICE_COMPLETED, IslandCave_EventScript_238E62
end
IslandCave_EventScript_238E62:: @ 8238E62
@ -47,13 +47,13 @@ IslandCave_EventScript_238EAF:: @ 8238EAF
setmetatile 9, 20, 564, 1
special DrawWholeMapView
playse SE_BAN
setflag FLAG_SYS_BRAILLE_WAIT
setflag FLAG_SYS_BRAILLE_REGICE_COMPLETED
end
IslandCave_EventScript_238EEF:: @ 8238EEF
lockall
call_if_set FLAG_TEMP_3, IslandCave_EventScript_238F45
goto_if_set FLAG_SYS_BRAILLE_WAIT, IslandCave_EventScript_238F13
goto_if_set FLAG_SYS_BRAILLE_REGICE_COMPLETED, IslandCave_EventScript_238F13
braillemessage IslandCave_Braille_2A6CD4
setflag FLAG_TEMP_2
special ShouldDoBrailleRegicePuzzle
@ -69,7 +69,7 @@ IslandCave_EventScript_238F1D:: @ 8238F1D
lockall
call_if_set FLAG_TEMP_3, IslandCave_EventScript_238F45
braillemessage IslandCave_Braille_2A6CD4
goto_if_set FLAG_SYS_BRAILLE_WAIT, IslandCave_EventScript_238F41
goto_if_set FLAG_SYS_BRAILLE_REGICE_COMPLETED, IslandCave_EventScript_238F41
setflag FLAG_TEMP_2
special ShouldDoBrailleRegicePuzzle
goto IslandCave_EventScript_238F41
@ -82,9 +82,9 @@ IslandCave_EventScript_238F41:: @ 8238F41
end
IslandCave_EventScript_238F45:: @ 8238F45
setvar VAR_0x403B, 0
setvar VAR_0x403C, 0
setvar VAR_0x403D, 0
setvar VAR_REGICE_STEPS_1, 0
setvar VAR_REGICE_STEPS_2, 0
setvar VAR_REGICE_STEPS_3, 0
clearflag FLAG_TEMP_3
return

View File

@ -3,162 +3,6 @@
.section .rodata
gUnknown_0861F3EC:: @ 861F3EC
.4byte sub_81C9298
.4byte sub_81C941C
.4byte sub_81C9924
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81C9298
.4byte sub_81C941C
.4byte sub_81C9940
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81C9338
.4byte sub_81C941C
.4byte sub_81C9940
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81C9368
.4byte sub_81C941C
.4byte sub_81C9940
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81C92CC
.4byte sub_81C941C
.4byte sub_81C9940
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81C9304
.4byte sub_81C941C
.4byte sub_81C9940
.4byte sub_81C9990
.4byte sub_81C99C0
.4byte sub_81C9430
.4byte sub_81C99D4
.4byte sub_81CC4D4
.4byte sub_81CC554
.4byte sub_81CC5F4
.4byte sub_81CC62C
.4byte sub_81CC65C
.4byte sub_81CC524
.4byte sub_81CC670
.4byte sub_81CCFD8
.4byte sub_81CD070
.4byte sub_81CDDD4
.4byte sub_81CDE2C
.4byte sub_81CDE64
.4byte sub_81CD1C0
.4byte sub_81CECA0
.4byte sub_81CEF3C
.4byte sub_81CEFDC
.4byte sub_81CF330
.4byte sub_81CF3A0
.4byte sub_81CF3D0
.4byte sub_81CEFF0
.4byte sub_81CF3F8
.4byte sub_81CD024
.4byte sub_81CD070
.4byte sub_81CDDD4
.4byte sub_81CDE2C
.4byte sub_81CDE64
.4byte sub_81CD1C0
.4byte sub_81CECA0
.4byte sub_81CEF98
.4byte sub_81CEFDC
.4byte sub_81CF368
.4byte sub_81CF3A0
.4byte sub_81CF3D0
.4byte sub_81CEFF0
.4byte sub_81CF3F8
.4byte sub_81CAAE8
.4byte sub_81CAB24
.4byte sub_81CB260
.4byte sub_81CB29C
.4byte sub_81CB2CC
.4byte sub_81CAB38
.4byte sub_81CB2E0
.4byte sub_81CF9BC
.4byte sub_81CFA34
.4byte sub_81CFDD0
.4byte sub_81CFE40
.4byte sub_81CFE70
.4byte sub_81CFA48
.4byte sub_81CFE98
.4byte sub_81D0450
.4byte sub_81D04A0
.4byte sub_81D0978
.4byte sub_81D09B0
.4byte sub_81D09E0
.4byte sub_81D04B8
.4byte sub_81D09F4
.4byte sub_81CFA04
.4byte sub_81CFA34
.4byte sub_81CFE08
.4byte sub_81CFE40
.4byte sub_81CFE70
.4byte sub_81CFA48
.4byte sub_81CFE98
gUnknown_0861F590:: @ 861F590
.incbin "graphics/pokenav/icon2.gbapal"
gUnknown_0861F5B0:: @ 861F5B0
.incbin "graphics/pokenav/icon2.4bpp.lz"
gUnknown_0861F994:: @ 861F994
.incbin "graphics/pokenav/icon2_unused.4bpp.lz"
gUnknown_0861FA04:: @ 861FA04
.byte 0x50
.byte 0x0
.byte 0x0
.byte 0x0
gUnknown_0861FA08:: @ 861FA08
window_template 0, 1, 0x16, 0x10, 0x2, 0x0, 0x36
null_window_template
gUnknown_0861FA18:: @ 861FA18
.4byte gUnknown_085EBED5
.4byte gUnknown_085EBED9
.4byte gUnknown_085EBEE9
.4byte gUnknown_085EBEF9
.4byte gUnknown_085EBF0E
.4byte gUnknown_085EBF22
.4byte gUnknown_085EBF39
.4byte gUnknown_085EBF49
.4byte gUnknown_085EBF57
.4byte gUnknown_085EBF60
.4byte gUnknown_085EBF73
.4byte gUnknown_085EBF84
gUnknown_0861FA48:: @ 861FA48
.byte 0x4
.byte 0x1
.byte 0x2
.byte 0x0
gUnknown_0861FA4C:: @ 861FA4C
obj_tiles gUnknown_0861F5B0, 0x1000, 0
gUnknown_0861FA54:: @ 861FA54
obj_pal gUnknown_0861F590, 0
null_obj_pal
gUnknown_0861FA64:: @ 861FA64
obj_tiles gPokenavLeftHeaderHoennMap_Gfx, 0xC00, 2
gUnknown_0861FA6C:: @ 861FA6C
obj_tiles gPokenavLeftHeaderMainMenu_Gfx, 0x20, 3
obj_tiles gPokenavLeftHeaderCondition_Gfx, 0x20, 1

View File

@ -291,7 +291,7 @@ gSpecials:: @ 81DBA64
def_special GetPokeblockNameByMonNature
def_special GetSecretBaseNearbyMapName
def_special CheckRelicanthWailord
def_special ShouldDoBrailleStrengthEffectOld
def_special ShouldDoBrailleRegirockEffectOld
def_special sub_80B0534
def_special sub_80B058C
def_special WaitWeather

View File

@ -1,11 +1,11 @@
#ifndef GUARD_BRAILLE_PUZZLES_H
#define GUARD_BRAILLE_PUZZLES_H
bool8 ShouldDoBrailleFlyEffect(void);
bool8 ShouldDoBrailleStrengthEffect(void);
bool8 ShouldDoBrailleRegisteelEffect(void);
bool8 ShouldDoBrailleRegirockEffect(void);
bool8 ShouldDoBrailleDigEffect(void);
void DoBrailleDigEffect(void);
void sub_8179918(void);
void sub_8179834(void);
void SetUpPuzzleEffectRegisteel(void);
void SetUpPuzzleEffectRegirock(void);
#endif // GUARD_BRAILLE_PUZZLES_H

View File

@ -61,7 +61,7 @@
#define FLDEFF_SECRET_POWER_SHRUB 57
#define FLDEFF_CUT_GRASS 58
#define FLDEFF_FIELD_MOVE_SHOW_MON_INIT 59
#define FLDEFF_USE_FLY_ANCIENT_TOMB 60
#define FLDEFF_USE_TOMB_PUZZLE_EFFECT 60
#define FLDEFF_PCTURN_ON 61
#define FLDEFF_HALL_OF_FAME_RECORD 62
#define FLDEFF_USE_TELEPORT 63

View File

@ -1352,9 +1352,9 @@
#define FLAG_SYS_ENC_UP_ITEM (SYSTEM_FLAGS + 0x4D)
#define FLAG_SYS_ENC_DOWN_ITEM (SYSTEM_FLAGS + 0x4E)
#define FLAG_SYS_BRAILLE_DIG (SYSTEM_FLAGS + 0x4F)
#define FLAG_SYS_BRAILLE_STRENGTH (SYSTEM_FLAGS + 0x50)
#define FLAG_SYS_BRAILLE_WAIT (SYSTEM_FLAGS + 0x51)
#define FLAG_SYS_BRAILLE_FLY (SYSTEM_FLAGS + 0x52)
#define FLAG_SYS_REGIROCK_PUZZLE_COMPLETED (SYSTEM_FLAGS + 0x50)
#define FLAG_SYS_BRAILLE_REGICE_COMPLETED (SYSTEM_FLAGS + 0x51)
#define FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED (SYSTEM_FLAGS + 0x52)
#define FLAG_SYS_HAS_EON_TICKET (SYSTEM_FLAGS + 0x53)
#define FLAG_LANDMARK_POKEMON_LEAGUE (SYSTEM_FLAGS + 0x54)

View File

@ -75,9 +75,9 @@
#define VAR_0x4038 0x4038
#define VAR_0x4039 0x4039
#define VAR_0x403A 0x403A
#define VAR_0x403B 0x403B
#define VAR_0x403C 0x403C
#define VAR_0x403D 0x403D
#define VAR_REGICE_STEPS_1 0x403B
#define VAR_REGICE_STEPS_2 0x403C
#define VAR_REGICE_STEPS_3 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
#define VAR_0x403F 0x403F
#define VAR_DAYS 0x4040

View File

@ -4,5 +4,10 @@
void sub_80FCC88(u8);
void sub_80FCC88(u8);
void sub_80FCACC(u8);
void sub_80FC580(u8);
void sub_80FC6BC(u8);
void sub_80FC804(u8);
void sub_80FCE48(u8);
void sub_80FC894(u8);
#endif //GUARD_CONTEST_LINK_80FC4F4_H

View File

@ -4,5 +4,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
void UpdateDewfordTrendPerDay(u16 days);
bool8 sub_81226D8(u16 *a);
#endif // GUARD_DEWFORDTREND_H

View File

@ -25,5 +25,7 @@ void UpdateFrontierManiac(u16 a0);
void UpdateFrontierGambler(u16 a0);
void ResetCyclingRoadChallengeData(void);
bool8 warp0_in_pokecenter(void);
void ResetFanClub(void);
#endif // GUARD_FIELD_SPECIALS_H

View File

@ -376,7 +376,7 @@ struct BattleFrontier
/*0xEBC*/ u32 battlesCount;
/*0xEC0*/ u16 field_EC0[16];
/*0xEE0*/ u8 field_EE0;
/*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH + 1];
/*0xEE1*/ u8 opponentName[2][PLAYER_NAME_LENGTH + 1];
/*0xEF1*/ u8 field_EF1[2][4];
/*0xEF9*/ u8 field_EF9_0:7;
/*0xEF9*/ u8 field_EF9_1:1;
@ -446,7 +446,7 @@ struct SaveBlock2
/*0x90*/ u8 filler_90[0x8];
/*0x98*/ struct Time localTimeOffset;
/*0xA0*/ struct Time lastBerryTreeUpdate;
/*0xA8*/ u32 field_A8;
/*0xA8*/ u32 field_A8; // Written to, but never read.
/*0xAC*/ u32 encryptionKey;
/*0xB0*/ struct PlayersApprentice playerApprentice;
/*0xDC*/ struct Apprentice apprentices[4]; // From record mixing.
@ -787,7 +787,7 @@ struct WaldaPhrase
bool8 patternUnlocked;
};
struct UnkSaveSubstruct_3b98
struct TrainerNameRecord
{
u32 trainerId;
u8 trainerName[PLAYER_NAME_LENGTH + 1];
@ -891,7 +891,7 @@ struct SaveBlock1
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
/*0x3B58*/ LilycoveLady lilycoveLady;
/*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20];
/*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20];
/*0x3C88*/ u8 filler_3C88[0xDC];
/*0x3D64*/ struct SaveTrainerHill trainerHill;
/*0x3D70*/ struct WaldaPhrase waldaPhrase;

View File

@ -4007,9 +4007,17 @@ extern const u32 gBerryPalette_Enigma[];
//credits
extern const u32 gCreditsCopyrightEnd_Gfx[];
//pokenav condition marker
//pokenav
extern const u8 gPokenavConditionMarker_Gfx[];
extern const u16 gPokenavConditionMarker_Pal[];
extern const u16 gPokenavHeader_Pal[];
extern const u32 gPokenavHeader_Gfx[];
extern const u32 gPokenavHeader_Tilemap[];
extern const u32 gPokenavLeftHeaderHoennMap_Gfx[];
extern const u32 gPokenavLeftHeaderMainMenu_Gfx[];
extern const u32 gPokenavLeftHeaderCondition_Gfx[];
extern const u32 gPokenavLeftHeaderRibbons_Gfx[];
extern const u32 gPokenavLeftHeaderMatchCall_Gfx[];
extern const u32 gUnknown_08D9862C[];
extern const u32 gUnknown_08D98CC8[];

View File

@ -79,5 +79,7 @@ bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void DoWallyTutorialBagMenu(void);
void ResetBagScrollPositions(void);
#endif //GUARD_item_menu_H

View File

@ -305,7 +305,7 @@ void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
u8 sub_800A0C8(s32, s32);
u16 *sub_801B058(void);
u16 *GetSaveBlock1Field3564(void);
u8 sub_800A9A8(void);
void sub_800AD10(void);
void sub_800AB18(void);

View File

@ -213,6 +213,7 @@ extern struct UnkRfuStruct_2 gUnknown_03005000;
extern u8 gWirelessStatusIndicatorSpriteId;
// Exported ROM declarations
void WipeTrainerNameRecords(void);
u32 sub_800BEC0(void);
void sub_800E700(void);
void sub_800EDD4(void);
@ -263,7 +264,7 @@ void sub_800E084(void);
void sub_801103C(void);
void sub_8011C5C(void);
void sub_80106D4(void);
void sub_800E3A8(void);
void RecordMixTrainerNames(void);
void sub_800ED10(void);
void sub_800ED28(void);
void sub_8011090(u8 a0, u32 a1, u32 a2);

View File

@ -68,5 +68,7 @@ void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
extern u16 GetGeneratedTrainerIdLower(void);
#endif // GUARD_MAIN_H

View File

@ -85,5 +85,7 @@ extern const struct MenuAction gMailboxMailOptions[];
void ReshowPlayerPC(u8 taskId);
void sub_816B31C(void);
void Mailbox_ReturnToMailListAfterDeposit(void);
void NewGameInitPCItems(void);
#endif //GUARD_PLAYER_PC_H

View File

@ -1,7 +1,7 @@
#ifndef GUARD_POKEDEX_H
#define GUARD_POKEDEX_H
extern u8 gUnknown_030060B0;
extern u8 gUnusedPokedexU8;
extern void (*gUnknown_030060B4)(void);
#define HOENN_DEX_COUNT 202
@ -42,5 +42,6 @@ u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
bool16 HasAllHoennMons(void);
void ResetPokedexScrollPositions(void);
#endif // GUARD_POKEDEX_H

View File

@ -24,6 +24,7 @@ void sub_80EBB28(void);
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events);
bool8 sub_80E909C(void);
void sub_80EB218(void);
void ResetSecretBases(void);
// SetCurrentSecretBaseFromPosition
void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
@ -33,4 +34,5 @@ void sub_80E8BC8(void);
void sub_80E8D4C(void);
void EnableBothScriptContexts(void);
#endif //GUARD_SECRET_BASE_H

View File

@ -986,6 +986,19 @@ extern const u8 gText_SomeonesPC[];
extern const u8 gText_PlayersPC[];
extern const u8 gText_WhichPCShouldBeAccessed[];
extern const u8 gText_Navgear_ClearButtonList[];
extern const u8 gText_NavgearMap_ZoomedOutButtons[];
extern const u8 gText_NavgearMap_ZoomedInButtons[];
extern const u8 gText_NavgearCondition_MonListButtons[];
extern const u8 gText_NavgearCondition_MonStatusButtons[];
extern const u8 gText_NavgearCondition_MarkingButtons[];
extern const u8 gText_NavgearMatchCall_TrainerListButtons[];
extern const u8 gText_NavgearMatchCall_CallMenuButtons[];
extern const u8 gText_NavgearMatchCall_CheckTrainerButtons[];
extern const u8 gText_NavgearRibbons_MonListButtons[];
extern const u8 gText_NavgearRibbons_RibbonListButtons[];
extern const u8 gText_NavgearRibbons_RibbonCheckButtons[];
extern const u8 gUnknown_085EAD37[];
extern const u8 gUnknown_085EAD41[];
extern const u8 gUnknown_085EAD67[];
@ -2400,5 +2413,14 @@ extern const u8 gUnknown_085EDC45[];
extern const u8 gUnknown_085EDB00[];
extern const u8 gUnknown_085EDC84[];
// Easy Chat Entry
extern const u8 gText_StopGivingPkmnMail[];
extern const u8 gText_LikeToQuitQuiz[];
extern const u8 gText_ChallengeQuestionMark[];
extern const u8 gText_QuitEditing[];
extern const u8 gText_AllTextBeingEditedWill[];
extern const u8 gText_BeDeletedThatOkay[];
extern const u8 gText_Lady[];
extern const u8 gText_F700sQuiz[];
#endif // GUARD_STRINGS_H

View File

@ -61,5 +61,6 @@ void ContestLiveUpdates_BeforeInterview_2(u8 a0);
void ContestLiveUpdates_BeforeInterview_3(u8 a0);
void ContestLiveUpdates_BeforeInterview_4(u16 a0);
void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
void ResetGabbyAndTy(void);
#endif //GUARD_TV_H

View File

@ -147,7 +147,6 @@ SECTIONS {
src/secret_base.o(.text);
src/tv.o(.text);
src/contest_link_80F57C4.o(.text);
asm/contest_link_80F57C4.o(.text);
src/script_pokemon_util_80F87D8.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
@ -165,6 +164,7 @@ SECTIONS {
src/ice.o(.text);
src/fight.o(.text);
src/poison.o(.text);
src/flying.o(.text);
asm/flying.o(.text);
src/psychic.o(.text);
src/bug.o(.text);
@ -289,6 +289,7 @@ SECTIONS {
src/pokemon_summary_screen.o(.text);
src/unk_pokedex_area_screen_helper.o(.text);
src/battle_pyramid_bag.o(.text);
src/pokenav.o(.text);
asm/pokenav.o(.text);
src/pokenav_match_call.o(.text);
asm/rom_81D1C44.o(.text);
@ -591,6 +592,7 @@ SECTIONS {
src/pokemon_summary_screen.o(.rodata);
src/unk_pokedex_area_screen_helper.o(.rodata);
src/battle_pyramid_bag.o(.rodata);
src/pokenav.o(.rodata);
data/pokenav.o(.rodata);
src/pokenav_match_call.o(.rodata);
data/rom_81D1C44.o(.rodata);

View File

@ -10,21 +10,20 @@
#include "constants/maps.h"
#include "constants/songs.h"
#include "constants/species.h"
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
extern u8 GetCursorSelectionMonId(void);
extern u8 oei_task_add(void);
#include "fieldmap.h"
#include "party_menu.h"
#include "fldeff.h"
// why do this, GF?
enum
{
STRENGTH_PUZZLE,
FLY_PUZZLE
REGIROCK_PUZZLE,
REGISTEEL_PUZZLE
};
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
static const u8 gUnknown_085EFE74[][2] =
static const u8 gRegicePathCoords[][2] =
{
{0x04, 0x15},
{0x05, 0x15},
@ -65,14 +64,14 @@ static const u8 gUnknown_085EFE74[][2] =
};
void SealedChamberShakingEffect(u8);
void sub_8179860(void);
void sub_8179944(void);
void DoBrailleRegirockEffect(void);
void DoBrailleRegisteelEffect(void);
bool8 ShouldDoBrailleDigEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
&& (gSaveBlock1Ptr->location.mapGroup == 0x18
&& gSaveBlock1Ptr->location.mapNum == 0x47))
&& (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM)))
{
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
return TRUE;
@ -87,12 +86,12 @@ bool8 ShouldDoBrailleDigEffect(void)
void DoBrailleDigEffect(void)
{
MapGridSetMetatileIdAt(16, 8, 554);
MapGridSetMetatileIdAt(17, 8, 555);
MapGridSetMetatileIdAt(18, 8, 556);
MapGridSetMetatileIdAt(16, 9, 3634);
MapGridSetMetatileIdAt(17, 9, 563);
MapGridSetMetatileIdAt(18, 9, 3636);
MapGridSetMetatileIdAt(16, 8, 0x22A);
MapGridSetMetatileIdAt(17, 8, 0x22B);
MapGridSetMetatileIdAt(18, 8, 0x22C);
MapGridSetMetatileIdAt(16, 9, 0xE32);
MapGridSetMetatileIdAt(17, 9, 0x233);
MapGridSetMetatileIdAt(18, 9, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_DIG);
@ -115,10 +114,10 @@ bool8 CheckRelicanthWailord(void)
// THEORY: this was caused by block commenting out all of the older R/S braille functions but leaving the call to it itself, which creates the nullsub.
// the code is shown below to show what this might look like.
void ShouldDoBrailleStrengthEffectOld(void)
void ShouldDoBrailleRegirockEffectOld(void)
{
/*
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
return TRUE;
@ -131,7 +130,7 @@ void ShouldDoBrailleStrengthEffectOld(void)
return FALSE;
}
void DoBrailleStrengthEffect(void)
void DoBrailleRegirockEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
MapGridSetMetatileIdAt(14, 26, 554);
@ -142,13 +141,13 @@ void DoBrailleStrengthEffect(void)
MapGridSetMetatileIdAt(16, 27, 3636);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
bool8 ShouldDoBrailleFlyEffect(void)
bool8 ShouldDoBrailleRegisteelEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
{
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
return TRUE;
@ -157,24 +156,24 @@ bool8 ShouldDoBrailleFlyEffect(void)
return FALSE;
}
void DoBrailleFlyEffect(void)
void DoBrailleRegisteelEffect(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
bool8 FldEff_UseFlyAncientTomb(void)
{
u8 taskId = oei_task_add();
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
return FALSE;
}
void UseFlyAncientTomb_Callback(void)
void UseRegisteelHm_Callback(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
UseFlyAncientTomb_Finish();
}
@ -188,7 +187,7 @@ void UseFlyAncientTomb_Finish(void)
MapGridSetMetatileIdAt(16, 27, 3636);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_FLY);
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
*/
@ -240,25 +239,25 @@ void SealedChamberShakingEffect(u8 taskId)
}
// moved later in the function because it was rewritten.
bool8 ShouldDoBrailleStrengthEffect(void)
bool8 ShouldDoBrailleRegirockEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH)
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED)
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(DESERT_RUINS)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
{
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
{
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
{
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
{
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
}
@ -266,65 +265,68 @@ bool8 ShouldDoBrailleStrengthEffect(void)
return FALSE;
}
void sub_8179834(void)
void SetUpPuzzleEffectRegirock(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
void UseStrengthDesertRuins_Callback(void)
void UseRegirockHm_Callback(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
sub_8179860();
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
DoBrailleRegirockEffect();
}
void sub_8179860(void)
void DoBrailleRegirockEffect(void)
{
MapGridSetMetatileIdAt(14, 26, 554);
MapGridSetMetatileIdAt(15, 26, 555);
MapGridSetMetatileIdAt(16, 26, 556);
MapGridSetMetatileIdAt(14, 27, 3634);
MapGridSetMetatileIdAt(15, 27, 563);
MapGridSetMetatileIdAt(16, 27, 3636);
MapGridSetMetatileIdAt(14, 26, 0x22A);
MapGridSetMetatileIdAt(15, 26, 0x22B);
MapGridSetMetatileIdAt(16, 26, 0x22C);
MapGridSetMetatileIdAt(14, 27, 0xE32);
MapGridSetMetatileIdAt(15, 27, 0x233);
MapGridSetMetatileIdAt(16, 27, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
bool8 ShouldDoBrailleFlyEffect(void)
bool8 ShouldDoBrailleRegisteelEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44))
if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ANCIENT_TOMB)))
{
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
{ sBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
{
sBraillePuzzleCallbackFlag = REGISTEEL_PUZZLE;
return TRUE;
}
}
return FALSE;
}
void sub_8179918(void)
void SetUpPuzzleEffectRegisteel(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
void UseFlyAncientTomb_Callback(void)
void UseRegisteelHm_Callback(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
sub_8179944();
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
DoBrailleRegisteelEffect();
}
void sub_8179944(void)
void DoBrailleRegisteelEffect(void)
{
MapGridSetMetatileIdAt(14, 26, 554);
MapGridSetMetatileIdAt(15, 26, 555);
MapGridSetMetatileIdAt(16, 26, 556);
MapGridSetMetatileIdAt(14, 27, 3634);
MapGridSetMetatileIdAt(15, 27, 563);
MapGridSetMetatileIdAt(16, 27, 3636);
MapGridSetMetatileIdAt(14, 26, 0x22A);
MapGridSetMetatileIdAt(15, 26, 0x22B);
MapGridSetMetatileIdAt(16, 26, 0x22C);
MapGridSetMetatileIdAt(14, 27, 0xE32);
MapGridSetMetatileIdAt(15, 27, 0x233);
MapGridSetMetatileIdAt(16, 27, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_FLY);
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
@ -332,7 +334,7 @@ void sub_8179944(void)
void DoBrailleWait(void)
{
/*
if (!FlagGet(FLAG_SYS_BRAILLE_WAIT))
if (!FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
CreateTask(Task_BrailleWait, 0x50);
}
@ -410,15 +412,15 @@ bool8 FldEff_UsePuzzleEffect(void)
{
u8 taskId = oei_task_add();
if (sBraillePuzzleCallbackFlag == FLY_PUZZLE)
if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE)
{
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
}
else
{
gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback;
gTasks[taskId].data[8] = (u32)UseRegirockHm_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseRegirockHm_Callback;
}
return FALSE;
}
@ -427,10 +429,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
{
u8 i;
if (gSaveBlock1Ptr->location.mapGroup == 0x18
&& gSaveBlock1Ptr->location.mapNum == 0x43)
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ISLAND_CAVE)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(ISLAND_CAVE))
{
if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE)
if (FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
return FALSE;
if (FlagGet(FLAG_TEMP_2) == FALSE)
return FALSE;
@ -439,35 +441,36 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
for (i = 0; i < 36; i++)
{
u8 xPos = gUnknown_085EFE74[i][0];
u8 yPos = gUnknown_085EFE74[i][1];
u8 xPos = gRegicePathCoords[i][0];
u8 yPos = gRegicePathCoords[i][1];
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
{
u16 varValue;
if (i < 16)
{
u16 val = VarGet(VAR_0x403B);
u16 val = VarGet(VAR_REGICE_STEPS_1);
val |= 1 << i;
VarSet(VAR_0x403B, val);
VarSet(VAR_REGICE_STEPS_1, val);
}
else if (i < 32)
{
u16 val = VarGet(VAR_0x403C);
u16 val = VarGet(VAR_REGICE_STEPS_2);
val |= 1 << (i - 16);
VarSet(VAR_0x403C, val);
VarSet(VAR_REGICE_STEPS_2, val);
}
else
{
u16 val = VarGet(VAR_0x403D);
u16 val = VarGet(VAR_REGICE_STEPS_3);
val |= 1 << (i - 32);
VarSet(VAR_0x403D, val);
VarSet(VAR_REGICE_STEPS_3, val);
}
varValue = VarGet(VAR_0x403B);
if (varValue != 0xFFFF || VarGet(VAR_0x403C) != varValue || VarGet(VAR_0x403D) != 0xF)
varValue = VarGet(VAR_REGICE_STEPS_1);
if (varValue != 0xFFFF || VarGet(VAR_REGICE_STEPS_2) != 0xFFFF || VarGet(VAR_REGICE_STEPS_3) != 0xF)
return FALSE;
// This final check is redundant.
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
return TRUE;
else

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -28,8 +28,6 @@ EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
extern u16 *const gSpecialVars[];
extern void sub_80BB358(void);
void InitEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
@ -69,7 +67,7 @@ void EnableNationalPokedex(void)
FlagSet(FLAG_SYS_NATIONAL_DEX);
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
gSaveBlock2Ptr->pokedex.order = 0;
sub_80BB358();
ResetPokedexScrollPositions();
}
bool32 IsNationalPokedexEnabled(void)

View File

@ -74,11 +74,13 @@ static const u32 gCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transit
// text
bool8 SetUpFieldMove_Flash(void)
{
if (ShouldDoBrailleFlyEffect())
// In Ruby and Sapphire, Registeel's tomb is opened by using Fly. In Emerald,
// Flash is used instead.
if (ShouldDoBrailleRegisteelEffect())
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
gPostMenuFieldCallback = sub_8179918;
gPostMenuFieldCallback = SetUpPuzzleEffectRegisteel;
return TRUE;
}
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))

View File

@ -119,11 +119,13 @@ static void sub_813561C(u8 taskId)
bool8 SetUpFieldMove_RockSmash(void)
{
if (ShouldDoBrailleStrengthEffect())
// In Ruby and Sapphire, Regirock's tomb is opened by using Strength. In Emerald,
// it is opened by using Rock Smash.
if (ShouldDoBrailleRegirockEffect())
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
gPostMenuFieldCallback = sub_8179834;
gPostMenuFieldCallback = SetUpPuzzleEffectRegirock;
return TRUE;
}
else if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)

View File

@ -1,13 +1,16 @@
#include "global.h"
#include "battle_anim.h"
#include "palette.h"
#include "trig.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
extern void sub_810DE70(struct Sprite *);
extern void sub_810DFA8(struct Sprite *);
extern void sub_810E044(struct Sprite *);
extern void sub_810E13C(struct Sprite *);
extern void sub_810E1C8(struct Sprite *);
extern void sub_810E314(struct Sprite *);
void sub_810DE70(struct Sprite *);
void sub_810DFA8(struct Sprite *);
void sub_810E044(struct Sprite *);
void sub_810E13C(struct Sprite *);
void sub_810E1C8(struct Sprite *);
void sub_810E314(struct Sprite *);
extern void sub_810EA4C(struct Sprite *);
extern void sub_810EAA0(struct Sprite *);
extern void sub_810EC34(struct Sprite *);
@ -18,6 +21,13 @@ extern void sub_810EEF8(struct Sprite *);
extern void sub_810F004(struct Sprite *);
extern void sub_810F084(struct Sprite *);
static void sub_810DE98(struct Sprite *);
static void sub_810DF18(u8);
static void sub_810E028(struct Sprite *);
static void sub_810E184(struct Sprite *);
static void sub_810E24C(struct Sprite *);
void sub_810E520(struct Sprite *);
const struct SpriteTemplate gUnknown_08596270 =
{
.tileTag = ANIM_TAG_GUST,
@ -326,3 +336,293 @@ const struct SpriteTemplate gUnknown_08596514 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F084,
};
void sub_810DE70(struct Sprite *sprite)
{
InitSpritePosToAnimTarget(sprite, FALSE);
sprite->pos1.y += 20;
sprite->data[1] = 191;
sprite->callback = sub_810DE98;
sprite->callback(sprite);
}
static void sub_810DE98(struct Sprite *sprite) {
sprite->pos2.x = Sin(sprite->data[1], 32);
sprite->pos2.y = Cos(sprite->data[1], 8);
sprite->data[1] += 5;
sprite->data[1] &= 0xFF;
if (++sprite->data[0] == 71)
DestroyAnimSprite(sprite);
}
void sub_810DED8(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[1];
gTasks[taskId].data[1] = gBattleAnimArgs[0];
gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
gTasks[taskId].func = sub_810DF18;
}
static void sub_810DF18(u8 taskId)
{
u8 data2;
u16 temp;
int i, base;
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
{
gTasks[taskId].data[10] = 0;
data2 = gTasks[taskId].data[2];
temp = gPlttBufferFaded[16 * data2 + 0x108];
i = 7;
base = data2 * 16;
do
{
gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
i--;
}
while (i > 0);
gPlttBufferFaded[base + 0x101] = temp;
}
if (--gTasks[taskId].data[0] == 0)
DestroyAnimVisualTask(taskId);
}
void sub_810DFA8(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, sub_810E028);
}
static void sub_810E028(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
DestroyAnimSprite(sprite);
}
void sub_810E044(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
if (IsContest())
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
if (gBattleAnimArgs[6] == 0)
{
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
}
sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
}
void sub_810E13C(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_810E184;
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 1;
}
static void sub_810E184(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
sprite->data[0]--;
}
else
{
sprite->data[2] += sprite->data[1];
sprite->pos2.y -= (sprite->data[2] >> 8);
}
if (sprite->pos1.y + sprite->pos2.y < -32)
DestroyAnimSprite(sprite);
}
void sub_810E1C8(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x = 272;
sprite->pos1.y = -32;
StartSpriteAffineAnim(sprite, 1);
}
else
{
sprite->pos1.x = -32;
sprite->pos1.y = -32;
}
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
sprite->callback = sub_810E24C;
}
static void sub_810E24C(struct Sprite *sprite)
{
sprite->data[0] = 1;
AnimTranslateLinear(sprite);
if (((u16)sprite->data[3] >> 8) > 200)
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos2.x = 0;
sprite->data[3] &= 0xFF;
}
if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0;
DestroyAnimSprite(sprite);
}
}
void sub_810E2C8(struct Sprite *sprite)
{
if (sprite->data[0]-- <= 0)
{
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
{
FreeOamMatrix(sprite->oam.matrixNum);
sprite->oam.affineMode = 0;
}
DestroySprite(sprite);
gAnimVisualTaskCount--;
}
}
// FAKEMATCHING
void sub_810E314(struct Sprite *sprite)
{
s16 *data;
u8 slot;
s16 spriteCoord;
int t1, t2;
u32 arg2;
u32 matrixNum;
u8 sinIndex;
register s16 sinVal asm ("r4");
register int sinVal2 asm ("r0");
data = sprite->data;
if (gBattleAnimArgs[7] & 0x100)
slot = gBattleAnimAttacker;
else
slot = gBattleAnimTarget;
if (GetBattlerSide(slot) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0];
spriteCoord = GetBattlerSpriteCoord(slot, 1);
sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
data[4] = sprite->pos1.y << 8;
t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1;
data[7] = (data[7] & 1) | t1;
((u8 *) data)[0] |= 4;
arg2 = (u16) gBattleAnimArgs[2];
data[1] = (u8) gBattleAnimArgs[2];
arg2 <<= 16;
data[5] = arg2 >> 24;
data[2] = gBattleAnimArgs[3];
data[3] = gBattleAnimArgs[4];
data[6] = gBattleAnimArgs[5];
if ((u16) (data[1] - 64) <= 0x7f)
{
if (!IsContest())
sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
else
sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
((u8 *) data)[14] = data[7] & -2;
if (!(data[2] & 0x8000))
{
sprite->hFlip ^= 1;
sprite->animNum = sprite->hFlip;
sprite->animBeginning = 1;
sprite->animEnded = 0;
}
}
else
{
sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
((u8 *) data)[14] |= 1;
if (data[2] & 0x8000)
{
sprite->hFlip ^= 1;
sprite->animNum = sprite->hFlip;
sprite->animBeginning = 1;
sprite->animEnded = 0;
}
}
t2 = (u16) data[1] >> 6 << 4;
((u8 *) data)[0] = (15 & data[0]) | t2;
sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8;
matrixNum = sprite->oam.matrixNum;
sinIndex = (-sprite->pos2.x >> 1) + data[5];
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
gOamMatrices[matrixNum].b = sinVal;
sinVal2 = -sinVal;
gOamMatrices[matrixNum].c = sinVal2;
sprite->callback = sub_810E520;
}

View File

@ -1528,7 +1528,7 @@ static void ShowLinkContestResultsWindow(void)
static void sub_81A31FC(void)
{
u8 text[32];
u8 name[32];
s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@ -1541,9 +1541,9 @@ static void sub_81A31FC(void)
gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
{
StringCopy(text, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
StripExtCtrlCodes(text);
StringCopy(gSaveBlock2Ptr->frontier.field_EE1[lvlMode], text);
StringCopy(name, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
StripExtCtrlCodes(name);
StringCopy(gSaveBlock2Ptr->frontier.opponentName[lvlMode], name);
SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
}
if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1
@ -2336,8 +2336,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
AddTextPrinterParameterized(gRecordsWindowId, 1, gLevelModeText[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;
gSaveBlock2Ptr->frontier.opponentName[0][PLAYER_NAME_LENGTH] = EOS;
gSaveBlock2Ptr->frontier.opponentName[1][PLAYER_NAME_LENGTH] = EOS;
Fill2PRecords(records2P, lvlMode);
for (i = 0; i < 3; i++)
Print2PRecord(i, 1, 4, &records2P[i]);

View File

@ -16,6 +16,7 @@
#include "task.h"
#include "text.h"
#include "constants/species.h"
#include "save.h"
extern u16 gHeldKeyCodeToSend;
extern void nullsub_89(u8 taskId);
@ -2347,17 +2348,17 @@ void sub_800E174(void)
}
}
void sub_800E378(struct UnkSaveSubstruct_3b98 *dest, u32 trainerId, const u8 *name)
void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name)
{
dest->trainerId = trainerId;
StringCopy(dest->trainerName, name);
}
bool32 sub_800E388(const u8 *name)
bool32 NameIsNotEmpty(const u8 *name)
{
s32 i;
for (i = 0; i < 8; i++)
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
if (name[i] != 0)
{
@ -2367,52 +2368,64 @@ bool32 sub_800E388(const u8 *name)
return FALSE;
}
void sub_800E3A8(void)
// Save the currently connected players into the trainer records, shifting all previous records down.
void RecordMixTrainerNames(void)
{
if (gWirelessCommType != 0)
{
s32 i;
s32 j;
s32 cnt;
s32 sp0[5];
struct UnkSaveSubstruct_3b98 *sp14 = calloc(20, sizeof(struct UnkSaveSubstruct_3b98));
s32 nextSpace;
s32 connectedTrainerRecordIndices[5];
struct TrainerNameRecord *newRecords = calloc(20, sizeof(struct TrainerNameRecord));
// Check if we already have a record saved for connected trainers.
for (i = 0; i < GetLinkPlayerCount(); i++)
{
sp0[i] = -1;
connectedTrainerRecordIndices[i] = -1;
for (j = 0; j < 20; j++)
{
if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->unk_3B98[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->unk_3B98[j].trainerName) == 0)
if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->trainerNameRecords[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->trainerNameRecords[j].trainerName) == 0)
{
sp0[i] = j;
connectedTrainerRecordIndices[i] = j;
}
}
}
cnt = 0;
// Save the connected trainers first, at the top of the list.
nextSpace = 0;
for (i = 0; i < GetLinkPlayerCount(); i++)
{
if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
{
sub_800E378(&sp14[cnt], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
if (sp0[i] >= 0)
CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
// If we already had a record for this trainer, wipe it so that the next step doesn't duplicate it.
if (connectedTrainerRecordIndices[i] >= 0)
{
memset(gSaveBlock1Ptr->unk_3B98[sp0[i]].trainerName, 0, 8);
memset(gSaveBlock1Ptr->trainerNameRecords[connectedTrainerRecordIndices[i]].trainerName, 0, 8);
}
cnt++;
nextSpace++;
}
}
// Copy all non-empty records to the new list, in the order they appear on the old list. If the list is full,
// the last (oldest) records will be dropped.
for (i = 0; i < 20; i++)
{
if (sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
if (NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
{
sub_800E378(&sp14[cnt], gSaveBlock1Ptr->unk_3B98[i].trainerId, gSaveBlock1Ptr->unk_3B98[i].trainerName);
if (++cnt >= 20)
CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName);
if (++nextSpace >= 20)
{
break;
}
}
}
memcpy(gSaveBlock1Ptr->unk_3B98, sp14, 20 * sizeof(struct UnkSaveSubstruct_3b98));
free(sp14);
// Finalize the new list, and clean up.
memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
free(newRecords);
}
}
@ -2422,11 +2435,11 @@ bool32 sub_800E540(u16 id, u8 *name)
for (i = 0; i < 20; i++)
{
if (StringCompare(gSaveBlock1Ptr->unk_3B98[i].trainerName, name) == 0 && gSaveBlock1Ptr->unk_3B98[i].trainerId == id)
if (StringCompare(gSaveBlock1Ptr->trainerNameRecords[i].trainerName, name) == 0 && gSaveBlock1Ptr->trainerNameRecords[i].trainerId == id)
{
return TRUE;
}
if (!sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
if (!NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
{
return FALSE;
}
@ -2434,14 +2447,14 @@ bool32 sub_800E540(u16 id, u8 *name)
return FALSE;
}
void sub_800E5AC(void)
void WipeTrainerNameRecords(void)
{
s32 i;
for (i = 0; i < 20; i++)
{
gSaveBlock1Ptr->unk_3B98[i].trainerId = 0;
CpuFill16(0, gSaveBlock1Ptr->unk_3B98[i].trainerName, 8);
gSaveBlock1Ptr->trainerNameRecords[i].trainerId = 0;
CpuFill16(0, gSaveBlock1Ptr->trainerNameRecords[i].trainerName, 8);
}
}

View File

@ -30,31 +30,25 @@
#include "apprentice.h"
#include "frontier_util.h"
#include "constants/maps.h"
#include "pokedex.h"
#include "save.h"
#include "link_rfu.h"
#include "main.h"
#include "contest.h"
#include "item_menu.h"
#include "pokemon_storage_system.h"
#include "decoration_inventory.h"
#include "secret_base.h"
#include "player_pc.h"
#include "field_specials.h"
extern u16 gSaveFileStatus;
extern u8 gUnknown_030060B0;
// TODO: replace those declarations with file headers
extern u16 GetGeneratedTrainerIdLower(void);
extern void ClearContestWinnerPicsInContestHall(void);
extern void sub_80BB358(void);
extern void ResetBagScrollPositions(void);
extern void ResetGabbyAndTy(void);
extern void ResetSecretBases(void);
extern void ResetLinkContestBoolean(void);
extern void sub_8052DA8(void);
extern void ResetPokemonStorageSystem(void);
extern void NewGameInitPCItems(void);
extern void ClearDecorationInventories(void);
extern void ResetFanClub(void);
extern void copy_strings_to_sav1(void);
extern void sub_801AFD8(void);
extern void sub_800E5AC(void);
extern void ResetContestLinkResults(void);
extern void ResetPokeJumpResults(void);
extern void SetBerryPowder(u32* powder, u32 newValue);
extern const u8 EventScript_2715DE[];
extern const u8 EventScript_ResetAllMapFlags[];
// this file's functions
static void ClearFrontierRecord(void);
@ -112,7 +106,7 @@ static void SetDefaultOptions(void)
static void ClearPokedexFlags(void)
{
gUnknown_030060B0 = 0;
gUnusedPokedexU8 = 0;
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
}
@ -130,8 +124,8 @@ static void ClearFrontierRecord(void)
{
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
gSaveBlock2Ptr->frontier.opponentName[0][0] = EOS;
gSaveBlock2Ptr->frontier.opponentName[1][0] = EOS;
}
static void WarpToTruck(void)
@ -149,7 +143,7 @@ void Sav2_ClearSetDefault(void)
void ResetMenuAndMonGlobals(void)
{
gDifferentSaveFile = 0;
sub_80BB358();
ResetPokedexScrollPositions();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
ResetBagScrollPositions();
@ -203,7 +197,7 @@ void NewGameInitData(void)
ResetFanClub();
ResetLotteryCorner();
WarpToTruck();
ScriptContext2_RunNewScript(EventScript_2715DE);
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
ResetMiniGamesResults();
copy_strings_to_sav1();
SetLilycoveLady();
@ -211,7 +205,7 @@ void NewGameInitData(void)
ClearRankingHallRecords();
InitMatchCallCounters();
sub_801AFD8();
sub_800E5AC();
WipeTrainerNameRecords();
ResetTrainerHillResults();
ResetContestLinkResults();
}

View File

@ -37,7 +37,8 @@ static EWRAM_DATA u8 gUnknown_02039B52 = 0;
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
// IWRAM common
u8 gUnknown_030060B0;
// This is written to, but never read.
u8 gUnusedPokedexU8;
void (*gUnknown_030060B4)(void);
struct PokedexOption
@ -1225,7 +1226,7 @@ void ResetPokedex(void)
gUnknown_02039B50 = 0;
gUnknown_02039B52 = 64;
gUnknown_030060B0 = 0;
gUnusedPokedexU8 = 0;
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
gSaveBlock2Ptr->pokedex.order = 0;
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
@ -1243,7 +1244,7 @@ void ResetPokedex(void)
}
}
void sub_80BB358(void)
void ResetPokedexScrollPositions(void)
{
gUnknown_02039B50 = 0;
gUnknown_02039B52 = 64;
@ -4041,7 +4042,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
lsls r2, 24\n\
lsrs r2, 24\n\
str r2, [sp, 0x10]\n\
ldr r5, =0x000186a0\n\
ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
muls r0, r5\n\
ldr r1, =0x000011b8\n\
bl __divsi3\n\
@ -4075,7 +4076,7 @@ _080C04C0:\n\
mov r8, r1\n\
movs r6, 0x1\n\
_080C04C6:\n\
ldr r1, =0x000186a0\n\
ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
adds r0, r7, 0\n\
bl __umodsi3\n\
adds r7, r0, 0\n\

1211
src/pokenav.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1095,7 +1095,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]);
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.opponentName[j]);
}
for (i = 0; i < 2; i++)

View File

@ -1687,7 +1687,7 @@ void sub_801440C(u8 taskId)
case 9 ... 11:
case 13:
case 15:
sub_800E3A8();
RecordMixTrainerNames();
break;
}
@ -1800,12 +1800,12 @@ void sub_8014790(u8 taskId)
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
gMain.savedCallback = NULL;
data[0] = 4;
sub_800E3A8();
RecordMixTrainerNames();
ResetBlockReceivedFlags();
break;
case 16:
case 23 ... 27:
sub_800E3A8();
RecordMixTrainerNames();
DestroyTask(taskId);
default:
EnableBothScriptContexts();

View File

@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here.");
const u8 gUnknown_085EBEA8[] = _("STRATEGY");
const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}");
const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL");
const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL");
const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}");
const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
const u8 gText_NatureSlash[] = _("NATURE/");
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
const u8 gText_InParty[] = _("IN PARTY");