mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Merge branch 'master' into multiplayer-stuff
This commit is contained in:
commit
eca329f9c5
File diff suppressed because it is too large
Load Diff
2645
asm/easy_chat.s
2645
asm/easy_chat.s
File diff suppressed because it is too large
Load Diff
817
asm/flying.s
817
asm/flying.s
@ -5,823 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_810E520
|
||||||
sub_810E520: @ 810E520
|
sub_810E520: @ 810E520
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
1680
asm/pokenav.s
1680
asm/pokenav.s
File diff suppressed because it is too large
Load Diff
@ -8315,6 +8315,11 @@ _0801AFC2:
|
|||||||
.pool
|
.pool
|
||||||
thumb_func_end sub_801AC54
|
thumb_func_end sub_801AC54
|
||||||
|
|
||||||
|
@void sub_801AFD8() {
|
||||||
|
@ CpuFill32(0, &gSaveBlock1Ptr->field_322C, 219);
|
||||||
|
@ sub_801B180();
|
||||||
|
@ sub_811F8BC();
|
||||||
|
@}
|
||||||
thumb_func_start sub_801AFD8
|
thumb_func_start sub_801AFD8
|
||||||
sub_801AFD8: @ 801AFD8
|
sub_801AFD8: @ 801AFD8
|
||||||
push {lr}
|
push {lr}
|
||||||
@ -8367,25 +8372,25 @@ sav1_get_mevent_buffer_2: @ 801B034
|
|||||||
.pool
|
.pool
|
||||||
thumb_func_end sav1_get_mevent_buffer_2
|
thumb_func_end sav1_get_mevent_buffer_2
|
||||||
|
|
||||||
thumb_func_start sub_801B044
|
thumb_func_start GetSaveBlock1Field356C
|
||||||
sub_801B044: @ 801B044
|
GetSaveBlock1Field356C: @ 801B044
|
||||||
ldr r0, =gSaveBlock1Ptr
|
ldr r0, =gSaveBlock1Ptr
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
ldr r1, =0x0000356c
|
ldr r1, =0x0000356c
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
bx lr
|
bx lr
|
||||||
.pool
|
.pool
|
||||||
thumb_func_end sub_801B044
|
thumb_func_end GetSaveBlock1Field356C
|
||||||
|
|
||||||
thumb_func_start sub_801B058
|
thumb_func_start GetSaveBlock1Field3564
|
||||||
sub_801B058: @ 801B058
|
GetSaveBlock1Field3564: @ 801B058
|
||||||
ldr r0, =gSaveBlock1Ptr
|
ldr r0, =gSaveBlock1Ptr
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
ldr r1, =0x00003564
|
ldr r1, =0x00003564
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
bx lr
|
bx lr
|
||||||
.pool
|
.pool
|
||||||
thumb_func_end sub_801B058
|
thumb_func_end GetSaveBlock1Field3564
|
||||||
|
|
||||||
thumb_func_start sub_801B06C
|
thumb_func_start sub_801B06C
|
||||||
sub_801B06C: @ 801B06C
|
sub_801B06C: @ 801B06C
|
||||||
@ -8531,7 +8536,7 @@ sub_801B180: @ 801B180
|
|||||||
sub sp, 0x4
|
sub sp, 0x4
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
str r0, [sp]
|
str r0, [sp]
|
||||||
bl sub_801B044
|
bl GetSaveBlock1Field356C
|
||||||
adds r1, r0, 0
|
adds r1, r0, 0
|
||||||
ldr r2, =0x05000001
|
ldr r2, =0x05000001
|
||||||
mov r0, sp
|
mov r0, sp
|
||||||
@ -13795,7 +13800,7 @@ _0801DB60:
|
|||||||
sub_801DB68: @ 801DB68
|
sub_801DB68: @ 801DB68
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_801B044
|
bl GetSaveBlock1Field356C
|
||||||
adds r5, r0, 0
|
adds r5, r0, 0
|
||||||
movs r0, 0x3
|
movs r0, 0x3
|
||||||
adds r1, r4, 0
|
adds r1, r4, 0
|
||||||
@ -13841,7 +13846,7 @@ _0801DBB8:
|
|||||||
thumb_func_start sub_801DBC0
|
thumb_func_start sub_801DBC0
|
||||||
sub_801DBC0: @ 801DBC0
|
sub_801DBC0: @ 801DBC0
|
||||||
push {lr}
|
push {lr}
|
||||||
bl sub_801B044
|
bl GetSaveBlock1Field356C
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
strb r1, [r0]
|
strb r1, [r0]
|
||||||
strb r1, [r0, 0x1]
|
strb r1, [r0, 0x1]
|
||||||
@ -13858,7 +13863,7 @@ sub_801DBDC: @ 801DBDC
|
|||||||
ldr r0, =0x0000402e
|
ldr r0, =0x0000402e
|
||||||
bl GetVarPointer
|
bl GetVarPointer
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_801B044
|
bl GetSaveBlock1Field356C
|
||||||
adds r2, r0, 0
|
adds r2, r0, 0
|
||||||
ldr r0, [r2]
|
ldr r0, [r2]
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
@ -13889,7 +13894,7 @@ _0801DC10:
|
|||||||
sub_801DC20: @ 801DC20
|
sub_801DC20: @ 801DC20
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
ldr r6, =gSpecialVar_Result
|
ldr r6, =gSpecialVar_Result
|
||||||
bl sub_801B044
|
bl GetSaveBlock1Field356C
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl IsMysteryEventEnabled
|
bl IsMysteryEventEnabled
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
@ -27181,7 +27186,7 @@ sub_8024700: @ 8024700
|
|||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
bl sub_8024668
|
bl sub_8024668
|
||||||
adds r1, r0, r4
|
adds r1, r0, r4
|
||||||
ldr r2, =0x0001869f
|
ldr r2, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET
|
||||||
cmp r1, r2
|
cmp r1, r2
|
||||||
bhi _08024730
|
bhi _08024730
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
gUnknown_030060B0
|
gUnusedPokedexU8
|
||||||
gUnknown_030060B4
|
gUnknown_030060B4
|
||||||
|
@ -17,7 +17,7 @@ gUnknown_08597530:: @ 8597530
|
|||||||
.4byte 0x0000001b
|
.4byte 0x0000001b
|
||||||
.4byte sub_811A938
|
.4byte sub_811A938
|
||||||
|
|
||||||
gUnknown_08597550:: @ 8597550
|
gEasyChatScreenTemplates:: @ 8597550
|
||||||
.byte 0x00, 0x02, 0x02, 0x00
|
.byte 0x00, 0x02, 0x02, 0x00
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
@ -208,13 +208,20 @@ gUnknown_08597550:: @ 8597550
|
|||||||
.4byte gText_IsAsShownOkay
|
.4byte gText_IsAsShownOkay
|
||||||
|
|
||||||
gUnknown_08597748:: @ 8597748
|
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
|
gUnknown_08597764:: @ 8597764
|
||||||
.2byte 0x0209, 0x140b, 0x1030, 0x102a
|
.2byte 0x0209, 0x140b, 0x1030, 0x102a
|
||||||
|
|
||||||
gUnknown_0859776C:: @ 859776C
|
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
|
.align 2
|
||||||
gUnknown_08597780:: @ 8597780
|
gUnknown_08597780:: @ 8597780
|
||||||
|
@ -940,7 +940,7 @@ EventScript_27149D:: @ 827149D
|
|||||||
setberrytree 82, 36, 5
|
setberrytree 82, 36, 5
|
||||||
return
|
return
|
||||||
|
|
||||||
EventScript_2715DE:: @ 82715DE
|
EventScript_ResetAllMapFlags:: @ 82715DE
|
||||||
setflag FLAG_LINK_CONTEST_POKE_BALL
|
setflag FLAG_LINK_CONTEST_POKE_BALL
|
||||||
setflag FLAG_HIDE_ROUTE_111_VICTORIA_WINSTRATE
|
setflag FLAG_HIDE_ROUTE_111_VICTORIA_WINSTRATE
|
||||||
setflag FLAG_HIDE_ROUTE_111_VIVI_WINSTRATE
|
setflag FLAG_HIDE_ROUTE_111_VIVI_WINSTRATE
|
||||||
|
@ -65,7 +65,7 @@ gFieldEffectScriptPointers:: @ 82DB9D4
|
|||||||
.4byte gFieldEffectScript_Unknown57
|
.4byte gFieldEffectScript_Unknown57
|
||||||
.4byte gFieldEffectScript_Unknown58
|
.4byte gFieldEffectScript_Unknown58
|
||||||
.4byte gFieldEffectScript_FieldMoveShowMonInit
|
.4byte gFieldEffectScript_FieldMoveShowMonInit
|
||||||
.4byte gFieldEffectScript_Unknown60
|
.4byte gFieldEffectScript_UsePuzzleEffect
|
||||||
.4byte gFieldEffectScript_Unknown61
|
.4byte gFieldEffectScript_Unknown61
|
||||||
.4byte gFieldEffectScript_Unknown62
|
.4byte gFieldEffectScript_Unknown62
|
||||||
.4byte gFieldEffectScript_Unknown63
|
.4byte gFieldEffectScript_Unknown63
|
||||||
@ -315,7 +315,7 @@ gFieldEffectScript_FieldMoveShowMonInit:: @ 82DBCCC
|
|||||||
field_eff_callnative FldEff_FieldMoveShowMonInit
|
field_eff_callnative FldEff_FieldMoveShowMonInit
|
||||||
field_eff_end
|
field_eff_end
|
||||||
|
|
||||||
gFieldEffectScript_Unknown60:: @ 82DBCD2
|
gFieldEffectScript_UsePuzzleEffect:: @ 82DBCD2
|
||||||
field_eff_callnative FldEff_UsePuzzleEffect
|
field_eff_callnative FldEff_UsePuzzleEffect
|
||||||
field_eff_end
|
field_eff_end
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ AncientTomb_EventScript_238FEE:: @ 8238FEE
|
|||||||
return
|
return
|
||||||
|
|
||||||
AncientTomb_MapScript1_238FF2: @ 8238FF2
|
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
|
end
|
||||||
|
|
||||||
AncientTomb_EventScript_238FFC:: @ 8238FFC
|
AncientTomb_EventScript_238FFC:: @ 8238FFC
|
||||||
@ -39,7 +39,7 @@ AncientTomb_EventScript_238FFC:: @ 8238FFC
|
|||||||
|
|
||||||
AncientTomb_EventScript_239033:: @ 8239033
|
AncientTomb_EventScript_239033:: @ 8239033
|
||||||
lockall
|
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
|
braillemessage AncientTomb_Braille_2A6D06
|
||||||
waitbuttonpress
|
waitbuttonpress
|
||||||
hidebox2
|
hidebox2
|
||||||
|
@ -16,7 +16,7 @@ DesertRuins_EventScript_22D975:: @ 822D975
|
|||||||
return
|
return
|
||||||
|
|
||||||
DesertRuins_MapScript1_22D989: @ 822D989
|
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
|
end
|
||||||
|
|
||||||
DesertRuins_EventScript_22D993:: @ 822D993
|
DesertRuins_EventScript_22D993:: @ 822D993
|
||||||
@ -39,7 +39,7 @@ DesertRuins_EventScript_22D9D7:: @ 822D9D7
|
|||||||
|
|
||||||
DesertRuins_EventScript_22D9DB:: @ 822D9DB
|
DesertRuins_EventScript_22D9DB:: @ 822D9DB
|
||||||
lockall
|
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
|
braillemessage DesertRuins_Braille_2A6CA0
|
||||||
waitbuttonpress
|
waitbuttonpress
|
||||||
hidebox2
|
hidebox2
|
||||||
|
@ -16,7 +16,7 @@ IslandCave_EventScript_238E44:: @ 8238E44
|
|||||||
return
|
return
|
||||||
|
|
||||||
IslandCave_MapScript1_238E58: @ 8238E58
|
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
|
end
|
||||||
|
|
||||||
IslandCave_EventScript_238E62:: @ 8238E62
|
IslandCave_EventScript_238E62:: @ 8238E62
|
||||||
@ -47,13 +47,13 @@ IslandCave_EventScript_238EAF:: @ 8238EAF
|
|||||||
setmetatile 9, 20, 564, 1
|
setmetatile 9, 20, 564, 1
|
||||||
special DrawWholeMapView
|
special DrawWholeMapView
|
||||||
playse SE_BAN
|
playse SE_BAN
|
||||||
setflag FLAG_SYS_BRAILLE_WAIT
|
setflag FLAG_SYS_BRAILLE_REGICE_COMPLETED
|
||||||
end
|
end
|
||||||
|
|
||||||
IslandCave_EventScript_238EEF:: @ 8238EEF
|
IslandCave_EventScript_238EEF:: @ 8238EEF
|
||||||
lockall
|
lockall
|
||||||
call_if_set FLAG_TEMP_3, IslandCave_EventScript_238F45
|
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
|
braillemessage IslandCave_Braille_2A6CD4
|
||||||
setflag FLAG_TEMP_2
|
setflag FLAG_TEMP_2
|
||||||
special ShouldDoBrailleRegicePuzzle
|
special ShouldDoBrailleRegicePuzzle
|
||||||
@ -69,7 +69,7 @@ IslandCave_EventScript_238F1D:: @ 8238F1D
|
|||||||
lockall
|
lockall
|
||||||
call_if_set FLAG_TEMP_3, IslandCave_EventScript_238F45
|
call_if_set FLAG_TEMP_3, IslandCave_EventScript_238F45
|
||||||
braillemessage IslandCave_Braille_2A6CD4
|
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
|
setflag FLAG_TEMP_2
|
||||||
special ShouldDoBrailleRegicePuzzle
|
special ShouldDoBrailleRegicePuzzle
|
||||||
goto IslandCave_EventScript_238F41
|
goto IslandCave_EventScript_238F41
|
||||||
@ -82,9 +82,9 @@ IslandCave_EventScript_238F41:: @ 8238F41
|
|||||||
end
|
end
|
||||||
|
|
||||||
IslandCave_EventScript_238F45:: @ 8238F45
|
IslandCave_EventScript_238F45:: @ 8238F45
|
||||||
setvar VAR_0x403B, 0
|
setvar VAR_REGICE_STEPS_1, 0
|
||||||
setvar VAR_0x403C, 0
|
setvar VAR_REGICE_STEPS_2, 0
|
||||||
setvar VAR_0x403D, 0
|
setvar VAR_REGICE_STEPS_3, 0
|
||||||
clearflag FLAG_TEMP_3
|
clearflag FLAG_TEMP_3
|
||||||
return
|
return
|
||||||
|
|
||||||
|
156
data/pokenav.s
156
data/pokenav.s
@ -3,162 +3,6 @@
|
|||||||
|
|
||||||
.section .rodata
|
.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
|
gUnknown_0861FA6C:: @ 861FA6C
|
||||||
obj_tiles gPokenavLeftHeaderMainMenu_Gfx, 0x20, 3
|
obj_tiles gPokenavLeftHeaderMainMenu_Gfx, 0x20, 3
|
||||||
obj_tiles gPokenavLeftHeaderCondition_Gfx, 0x20, 1
|
obj_tiles gPokenavLeftHeaderCondition_Gfx, 0x20, 1
|
||||||
|
@ -291,7 +291,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special GetPokeblockNameByMonNature
|
def_special GetPokeblockNameByMonNature
|
||||||
def_special GetSecretBaseNearbyMapName
|
def_special GetSecretBaseNearbyMapName
|
||||||
def_special CheckRelicanthWailord
|
def_special CheckRelicanthWailord
|
||||||
def_special ShouldDoBrailleStrengthEffectOld
|
def_special ShouldDoBrailleRegirockEffectOld
|
||||||
def_special sub_80B0534
|
def_special sub_80B0534
|
||||||
def_special sub_80B058C
|
def_special sub_80B058C
|
||||||
def_special WaitWeather
|
def_special WaitWeather
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#ifndef GUARD_BRAILLE_PUZZLES_H
|
#ifndef GUARD_BRAILLE_PUZZLES_H
|
||||||
#define GUARD_BRAILLE_PUZZLES_H
|
#define GUARD_BRAILLE_PUZZLES_H
|
||||||
|
|
||||||
bool8 ShouldDoBrailleFlyEffect(void);
|
bool8 ShouldDoBrailleRegisteelEffect(void);
|
||||||
bool8 ShouldDoBrailleStrengthEffect(void);
|
bool8 ShouldDoBrailleRegirockEffect(void);
|
||||||
bool8 ShouldDoBrailleDigEffect(void);
|
bool8 ShouldDoBrailleDigEffect(void);
|
||||||
void DoBrailleDigEffect(void);
|
void DoBrailleDigEffect(void);
|
||||||
void sub_8179918(void);
|
void SetUpPuzzleEffectRegisteel(void);
|
||||||
void sub_8179834(void);
|
void SetUpPuzzleEffectRegirock(void);
|
||||||
|
|
||||||
#endif // GUARD_BRAILLE_PUZZLES_H
|
#endif // GUARD_BRAILLE_PUZZLES_H
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
#define FLDEFF_SECRET_POWER_SHRUB 57
|
#define FLDEFF_SECRET_POWER_SHRUB 57
|
||||||
#define FLDEFF_CUT_GRASS 58
|
#define FLDEFF_CUT_GRASS 58
|
||||||
#define FLDEFF_FIELD_MOVE_SHOW_MON_INIT 59
|
#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_PCTURN_ON 61
|
||||||
#define FLDEFF_HALL_OF_FAME_RECORD 62
|
#define FLDEFF_HALL_OF_FAME_RECORD 62
|
||||||
#define FLDEFF_USE_TELEPORT 63
|
#define FLDEFF_USE_TELEPORT 63
|
||||||
|
@ -1352,9 +1352,9 @@
|
|||||||
#define FLAG_SYS_ENC_UP_ITEM (SYSTEM_FLAGS + 0x4D)
|
#define FLAG_SYS_ENC_UP_ITEM (SYSTEM_FLAGS + 0x4D)
|
||||||
#define FLAG_SYS_ENC_DOWN_ITEM (SYSTEM_FLAGS + 0x4E)
|
#define FLAG_SYS_ENC_DOWN_ITEM (SYSTEM_FLAGS + 0x4E)
|
||||||
#define FLAG_SYS_BRAILLE_DIG (SYSTEM_FLAGS + 0x4F)
|
#define FLAG_SYS_BRAILLE_DIG (SYSTEM_FLAGS + 0x4F)
|
||||||
#define FLAG_SYS_BRAILLE_STRENGTH (SYSTEM_FLAGS + 0x50)
|
#define FLAG_SYS_REGIROCK_PUZZLE_COMPLETED (SYSTEM_FLAGS + 0x50)
|
||||||
#define FLAG_SYS_BRAILLE_WAIT (SYSTEM_FLAGS + 0x51)
|
#define FLAG_SYS_BRAILLE_REGICE_COMPLETED (SYSTEM_FLAGS + 0x51)
|
||||||
#define FLAG_SYS_BRAILLE_FLY (SYSTEM_FLAGS + 0x52)
|
#define FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED (SYSTEM_FLAGS + 0x52)
|
||||||
#define FLAG_SYS_HAS_EON_TICKET (SYSTEM_FLAGS + 0x53)
|
#define FLAG_SYS_HAS_EON_TICKET (SYSTEM_FLAGS + 0x53)
|
||||||
|
|
||||||
#define FLAG_LANDMARK_POKEMON_LEAGUE (SYSTEM_FLAGS + 0x54)
|
#define FLAG_LANDMARK_POKEMON_LEAGUE (SYSTEM_FLAGS + 0x54)
|
||||||
|
@ -75,9 +75,9 @@
|
|||||||
#define VAR_0x4038 0x4038
|
#define VAR_0x4038 0x4038
|
||||||
#define VAR_0x4039 0x4039
|
#define VAR_0x4039 0x4039
|
||||||
#define VAR_0x403A 0x403A
|
#define VAR_0x403A 0x403A
|
||||||
#define VAR_0x403B 0x403B
|
#define VAR_REGICE_STEPS_1 0x403B
|
||||||
#define VAR_0x403C 0x403C
|
#define VAR_REGICE_STEPS_2 0x403C
|
||||||
#define VAR_0x403D 0x403D
|
#define VAR_REGICE_STEPS_3 0x403D
|
||||||
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
|
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
|
||||||
#define VAR_0x403F 0x403F
|
#define VAR_0x403F 0x403F
|
||||||
#define VAR_DAYS 0x4040
|
#define VAR_DAYS 0x4040
|
||||||
|
@ -4,5 +4,10 @@
|
|||||||
void sub_80FCC88(u8);
|
void sub_80FCC88(u8);
|
||||||
void sub_80FCC88(u8);
|
void sub_80FCC88(u8);
|
||||||
void sub_80FCACC(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
|
#endif //GUARD_CONTEST_LINK_80FC4F4_H
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
void InitDewfordTrend(void);
|
void InitDewfordTrend(void);
|
||||||
void UpdateDewfordTrendPerDay(u16);
|
void UpdateDewfordTrendPerDay(u16);
|
||||||
void UpdateDewfordTrendPerDay(u16 days);
|
void UpdateDewfordTrendPerDay(u16 days);
|
||||||
|
bool8 sub_81226D8(u16 *a);
|
||||||
|
|
||||||
#endif // GUARD_DEWFORDTREND_H
|
#endif // GUARD_DEWFORDTREND_H
|
||||||
|
@ -25,5 +25,7 @@ void UpdateFrontierManiac(u16 a0);
|
|||||||
void UpdateFrontierGambler(u16 a0);
|
void UpdateFrontierGambler(u16 a0);
|
||||||
void ResetCyclingRoadChallengeData(void);
|
void ResetCyclingRoadChallengeData(void);
|
||||||
bool8 warp0_in_pokecenter(void);
|
bool8 warp0_in_pokecenter(void);
|
||||||
|
void ResetFanClub(void);
|
||||||
|
|
||||||
|
|
||||||
#endif // GUARD_FIELD_SPECIALS_H
|
#endif // GUARD_FIELD_SPECIALS_H
|
||||||
|
@ -376,7 +376,7 @@ struct BattleFrontier
|
|||||||
/*0xEBC*/ u32 battlesCount;
|
/*0xEBC*/ u32 battlesCount;
|
||||||
/*0xEC0*/ u16 field_EC0[16];
|
/*0xEC0*/ u16 field_EC0[16];
|
||||||
/*0xEE0*/ u8 field_EE0;
|
/*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];
|
/*0xEF1*/ u8 field_EF1[2][4];
|
||||||
/*0xEF9*/ u8 field_EF9_0:7;
|
/*0xEF9*/ u8 field_EF9_0:7;
|
||||||
/*0xEF9*/ u8 field_EF9_1:1;
|
/*0xEF9*/ u8 field_EF9_1:1;
|
||||||
@ -446,7 +446,7 @@ struct SaveBlock2
|
|||||||
/*0x90*/ u8 filler_90[0x8];
|
/*0x90*/ u8 filler_90[0x8];
|
||||||
/*0x98*/ struct Time localTimeOffset;
|
/*0x98*/ struct Time localTimeOffset;
|
||||||
/*0xA0*/ struct Time lastBerryTreeUpdate;
|
/*0xA0*/ struct Time lastBerryTreeUpdate;
|
||||||
/*0xA8*/ u32 field_A8;
|
/*0xA8*/ u32 field_A8; // Written to, but never read.
|
||||||
/*0xAC*/ u32 encryptionKey;
|
/*0xAC*/ u32 encryptionKey;
|
||||||
/*0xB0*/ struct PlayersApprentice playerApprentice;
|
/*0xB0*/ struct PlayersApprentice playerApprentice;
|
||||||
/*0xDC*/ struct Apprentice apprentices[4]; // From record mixing.
|
/*0xDC*/ struct Apprentice apprentices[4]; // From record mixing.
|
||||||
@ -787,7 +787,7 @@ struct WaldaPhrase
|
|||||||
bool8 patternUnlocked;
|
bool8 patternUnlocked;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkSaveSubstruct_3b98
|
struct TrainerNameRecord
|
||||||
{
|
{
|
||||||
u32 trainerId;
|
u32 trainerId;
|
||||||
u8 trainerName[PLAYER_NAME_LENGTH + 1];
|
u8 trainerName[PLAYER_NAME_LENGTH + 1];
|
||||||
@ -891,7 +891,7 @@ struct SaveBlock1
|
|||||||
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
|
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
|
||||||
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
|
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
|
||||||
/*0x3B58*/ LilycoveLady lilycoveLady;
|
/*0x3B58*/ LilycoveLady lilycoveLady;
|
||||||
/*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20];
|
/*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20];
|
||||||
/*0x3C88*/ u8 filler_3C88[0xDC];
|
/*0x3C88*/ u8 filler_3C88[0xDC];
|
||||||
/*0x3D64*/ struct SaveTrainerHill trainerHill;
|
/*0x3D64*/ struct SaveTrainerHill trainerHill;
|
||||||
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
|
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
|
||||||
|
@ -4007,9 +4007,17 @@ extern const u32 gBerryPalette_Enigma[];
|
|||||||
//credits
|
//credits
|
||||||
extern const u32 gCreditsCopyrightEnd_Gfx[];
|
extern const u32 gCreditsCopyrightEnd_Gfx[];
|
||||||
|
|
||||||
//pokenav condition marker
|
//pokenav
|
||||||
extern const u8 gPokenavConditionMarker_Gfx[];
|
extern const u8 gPokenavConditionMarker_Gfx[];
|
||||||
extern const u16 gPokenavConditionMarker_Pal[];
|
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_08D9862C[];
|
||||||
extern const u32 gUnknown_08D98CC8[];
|
extern const u32 gUnknown_08D98CC8[];
|
||||||
|
@ -79,5 +79,7 @@ bool8 UseRegisteredKeyItemOnField(void);
|
|||||||
void CB2_GoToSellMenu(void);
|
void CB2_GoToSellMenu(void);
|
||||||
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
|
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
|
||||||
void DoWallyTutorialBagMenu(void);
|
void DoWallyTutorialBagMenu(void);
|
||||||
|
void ResetBagScrollPositions(void);
|
||||||
|
|
||||||
|
|
||||||
#endif //GUARD_item_menu_H
|
#endif //GUARD_item_menu_H
|
||||||
|
@ -305,7 +305,7 @@ void sub_8009FAC(void);
|
|||||||
bool8 sub_800A4D8(u8 a0);
|
bool8 sub_800A4D8(u8 a0);
|
||||||
u8 sub_800A9D8(void);
|
u8 sub_800A9D8(void);
|
||||||
u8 sub_800A0C8(s32, s32);
|
u8 sub_800A0C8(s32, s32);
|
||||||
u16 *sub_801B058(void);
|
u16 *GetSaveBlock1Field3564(void);
|
||||||
u8 sub_800A9A8(void);
|
u8 sub_800A9A8(void);
|
||||||
void sub_800AD10(void);
|
void sub_800AD10(void);
|
||||||
void sub_800AB18(void);
|
void sub_800AB18(void);
|
||||||
|
@ -213,6 +213,7 @@ extern struct UnkRfuStruct_2 gUnknown_03005000;
|
|||||||
extern u8 gWirelessStatusIndicatorSpriteId;
|
extern u8 gWirelessStatusIndicatorSpriteId;
|
||||||
|
|
||||||
// Exported ROM declarations
|
// Exported ROM declarations
|
||||||
|
void WipeTrainerNameRecords(void);
|
||||||
u32 sub_800BEC0(void);
|
u32 sub_800BEC0(void);
|
||||||
void sub_800E700(void);
|
void sub_800E700(void);
|
||||||
void sub_800EDD4(void);
|
void sub_800EDD4(void);
|
||||||
@ -263,7 +264,7 @@ void sub_800E084(void);
|
|||||||
void sub_801103C(void);
|
void sub_801103C(void);
|
||||||
void sub_8011C5C(void);
|
void sub_8011C5C(void);
|
||||||
void sub_80106D4(void);
|
void sub_80106D4(void);
|
||||||
void sub_800E3A8(void);
|
void RecordMixTrainerNames(void);
|
||||||
void sub_800ED10(void);
|
void sub_800ED10(void);
|
||||||
void sub_800ED28(void);
|
void sub_800ED28(void);
|
||||||
void sub_8011090(u8 a0, u32 a1, u32 a2);
|
void sub_8011090(u8 a0, u32 a1, u32 a2);
|
||||||
|
@ -68,5 +68,7 @@ void ClearPokemonCrySongs(void);
|
|||||||
void RestoreSerialTimer3IntrHandlers(void);
|
void RestoreSerialTimer3IntrHandlers(void);
|
||||||
void StartTimer1(void);
|
void StartTimer1(void);
|
||||||
void SeedRngAndSetTrainerId(void);
|
void SeedRngAndSetTrainerId(void);
|
||||||
|
extern u16 GetGeneratedTrainerIdLower(void);
|
||||||
|
|
||||||
|
|
||||||
#endif // GUARD_MAIN_H
|
#endif // GUARD_MAIN_H
|
||||||
|
@ -85,5 +85,7 @@ extern const struct MenuAction gMailboxMailOptions[];
|
|||||||
void ReshowPlayerPC(u8 taskId);
|
void ReshowPlayerPC(u8 taskId);
|
||||||
void sub_816B31C(void);
|
void sub_816B31C(void);
|
||||||
void Mailbox_ReturnToMailListAfterDeposit(void);
|
void Mailbox_ReturnToMailListAfterDeposit(void);
|
||||||
|
void NewGameInitPCItems(void);
|
||||||
|
|
||||||
|
|
||||||
#endif //GUARD_PLAYER_PC_H
|
#endif //GUARD_PLAYER_PC_H
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef GUARD_POKEDEX_H
|
#ifndef GUARD_POKEDEX_H
|
||||||
#define GUARD_POKEDEX_H
|
#define GUARD_POKEDEX_H
|
||||||
|
|
||||||
extern u8 gUnknown_030060B0;
|
extern u8 gUnusedPokedexU8;
|
||||||
extern void (*gUnknown_030060B4)(void);
|
extern void (*gUnknown_030060B4)(void);
|
||||||
|
|
||||||
#define HOENN_DEX_COUNT 202
|
#define HOENN_DEX_COUNT 202
|
||||||
@ -42,5 +42,6 @@ u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
|
|||||||
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
|
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
|
||||||
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
|
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
|
||||||
bool16 HasAllHoennMons(void);
|
bool16 HasAllHoennMons(void);
|
||||||
|
void ResetPokedexScrollPositions(void);
|
||||||
|
|
||||||
#endif // GUARD_POKEDEX_H
|
#endif // GUARD_POKEDEX_H
|
||||||
|
@ -24,6 +24,7 @@ void sub_80EBB28(void);
|
|||||||
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events);
|
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events);
|
||||||
bool8 sub_80E909C(void);
|
bool8 sub_80E909C(void);
|
||||||
void sub_80EB218(void);
|
void sub_80EB218(void);
|
||||||
|
void ResetSecretBases(void);
|
||||||
|
|
||||||
// SetCurrentSecretBaseFromPosition
|
// SetCurrentSecretBaseFromPosition
|
||||||
void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
|
void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
|
||||||
@ -33,4 +34,5 @@ void sub_80E8BC8(void);
|
|||||||
void sub_80E8D4C(void);
|
void sub_80E8D4C(void);
|
||||||
void EnableBothScriptContexts(void);
|
void EnableBothScriptContexts(void);
|
||||||
|
|
||||||
|
|
||||||
#endif //GUARD_SECRET_BASE_H
|
#endif //GUARD_SECRET_BASE_H
|
||||||
|
@ -986,6 +986,19 @@ extern const u8 gText_SomeonesPC[];
|
|||||||
extern const u8 gText_PlayersPC[];
|
extern const u8 gText_PlayersPC[];
|
||||||
extern const u8 gText_WhichPCShouldBeAccessed[];
|
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_085EAD37[];
|
||||||
extern const u8 gUnknown_085EAD41[];
|
extern const u8 gUnknown_085EAD41[];
|
||||||
extern const u8 gUnknown_085EAD67[];
|
extern const u8 gUnknown_085EAD67[];
|
||||||
@ -2400,5 +2413,14 @@ extern const u8 gUnknown_085EDC45[];
|
|||||||
extern const u8 gUnknown_085EDB00[];
|
extern const u8 gUnknown_085EDB00[];
|
||||||
extern const u8 gUnknown_085EDC84[];
|
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
|
#endif // GUARD_STRINGS_H
|
||||||
|
@ -61,5 +61,6 @@ void ContestLiveUpdates_BeforeInterview_2(u8 a0);
|
|||||||
void ContestLiveUpdates_BeforeInterview_3(u8 a0);
|
void ContestLiveUpdates_BeforeInterview_3(u8 a0);
|
||||||
void ContestLiveUpdates_BeforeInterview_4(u16 a0);
|
void ContestLiveUpdates_BeforeInterview_4(u16 a0);
|
||||||
void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
|
void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
|
||||||
|
void ResetGabbyAndTy(void);
|
||||||
|
|
||||||
#endif //GUARD_TV_H
|
#endif //GUARD_TV_H
|
||||||
|
@ -147,7 +147,6 @@ SECTIONS {
|
|||||||
src/secret_base.o(.text);
|
src/secret_base.o(.text);
|
||||||
src/tv.o(.text);
|
src/tv.o(.text);
|
||||||
src/contest_link_80F57C4.o(.text);
|
src/contest_link_80F57C4.o(.text);
|
||||||
asm/contest_link_80F57C4.o(.text);
|
|
||||||
src/script_pokemon_util_80F87D8.o(.text);
|
src/script_pokemon_util_80F87D8.o(.text);
|
||||||
src/field_poison.o(.text);
|
src/field_poison.o(.text);
|
||||||
src/pokemon_size_record.o(.text);
|
src/pokemon_size_record.o(.text);
|
||||||
@ -165,6 +164,7 @@ SECTIONS {
|
|||||||
src/ice.o(.text);
|
src/ice.o(.text);
|
||||||
src/fight.o(.text);
|
src/fight.o(.text);
|
||||||
src/poison.o(.text);
|
src/poison.o(.text);
|
||||||
|
src/flying.o(.text);
|
||||||
asm/flying.o(.text);
|
asm/flying.o(.text);
|
||||||
src/psychic.o(.text);
|
src/psychic.o(.text);
|
||||||
src/bug.o(.text);
|
src/bug.o(.text);
|
||||||
@ -289,6 +289,7 @@ SECTIONS {
|
|||||||
src/pokemon_summary_screen.o(.text);
|
src/pokemon_summary_screen.o(.text);
|
||||||
src/unk_pokedex_area_screen_helper.o(.text);
|
src/unk_pokedex_area_screen_helper.o(.text);
|
||||||
src/battle_pyramid_bag.o(.text);
|
src/battle_pyramid_bag.o(.text);
|
||||||
|
src/pokenav.o(.text);
|
||||||
asm/pokenav.o(.text);
|
asm/pokenav.o(.text);
|
||||||
src/pokenav_match_call.o(.text);
|
src/pokenav_match_call.o(.text);
|
||||||
asm/rom_81D1C44.o(.text);
|
asm/rom_81D1C44.o(.text);
|
||||||
@ -591,6 +592,7 @@ SECTIONS {
|
|||||||
src/pokemon_summary_screen.o(.rodata);
|
src/pokemon_summary_screen.o(.rodata);
|
||||||
src/unk_pokedex_area_screen_helper.o(.rodata);
|
src/unk_pokedex_area_screen_helper.o(.rodata);
|
||||||
src/battle_pyramid_bag.o(.rodata);
|
src/battle_pyramid_bag.o(.rodata);
|
||||||
|
src/pokenav.o(.rodata);
|
||||||
data/pokenav.o(.rodata);
|
data/pokenav.o(.rodata);
|
||||||
src/pokenav_match_call.o(.rodata);
|
src/pokenav_match_call.o(.rodata);
|
||||||
data/rom_81D1C44.o(.rodata);
|
data/rom_81D1C44.o(.rodata);
|
||||||
|
@ -10,21 +10,20 @@
|
|||||||
#include "constants/maps.h"
|
#include "constants/maps.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
#include "constants/species.h"
|
#include "constants/species.h"
|
||||||
|
#include "fieldmap.h"
|
||||||
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
|
#include "party_menu.h"
|
||||||
extern u8 GetCursorSelectionMonId(void);
|
#include "fldeff.h"
|
||||||
extern u8 oei_task_add(void);
|
|
||||||
|
|
||||||
// why do this, GF?
|
// why do this, GF?
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
STRENGTH_PUZZLE,
|
REGIROCK_PUZZLE,
|
||||||
FLY_PUZZLE
|
REGISTEEL_PUZZLE
|
||||||
};
|
};
|
||||||
|
|
||||||
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
|
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
|
||||||
|
|
||||||
static const u8 gUnknown_085EFE74[][2] =
|
static const u8 gRegicePathCoords[][2] =
|
||||||
{
|
{
|
||||||
{0x04, 0x15},
|
{0x04, 0x15},
|
||||||
{0x05, 0x15},
|
{0x05, 0x15},
|
||||||
@ -65,14 +64,14 @@ static const u8 gUnknown_085EFE74[][2] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
void SealedChamberShakingEffect(u8);
|
void SealedChamberShakingEffect(u8);
|
||||||
void sub_8179860(void);
|
void DoBrailleRegirockEffect(void);
|
||||||
void sub_8179944(void);
|
void DoBrailleRegisteelEffect(void);
|
||||||
|
|
||||||
bool8 ShouldDoBrailleDigEffect(void)
|
bool8 ShouldDoBrailleDigEffect(void)
|
||||||
{
|
{
|
||||||
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
|
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
|
||||||
&& (gSaveBlock1Ptr->location.mapGroup == 0x18
|
&& (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM)
|
||||||
&& gSaveBlock1Ptr->location.mapNum == 0x47))
|
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM)))
|
||||||
{
|
{
|
||||||
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
|
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -87,12 +86,12 @@ bool8 ShouldDoBrailleDigEffect(void)
|
|||||||
|
|
||||||
void DoBrailleDigEffect(void)
|
void DoBrailleDigEffect(void)
|
||||||
{
|
{
|
||||||
MapGridSetMetatileIdAt(16, 8, 554);
|
MapGridSetMetatileIdAt(16, 8, 0x22A);
|
||||||
MapGridSetMetatileIdAt(17, 8, 555);
|
MapGridSetMetatileIdAt(17, 8, 0x22B);
|
||||||
MapGridSetMetatileIdAt(18, 8, 556);
|
MapGridSetMetatileIdAt(18, 8, 0x22C);
|
||||||
MapGridSetMetatileIdAt(16, 9, 3634);
|
MapGridSetMetatileIdAt(16, 9, 0xE32);
|
||||||
MapGridSetMetatileIdAt(17, 9, 563);
|
MapGridSetMetatileIdAt(17, 9, 0x233);
|
||||||
MapGridSetMetatileIdAt(18, 9, 3636);
|
MapGridSetMetatileIdAt(18, 9, 0xE34);
|
||||||
DrawWholeMapView();
|
DrawWholeMapView();
|
||||||
PlaySE(SE_BAN);
|
PlaySE(SE_BAN);
|
||||||
FlagSet(FLAG_SYS_BRAILLE_DIG);
|
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.
|
// 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.
|
// 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)
|
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -131,7 +130,7 @@ void ShouldDoBrailleStrengthEffectOld(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoBrailleStrengthEffect(void)
|
void DoBrailleRegirockEffect(void)
|
||||||
{
|
{
|
||||||
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
|
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
|
||||||
MapGridSetMetatileIdAt(14, 26, 554);
|
MapGridSetMetatileIdAt(14, 26, 554);
|
||||||
@ -142,13 +141,13 @@ void DoBrailleStrengthEffect(void)
|
|||||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||||
DrawWholeMapView();
|
DrawWholeMapView();
|
||||||
PlaySE(SE_BAN);
|
PlaySE(SE_BAN);
|
||||||
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
|
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
|
||||||
ScriptContext2_Disable();
|
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)
|
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -157,24 +156,24 @@ bool8 ShouldDoBrailleFlyEffect(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoBrailleFlyEffect(void)
|
void DoBrailleRegisteelEffect(void)
|
||||||
{
|
{
|
||||||
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
|
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
|
||||||
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 FldEff_UseFlyAncientTomb(void)
|
bool8 FldEff_UseFlyAncientTomb(void)
|
||||||
{
|
{
|
||||||
u8 taskId = oei_task_add();
|
u8 taskId = oei_task_add();
|
||||||
|
|
||||||
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
|
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
|
||||||
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
|
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UseFlyAncientTomb_Callback(void)
|
void UseRegisteelHm_Callback(void)
|
||||||
{
|
{
|
||||||
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||||
UseFlyAncientTomb_Finish();
|
UseFlyAncientTomb_Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +187,7 @@ void UseFlyAncientTomb_Finish(void)
|
|||||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||||
DrawWholeMapView();
|
DrawWholeMapView();
|
||||||
PlaySE(SE_BAN);
|
PlaySE(SE_BAN);
|
||||||
FlagSet(FLAG_SYS_BRAILLE_FLY);
|
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
|
||||||
ScriptContext2_Disable();
|
ScriptContext2_Disable();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -240,25 +239,25 @@ void SealedChamberShakingEffect(u8 taskId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// moved later in the function because it was rewritten.
|
// 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.mapGroup == MAP_GROUP(DESERT_RUINS)
|
||||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
|
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
|
||||||
{
|
{
|
||||||
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
|
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
|
||||||
{
|
{
|
||||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
|
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
|
||||||
{
|
{
|
||||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
|
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
|
||||||
{
|
{
|
||||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -266,65 +265,68 @@ bool8 ShouldDoBrailleStrengthEffect(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8179834(void)
|
void SetUpPuzzleEffectRegirock(void)
|
||||||
{
|
{
|
||||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
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);
|
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||||
sub_8179860();
|
DoBrailleRegirockEffect();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8179860(void)
|
void DoBrailleRegirockEffect(void)
|
||||||
{
|
{
|
||||||
MapGridSetMetatileIdAt(14, 26, 554);
|
MapGridSetMetatileIdAt(14, 26, 0x22A);
|
||||||
MapGridSetMetatileIdAt(15, 26, 555);
|
MapGridSetMetatileIdAt(15, 26, 0x22B);
|
||||||
MapGridSetMetatileIdAt(16, 26, 556);
|
MapGridSetMetatileIdAt(16, 26, 0x22C);
|
||||||
MapGridSetMetatileIdAt(14, 27, 3634);
|
MapGridSetMetatileIdAt(14, 27, 0xE32);
|
||||||
MapGridSetMetatileIdAt(15, 27, 563);
|
MapGridSetMetatileIdAt(15, 27, 0x233);
|
||||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
MapGridSetMetatileIdAt(16, 27, 0xE34);
|
||||||
DrawWholeMapView();
|
DrawWholeMapView();
|
||||||
PlaySE(SE_BAN);
|
PlaySE(SE_BAN);
|
||||||
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
|
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
|
||||||
ScriptContext2_Disable();
|
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)
|
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
|
||||||
{ sBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
|
{
|
||||||
|
sBraillePuzzleCallbackFlag = REGISTEEL_PUZZLE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8179918(void)
|
void SetUpPuzzleEffectRegisteel(void)
|
||||||
{
|
{
|
||||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
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);
|
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||||
sub_8179944();
|
DoBrailleRegisteelEffect();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8179944(void)
|
void DoBrailleRegisteelEffect(void)
|
||||||
{
|
{
|
||||||
MapGridSetMetatileIdAt(14, 26, 554);
|
MapGridSetMetatileIdAt(14, 26, 0x22A);
|
||||||
MapGridSetMetatileIdAt(15, 26, 555);
|
MapGridSetMetatileIdAt(15, 26, 0x22B);
|
||||||
MapGridSetMetatileIdAt(16, 26, 556);
|
MapGridSetMetatileIdAt(16, 26, 0x22C);
|
||||||
MapGridSetMetatileIdAt(14, 27, 3634);
|
MapGridSetMetatileIdAt(14, 27, 0xE32);
|
||||||
MapGridSetMetatileIdAt(15, 27, 563);
|
MapGridSetMetatileIdAt(15, 27, 0x233);
|
||||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
MapGridSetMetatileIdAt(16, 27, 0xE34);
|
||||||
DrawWholeMapView();
|
DrawWholeMapView();
|
||||||
PlaySE(SE_BAN);
|
PlaySE(SE_BAN);
|
||||||
FlagSet(FLAG_SYS_BRAILLE_FLY);
|
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
|
||||||
ScriptContext2_Disable();
|
ScriptContext2_Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,7 +334,7 @@ void sub_8179944(void)
|
|||||||
void DoBrailleWait(void)
|
void DoBrailleWait(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
if (!FlagGet(FLAG_SYS_BRAILLE_WAIT))
|
if (!FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
|
||||||
CreateTask(Task_BrailleWait, 0x50);
|
CreateTask(Task_BrailleWait, 0x50);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,15 +412,15 @@ bool8 FldEff_UsePuzzleEffect(void)
|
|||||||
{
|
{
|
||||||
u8 taskId = oei_task_add();
|
u8 taskId = oei_task_add();
|
||||||
|
|
||||||
if (sBraillePuzzleCallbackFlag == FLY_PUZZLE)
|
if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
|
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
|
||||||
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
|
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16;
|
gTasks[taskId].data[8] = (u32)UseRegirockHm_Callback >> 16;
|
||||||
gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback;
|
gTasks[taskId].data[9] = (u32)UseRegirockHm_Callback;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -427,10 +429,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
|
|||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
if (gSaveBlock1Ptr->location.mapGroup == 0x18
|
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ISLAND_CAVE)
|
||||||
&& gSaveBlock1Ptr->location.mapNum == 0x43)
|
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(ISLAND_CAVE))
|
||||||
{
|
{
|
||||||
if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE)
|
if (FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (FlagGet(FLAG_TEMP_2) == FALSE)
|
if (FlagGet(FLAG_TEMP_2) == FALSE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -439,35 +441,36 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
|
|||||||
|
|
||||||
for (i = 0; i < 36; i++)
|
for (i = 0; i < 36; i++)
|
||||||
{
|
{
|
||||||
u8 xPos = gUnknown_085EFE74[i][0];
|
u8 xPos = gRegicePathCoords[i][0];
|
||||||
u8 yPos = gUnknown_085EFE74[i][1];
|
u8 yPos = gRegicePathCoords[i][1];
|
||||||
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
|
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
|
||||||
{
|
{
|
||||||
u16 varValue;
|
u16 varValue;
|
||||||
|
|
||||||
if (i < 16)
|
if (i < 16)
|
||||||
{
|
{
|
||||||
u16 val = VarGet(VAR_0x403B);
|
u16 val = VarGet(VAR_REGICE_STEPS_1);
|
||||||
val |= 1 << i;
|
val |= 1 << i;
|
||||||
VarSet(VAR_0x403B, val);
|
VarSet(VAR_REGICE_STEPS_1, val);
|
||||||
}
|
}
|
||||||
else if (i < 32)
|
else if (i < 32)
|
||||||
{
|
{
|
||||||
u16 val = VarGet(VAR_0x403C);
|
u16 val = VarGet(VAR_REGICE_STEPS_2);
|
||||||
val |= 1 << (i - 16);
|
val |= 1 << (i - 16);
|
||||||
VarSet(VAR_0x403C, val);
|
VarSet(VAR_REGICE_STEPS_2, val);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u16 val = VarGet(VAR_0x403D);
|
u16 val = VarGet(VAR_REGICE_STEPS_3);
|
||||||
val |= 1 << (i - 32);
|
val |= 1 << (i - 32);
|
||||||
VarSet(VAR_0x403D, val);
|
VarSet(VAR_REGICE_STEPS_3, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
varValue = VarGet(VAR_0x403B);
|
varValue = VarGet(VAR_REGICE_STEPS_1);
|
||||||
if (varValue != 0xFFFF || VarGet(VAR_0x403C) != varValue || VarGet(VAR_0x403D) != 0xF)
|
if (varValue != 0xFFFF || VarGet(VAR_REGICE_STEPS_2) != 0xFFFF || VarGet(VAR_REGICE_STEPS_3) != 0xF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
// This final check is redundant.
|
||||||
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
|
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
else
|
||||||
|
File diff suppressed because it is too large
Load Diff
2056
src/easy_chat.c
2056
src/easy_chat.c
File diff suppressed because it is too large
Load Diff
@ -28,8 +28,6 @@ EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
|
|||||||
|
|
||||||
extern u16 *const gSpecialVars[];
|
extern u16 *const gSpecialVars[];
|
||||||
|
|
||||||
extern void sub_80BB358(void);
|
|
||||||
|
|
||||||
void InitEventData(void)
|
void InitEventData(void)
|
||||||
{
|
{
|
||||||
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
|
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
|
||||||
@ -69,7 +67,7 @@ void EnableNationalPokedex(void)
|
|||||||
FlagSet(FLAG_SYS_NATIONAL_DEX);
|
FlagSet(FLAG_SYS_NATIONAL_DEX);
|
||||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
|
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
|
||||||
gSaveBlock2Ptr->pokedex.order = 0;
|
gSaveBlock2Ptr->pokedex.order = 0;
|
||||||
sub_80BB358();
|
ResetPokedexScrollPositions();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool32 IsNationalPokedexEnabled(void)
|
bool32 IsNationalPokedexEnabled(void)
|
||||||
|
@ -74,11 +74,13 @@ static const u32 gCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transit
|
|||||||
// text
|
// text
|
||||||
bool8 SetUpFieldMove_Flash(void)
|
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();
|
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||||
gPostMenuFieldCallback = sub_8179918;
|
gPostMenuFieldCallback = SetUpPuzzleEffectRegisteel;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
|
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
|
||||||
|
@ -119,11 +119,13 @@ static void sub_813561C(u8 taskId)
|
|||||||
|
|
||||||
bool8 SetUpFieldMove_RockSmash(void)
|
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();
|
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||||
gPostMenuFieldCallback = sub_8179834;
|
gPostMenuFieldCallback = SetUpPuzzleEffectRegirock;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
|
else if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
|
||||||
|
312
src/flying.c
312
src/flying.c
@ -1,13 +1,16 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "battle_anim.h"
|
#include "battle_anim.h"
|
||||||
|
#include "palette.h"
|
||||||
|
#include "trig.h"
|
||||||
|
#include "constants/battle_anim.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
extern void sub_810DE70(struct Sprite *);
|
void sub_810DE70(struct Sprite *);
|
||||||
extern void sub_810DFA8(struct Sprite *);
|
void sub_810DFA8(struct Sprite *);
|
||||||
extern void sub_810E044(struct Sprite *);
|
void sub_810E044(struct Sprite *);
|
||||||
extern void sub_810E13C(struct Sprite *);
|
void sub_810E13C(struct Sprite *);
|
||||||
extern void sub_810E1C8(struct Sprite *);
|
void sub_810E1C8(struct Sprite *);
|
||||||
extern void sub_810E314(struct Sprite *);
|
void sub_810E314(struct Sprite *);
|
||||||
extern void sub_810EA4C(struct Sprite *);
|
extern void sub_810EA4C(struct Sprite *);
|
||||||
extern void sub_810EAA0(struct Sprite *);
|
extern void sub_810EAA0(struct Sprite *);
|
||||||
extern void sub_810EC34(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_810F004(struct Sprite *);
|
||||||
extern void sub_810F084(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 =
|
const struct SpriteTemplate gUnknown_08596270 =
|
||||||
{
|
{
|
||||||
.tileTag = ANIM_TAG_GUST,
|
.tileTag = ANIM_TAG_GUST,
|
||||||
@ -326,3 +336,293 @@ const struct SpriteTemplate gUnknown_08596514 =
|
|||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = sub_810F084,
|
.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;
|
||||||
|
}
|
||||||
|
@ -1528,7 +1528,7 @@ static void ShowLinkContestResultsWindow(void)
|
|||||||
|
|
||||||
static void sub_81A31FC(void)
|
static void sub_81A31FC(void)
|
||||||
{
|
{
|
||||||
u8 text[32];
|
u8 name[32];
|
||||||
s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||||
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
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];
|
gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
|
||||||
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
|
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
|
||||||
{
|
{
|
||||||
StringCopy(text, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
|
StringCopy(name, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
|
||||||
StripExtCtrlCodes(text);
|
StripExtCtrlCodes(name);
|
||||||
StringCopy(gSaveBlock2Ptr->frontier.field_EE1[lvlMode], text);
|
StringCopy(gSaveBlock2Ptr->frontier.opponentName[lvlMode], name);
|
||||||
SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
|
SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
|
||||||
}
|
}
|
||||||
if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1
|
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);
|
AddTextPrinterParameterized(gRecordsWindowId, 1, gLevelModeText[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
|
||||||
if (hallFacilityId == HALL_FACILITIES_COUNT)
|
if (hallFacilityId == HALL_FACILITIES_COUNT)
|
||||||
{
|
{
|
||||||
gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS;
|
gSaveBlock2Ptr->frontier.opponentName[0][PLAYER_NAME_LENGTH] = EOS;
|
||||||
gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS;
|
gSaveBlock2Ptr->frontier.opponentName[1][PLAYER_NAME_LENGTH] = EOS;
|
||||||
Fill2PRecords(records2P, lvlMode);
|
Fill2PRecords(records2P, lvlMode);
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
Print2PRecord(i, 1, 4, &records2P[i]);
|
Print2PRecord(i, 1, 4, &records2P[i]);
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include "constants/species.h"
|
#include "constants/species.h"
|
||||||
|
#include "save.h"
|
||||||
|
|
||||||
extern u16 gHeldKeyCodeToSend;
|
extern u16 gHeldKeyCodeToSend;
|
||||||
extern void nullsub_89(u8 taskId);
|
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;
|
dest->trainerId = trainerId;
|
||||||
StringCopy(dest->trainerName, name);
|
StringCopy(dest->trainerName, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool32 sub_800E388(const u8 *name)
|
bool32 NameIsNotEmpty(const u8 *name)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||||
{
|
{
|
||||||
if (name[i] != 0)
|
if (name[i] != 0)
|
||||||
{
|
{
|
||||||
@ -2367,52 +2368,64 @@ bool32 sub_800E388(const u8 *name)
|
|||||||
return FALSE;
|
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)
|
if (gWirelessCommType != 0)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
s32 j;
|
s32 j;
|
||||||
s32 cnt;
|
s32 nextSpace;
|
||||||
s32 sp0[5];
|
s32 connectedTrainerRecordIndices[5];
|
||||||
struct UnkSaveSubstruct_3b98 *sp14 = calloc(20, sizeof(struct UnkSaveSubstruct_3b98));
|
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++)
|
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||||
{
|
{
|
||||||
sp0[i] = -1;
|
connectedTrainerRecordIndices[i] = -1;
|
||||||
for (j = 0; j < 20; j++)
|
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++)
|
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||||
{
|
{
|
||||||
if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
|
if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
|
||||||
{
|
{
|
||||||
sub_800E378(&sp14[cnt], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
|
CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
|
||||||
if (sp0[i] >= 0)
|
|
||||||
|
// 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++)
|
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);
|
CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName);
|
||||||
if (++cnt >= 20)
|
if (++nextSpace >= 20)
|
||||||
{
|
{
|
||||||
break;
|
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++)
|
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;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (!sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
|
if (!NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -2434,14 +2447,14 @@ bool32 sub_800E540(u16 id, u8 *name)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_800E5AC(void)
|
void WipeTrainerNameRecords(void)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < 20; i++)
|
for (i = 0; i < 20; i++)
|
||||||
{
|
{
|
||||||
gSaveBlock1Ptr->unk_3B98[i].trainerId = 0;
|
gSaveBlock1Ptr->trainerNameRecords[i].trainerId = 0;
|
||||||
CpuFill16(0, gSaveBlock1Ptr->unk_3B98[i].trainerName, 8);
|
CpuFill16(0, gSaveBlock1Ptr->trainerNameRecords[i].trainerName, 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,31 +30,25 @@
|
|||||||
#include "apprentice.h"
|
#include "apprentice.h"
|
||||||
#include "frontier_util.h"
|
#include "frontier_util.h"
|
||||||
#include "constants/maps.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 copy_strings_to_sav1(void);
|
||||||
extern void sub_801AFD8(void);
|
extern void sub_801AFD8(void);
|
||||||
extern void sub_800E5AC(void);
|
|
||||||
extern void ResetContestLinkResults(void);
|
|
||||||
extern void ResetPokeJumpResults(void);
|
extern void ResetPokeJumpResults(void);
|
||||||
extern void SetBerryPowder(u32* powder, u32 newValue);
|
extern void SetBerryPowder(u32* powder, u32 newValue);
|
||||||
|
|
||||||
extern const u8 EventScript_2715DE[];
|
extern const u8 EventScript_ResetAllMapFlags[];
|
||||||
|
|
||||||
// this file's functions
|
// this file's functions
|
||||||
static void ClearFrontierRecord(void);
|
static void ClearFrontierRecord(void);
|
||||||
@ -112,7 +106,7 @@ static void SetDefaultOptions(void)
|
|||||||
|
|
||||||
static void ClearPokedexFlags(void)
|
static void ClearPokedexFlags(void)
|
||||||
{
|
{
|
||||||
gUnknown_030060B0 = 0;
|
gUnusedPokedexU8 = 0;
|
||||||
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
||||||
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
||||||
}
|
}
|
||||||
@ -130,8 +124,8 @@ static void ClearFrontierRecord(void)
|
|||||||
{
|
{
|
||||||
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
||||||
|
|
||||||
gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
|
gSaveBlock2Ptr->frontier.opponentName[0][0] = EOS;
|
||||||
gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
|
gSaveBlock2Ptr->frontier.opponentName[1][0] = EOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WarpToTruck(void)
|
static void WarpToTruck(void)
|
||||||
@ -149,7 +143,7 @@ void Sav2_ClearSetDefault(void)
|
|||||||
void ResetMenuAndMonGlobals(void)
|
void ResetMenuAndMonGlobals(void)
|
||||||
{
|
{
|
||||||
gDifferentSaveFile = 0;
|
gDifferentSaveFile = 0;
|
||||||
sub_80BB358();
|
ResetPokedexScrollPositions();
|
||||||
ZeroPlayerPartyMons();
|
ZeroPlayerPartyMons();
|
||||||
ZeroEnemyPartyMons();
|
ZeroEnemyPartyMons();
|
||||||
ResetBagScrollPositions();
|
ResetBagScrollPositions();
|
||||||
@ -203,7 +197,7 @@ void NewGameInitData(void)
|
|||||||
ResetFanClub();
|
ResetFanClub();
|
||||||
ResetLotteryCorner();
|
ResetLotteryCorner();
|
||||||
WarpToTruck();
|
WarpToTruck();
|
||||||
ScriptContext2_RunNewScript(EventScript_2715DE);
|
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
|
||||||
ResetMiniGamesResults();
|
ResetMiniGamesResults();
|
||||||
copy_strings_to_sav1();
|
copy_strings_to_sav1();
|
||||||
SetLilycoveLady();
|
SetLilycoveLady();
|
||||||
@ -211,7 +205,7 @@ void NewGameInitData(void)
|
|||||||
ClearRankingHallRecords();
|
ClearRankingHallRecords();
|
||||||
InitMatchCallCounters();
|
InitMatchCallCounters();
|
||||||
sub_801AFD8();
|
sub_801AFD8();
|
||||||
sub_800E5AC();
|
WipeTrainerNameRecords();
|
||||||
ResetTrainerHillResults();
|
ResetTrainerHillResults();
|
||||||
ResetContestLinkResults();
|
ResetContestLinkResults();
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,8 @@ static EWRAM_DATA u8 gUnknown_02039B52 = 0;
|
|||||||
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
|
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
|
||||||
|
|
||||||
// IWRAM common
|
// IWRAM common
|
||||||
u8 gUnknown_030060B0;
|
// This is written to, but never read.
|
||||||
|
u8 gUnusedPokedexU8;
|
||||||
void (*gUnknown_030060B4)(void);
|
void (*gUnknown_030060B4)(void);
|
||||||
|
|
||||||
struct PokedexOption
|
struct PokedexOption
|
||||||
@ -1225,7 +1226,7 @@ void ResetPokedex(void)
|
|||||||
|
|
||||||
gUnknown_02039B50 = 0;
|
gUnknown_02039B50 = 0;
|
||||||
gUnknown_02039B52 = 64;
|
gUnknown_02039B52 = 64;
|
||||||
gUnknown_030060B0 = 0;
|
gUnusedPokedexU8 = 0;
|
||||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
|
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
|
||||||
gSaveBlock2Ptr->pokedex.order = 0;
|
gSaveBlock2Ptr->pokedex.order = 0;
|
||||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||||
@ -1243,7 +1244,7 @@ void ResetPokedex(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80BB358(void)
|
void ResetPokedexScrollPositions(void)
|
||||||
{
|
{
|
||||||
gUnknown_02039B50 = 0;
|
gUnknown_02039B50 = 0;
|
||||||
gUnknown_02039B52 = 64;
|
gUnknown_02039B52 = 64;
|
||||||
@ -4041,7 +4042,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
|
|||||||
lsls r2, 24\n\
|
lsls r2, 24\n\
|
||||||
lsrs r2, 24\n\
|
lsrs r2, 24\n\
|
||||||
str r2, [sp, 0x10]\n\
|
str r2, [sp, 0x10]\n\
|
||||||
ldr r5, =0x000186a0\n\
|
ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
|
||||||
muls r0, r5\n\
|
muls r0, r5\n\
|
||||||
ldr r1, =0x000011b8\n\
|
ldr r1, =0x000011b8\n\
|
||||||
bl __divsi3\n\
|
bl __divsi3\n\
|
||||||
@ -4075,7 +4076,7 @@ _080C04C0:\n\
|
|||||||
mov r8, r1\n\
|
mov r8, r1\n\
|
||||||
movs r6, 0x1\n\
|
movs r6, 0x1\n\
|
||||||
_080C04C6:\n\
|
_080C04C6:\n\
|
||||||
ldr r1, =0x000186a0\n\
|
ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
|
||||||
adds r0, r7, 0\n\
|
adds r0, r7, 0\n\
|
||||||
bl __umodsi3\n\
|
bl __umodsi3\n\
|
||||||
adds r7, r0, 0\n\
|
adds r7, r0, 0\n\
|
||||||
|
1211
src/pokenav.c
Normal file
1211
src/pokenav.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1095,7 +1095,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
|
|||||||
CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
|
CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
|
||||||
CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||||
StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
|
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++)
|
for (i = 0; i < 2; i++)
|
||||||
|
@ -1687,7 +1687,7 @@ void sub_801440C(u8 taskId)
|
|||||||
case 9 ... 11:
|
case 9 ... 11:
|
||||||
case 13:
|
case 13:
|
||||||
case 15:
|
case 15:
|
||||||
sub_800E3A8();
|
RecordMixTrainerNames();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1800,12 +1800,12 @@ void sub_8014790(u8 taskId)
|
|||||||
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||||
gMain.savedCallback = NULL;
|
gMain.savedCallback = NULL;
|
||||||
data[0] = 4;
|
data[0] = 4;
|
||||||
sub_800E3A8();
|
RecordMixTrainerNames();
|
||||||
ResetBlockReceivedFlags();
|
ResetBlockReceivedFlags();
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
case 23 ... 27:
|
case 23 ... 27:
|
||||||
sub_800E3A8();
|
RecordMixTrainerNames();
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
default:
|
default:
|
||||||
EnableBothScriptContexts();
|
EnableBothScriptContexts();
|
||||||
|
@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here.");
|
|||||||
const u8 gUnknown_085EBEA8[] = _("STRATEGY");
|
const u8 gUnknown_085EBEA8[] = _("STRATEGY");
|
||||||
const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
|
const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
|
||||||
const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
|
const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
|
||||||
const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}");
|
const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}");
|
||||||
const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
|
const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
|
const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
|
const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
|
const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
|
const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
|
const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
|
const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL");
|
const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
|
const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
|
const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
|
||||||
const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL");
|
const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
|
||||||
const u8 gText_NatureSlash[] = _("NATURE/");
|
const u8 gText_NatureSlash[] = _("NATURE/");
|
||||||
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
|
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
|
||||||
const u8 gText_InParty[] = _("IN PARTY");
|
const u8 gText_InParty[] = _("IN PARTY");
|
||||||
|
Loading…
Reference in New Issue
Block a user