Port mystery_event_script
This commit is contained in:
@@ -3770,7 +3770,7 @@ sub_804981C: @ 804981C
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _0804991C
|
beq _0804991C
|
||||||
|
|||||||
@@ -31945,7 +31945,7 @@ _0802D5D8:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
movs r4, 0xA
|
movs r4, 0xA
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
@@ -32356,7 +32356,7 @@ sub_802D95C: @ 802D95C
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _0802D9B4
|
beq _0802D9B4
|
||||||
|
|||||||
+5
-5
@@ -143,7 +143,7 @@ sub_80E5A70: @ 80E5A70
|
|||||||
add r4, sp, 0x28
|
add r4, sp, 0x28
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
strb r0, [r4]
|
strb r0, [r4]
|
||||||
bl sub_80E7490
|
bl ValidateEReaderTrainer
|
||||||
ldr r0, _080E5AA4 @ =gUnknown_20370D0
|
ldr r0, _080E5AA4 @ =gUnknown_20370D0
|
||||||
ldrh r0, [r0]
|
ldrh r0, [r0]
|
||||||
adds r7, r4, 0
|
adds r7, r4, 0
|
||||||
@@ -1506,7 +1506,7 @@ sub_80E64C0: @ 80E64C0
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _080E6554
|
beq _080E6554
|
||||||
@@ -3497,8 +3497,8 @@ _080E7488: .4byte gSaveBlock2Ptr
|
|||||||
_080E748C: .4byte 0x000004a4
|
_080E748C: .4byte 0x000004a4
|
||||||
thumb_func_end sub_80E7460
|
thumb_func_end sub_80E7460
|
||||||
|
|
||||||
thumb_func_start sub_80E7490
|
thumb_func_start ValidateEReaderTrainer
|
||||||
sub_80E7490: @ 80E7490
|
ValidateEReaderTrainer: @ 80E7490
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
ldr r2, _080E74C0 @ =gUnknown_20370D0
|
ldr r2, _080E74C0 @ =gUnknown_20370D0
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
@@ -3556,7 +3556,7 @@ _080E74F6:
|
|||||||
bx r0
|
bx r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080E74FC: .4byte gUnknown_20370D0
|
_080E74FC: .4byte gUnknown_20370D0
|
||||||
thumb_func_end sub_80E7490
|
thumb_func_end ValidateEReaderTrainer
|
||||||
|
|
||||||
thumb_func_start sub_80E7500
|
thumb_func_start sub_80E7500
|
||||||
sub_80E7500: @ 80E7500
|
sub_80E7500: @ 80E7500
|
||||||
|
|||||||
+3
-3
@@ -89,8 +89,8 @@ _0809C7BC: .4byte 0x000030ec
|
|||||||
_0809C7C0: .4byte 0x0100001a
|
_0809C7C0: .4byte 0x0100001a
|
||||||
thumb_func_end sub_809C794
|
thumb_func_end sub_809C794
|
||||||
|
|
||||||
thumb_func_start sub_809C7C4
|
thumb_func_start SetEnigmaBerry
|
||||||
sub_809C7C4: @ 809C7C4
|
SetEnigmaBerry: @ 809C7C4
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_809C794
|
bl sub_809C794
|
||||||
@@ -144,7 +144,7 @@ _0809C828: .4byte 0x000030ec
|
|||||||
_0809C82C: .4byte 0x00003108
|
_0809C82C: .4byte 0x00003108
|
||||||
_0809C830: .4byte 0x00000516
|
_0809C830: .4byte 0x00000516
|
||||||
_0809C834: .4byte 0x00000529
|
_0809C834: .4byte 0x00000529
|
||||||
thumb_func_end sub_809C7C4
|
thumb_func_end SetEnigmaBerry
|
||||||
|
|
||||||
thumb_func_start GetEnigmaBerryChecksum
|
thumb_func_start GetEnigmaBerryChecksum
|
||||||
GetEnigmaBerryChecksum: @ 809C838
|
GetEnigmaBerryChecksum: @ 809C838
|
||||||
|
|||||||
+7
-7
@@ -622,8 +622,8 @@ _080BDB68: .4byte gSaveBlock1Ptr
|
|||||||
_080BDB6C: .4byte 0x00002f10
|
_080BDB6C: .4byte 0x00002f10
|
||||||
thumb_func_end sub_80BDB48
|
thumb_func_end sub_80BDB48
|
||||||
|
|
||||||
thumb_func_start sub_80BDB70
|
thumb_func_start EnableRareWord
|
||||||
sub_80BDB70: @ 80BDB70
|
EnableRareWord: @ 80BDB70
|
||||||
push {lr}
|
push {lr}
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r1, r0, 24
|
lsrs r1, r0, 24
|
||||||
@@ -648,7 +648,7 @@ _080BDB94:
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080BDB98: .4byte gSaveBlock1Ptr
|
_080BDB98: .4byte gSaveBlock1Ptr
|
||||||
_080BDB9C: .4byte 0x00002f10
|
_080BDB9C: .4byte 0x00002f10
|
||||||
thumb_func_end sub_80BDB70
|
thumb_func_end EnableRareWord
|
||||||
|
|
||||||
thumb_func_start sub_80BDBA0
|
thumb_func_start sub_80BDBA0
|
||||||
sub_80BDBA0: @ 80BDBA0
|
sub_80BDBA0: @ 80BDBA0
|
||||||
@@ -687,7 +687,7 @@ sub_80BDBCC: @ 80BDBCC
|
|||||||
b _080BDC32
|
b _080BDC32
|
||||||
_080BDBDC:
|
_080BDBDC:
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
bl sub_80BDB70
|
bl EnableRareWord
|
||||||
ldr r0, _080BDBF4 @ =0x000001ff
|
ldr r0, _080BDBF4 @ =0x000001ff
|
||||||
ands r4, r0
|
ands r4, r0
|
||||||
movs r1, 0xA0
|
movs r1, 0xA0
|
||||||
@@ -841,7 +841,7 @@ _080BDCF6:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _080BDD16
|
beq _080BDD16
|
||||||
@@ -1769,7 +1769,7 @@ _080BE3BC:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
b _080BE40C
|
b _080BE40C
|
||||||
@@ -1783,7 +1783,7 @@ _080BE3D6:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
b _080BE40C
|
b _080BE40C
|
||||||
|
|||||||
+2
-2
@@ -214,10 +214,10 @@ AddHatchedMonToParty: @ 8046D60
|
|||||||
lsrs r4, 16
|
lsrs r4, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
ldr r1, _08046E1C @ =gStringVar1
|
ldr r1, _08046E1C @ =gStringVar1
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
bl GetMonNick
|
bl GetMonNick
|
||||||
|
|||||||
+3
-3
@@ -170,8 +170,8 @@ _0806E224: .4byte 0x0000404e
|
|||||||
_0806E228: .4byte gSaveBlock2Ptr
|
_0806E228: .4byte gSaveBlock2Ptr
|
||||||
thumb_func_end sub_806E204
|
thumb_func_end sub_806E204
|
||||||
|
|
||||||
thumb_func_start sub_806E22C
|
thumb_func_start EnableNationalPokedex
|
||||||
sub_806E22C: @ 806E22C
|
EnableNationalPokedex: @ 806E22C
|
||||||
push {lr}
|
push {lr}
|
||||||
ldr r0, _0806E250 @ =0x0000404e
|
ldr r0, _0806E250 @ =0x0000404e
|
||||||
bl GetVarPointer
|
bl GetVarPointer
|
||||||
@@ -191,7 +191,7 @@ sub_806E22C: @ 806E22C
|
|||||||
_0806E250: .4byte 0x0000404e
|
_0806E250: .4byte 0x0000404e
|
||||||
_0806E254: .4byte gSaveBlock2Ptr
|
_0806E254: .4byte gSaveBlock2Ptr
|
||||||
_0806E258: .4byte 0x00006258
|
_0806E258: .4byte 0x00006258
|
||||||
thumb_func_end sub_806E22C
|
thumb_func_end EnableNationalPokedex
|
||||||
|
|
||||||
thumb_func_start sub_806E25C
|
thumb_func_start sub_806E25C
|
||||||
sub_806E25C: @ 806E25C
|
sub_806E25C: @ 806E25C
|
||||||
|
|||||||
@@ -1252,13 +1252,13 @@ _080CE80C:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
ldrh r0, [r4, 0xC]
|
ldrh r0, [r4, 0xC]
|
||||||
bl SpeciesToNationalPokedexNum
|
bl SpeciesToNationalPokedexNum
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
mov r0, r9
|
mov r0, r9
|
||||||
movs r1, 0xB
|
movs r1, 0xB
|
||||||
bl GetMonData
|
bl GetMonData
|
||||||
@@ -1829,13 +1829,13 @@ _080CED3A:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
ldrh r0, [r4, 0xC]
|
ldrh r0, [r4, 0xC]
|
||||||
bl SpeciesToNationalPokedexNum
|
bl SpeciesToNationalPokedexNum
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
movs r0, 0xE
|
movs r0, 0xE
|
||||||
bl IncrementGameStat
|
bl IncrementGameStat
|
||||||
b _080CF528
|
b _080CF528
|
||||||
@@ -3136,13 +3136,13 @@ _080CF8A8:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
ldrh r0, [r4, 0xC]
|
ldrh r0, [r4, 0xC]
|
||||||
bl SpeciesToNationalPokedexNum
|
bl SpeciesToNationalPokedexNum
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
movs r0, 0xE
|
movs r0, 0xE
|
||||||
bl IncrementGameStat
|
bl IncrementGameStat
|
||||||
b _080D003A
|
b _080D003A
|
||||||
|
|||||||
@@ -1491,7 +1491,7 @@ _080CB128:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
asrs r0, 24
|
asrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
@@ -1521,7 +1521,7 @@ _080CB176:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
asrs r0, 24
|
asrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
@@ -3129,7 +3129,7 @@ sub_80CBDCC: @ 80CBDCC
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
|
|||||||
@@ -1,722 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA800
|
|
||||||
sub_80DA800: @ 80DA800
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
lsls r2, 16
|
|
||||||
lsrs r2, 16
|
|
||||||
movs r4, 0x1
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080DA828
|
|
||||||
ands r1, r4
|
|
||||||
cmp r1, 0
|
|
||||||
beq _080DA828
|
|
||||||
ands r2, r4
|
|
||||||
cmp r2, 0
|
|
||||||
beq _080DA828
|
|
||||||
ands r3, r4
|
|
||||||
cmp r3, 0
|
|
||||||
beq _080DA828
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080DA82A
|
|
||||||
_080DA828:
|
|
||||||
movs r0, 0
|
|
||||||
_080DA82A:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80DA800
|
|
||||||
|
|
||||||
thumb_func_start SetIncompatible
|
|
||||||
SetIncompatible: @ 80DA830
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080DA844 @ =gStringVar4
|
|
||||||
ldr r1, _080DA848 @ =gUnknown_8488DFD
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x3
|
|
||||||
bl sub_80DA8E8
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080DA844: .4byte gStringVar4
|
|
||||||
_080DA848: .4byte gUnknown_8488DFD
|
|
||||||
thumb_func_end SetIncompatible
|
|
||||||
|
|
||||||
thumb_func_start InitMysteryEventScript
|
|
||||||
InitMysteryEventScript: @ 80DA84C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r5, r1, 0
|
|
||||||
ldr r1, _080DA874 @ =gUnknown_81DBCF0
|
|
||||||
ldr r2, _080DA878 @ =0x081dbd34
|
|
||||||
bl InitScriptContext
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl SetupBytecodeScript
|
|
||||||
str r5, [r4, 0x64]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r4, 0x68]
|
|
||||||
str r0, [r4, 0x6C]
|
|
||||||
str r0, [r4, 0x70]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080DA874: .4byte gUnknown_81DBCF0
|
|
||||||
_080DA878: .4byte 0x081dbd34
|
|
||||||
thumb_func_end InitMysteryEventScript
|
|
||||||
|
|
||||||
thumb_func_start RunMysteryEventScriptCommand
|
|
||||||
RunMysteryEventScriptCommand: @ 80DA87C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl RunScriptCommand
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080DA894
|
|
||||||
ldr r0, [r4, 0x70]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080DA894
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080DA896
|
|
||||||
_080DA894:
|
|
||||||
movs r0, 0
|
|
||||||
_080DA896:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end RunMysteryEventScriptCommand
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA89C
|
|
||||||
sub_80DA89C: @ 80DA89C
|
|
||||||
push {lr}
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, _080DA8AC @ =gUnknown_203AA3C
|
|
||||||
bl InitMysteryEventScript
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080DA8AC: .4byte gUnknown_203AA3C
|
|
||||||
thumb_func_end sub_80DA89C
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA8B0
|
|
||||||
sub_80DA8B0: @ 80DA8B0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r4, _080DA8C8 @ =gUnknown_203AA3C
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl RunMysteryEventScriptCommand
|
|
||||||
ldr r1, [r4, 0x6C]
|
|
||||||
str r1, [r5]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DA8C8: .4byte gUnknown_203AA3C
|
|
||||||
thumb_func_end sub_80DA8B0
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA8CC
|
|
||||||
sub_80DA8CC: @ 80DA8CC
|
|
||||||
push {lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
bl sub_80DA89C
|
|
||||||
_080DA8D4:
|
|
||||||
mov r0, sp
|
|
||||||
bl sub_80DA8B0
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080DA8D4
|
|
||||||
ldr r0, [sp]
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80DA8CC
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA8E8
|
|
||||||
sub_80DA8E8: @ 80DA8E8
|
|
||||||
ldr r1, _080DA8F0 @ =gUnknown_203AA3C
|
|
||||||
str r0, [r1, 0x6C]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_080DA8F0: .4byte gUnknown_203AA3C
|
|
||||||
thumb_func_end sub_80DA8E8
|
|
||||||
|
|
||||||
thumb_func_start script_status_stop_and_ret_1
|
|
||||||
script_status_stop_and_ret_1: @ 80DA8F4
|
|
||||||
push {lr}
|
|
||||||
bl StopScript
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end script_status_stop_and_ret_1
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_checkcompat
|
|
||||||
MEScrCmd_checkcompat: @ 80DA900
|
|
||||||
push {r4-r7,lr}
|
|
||||||
adds r7, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
str r0, [r7, 0x68]
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r3, r0, 0
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r1, r6, 0
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl sub_80DA800
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080DA944
|
|
||||||
str r0, [r7, 0x70]
|
|
||||||
b _080DA948
|
|
||||||
_080DA944:
|
|
||||||
bl SetIncompatible
|
|
||||||
_080DA948:
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_checkcompat
|
|
||||||
|
|
||||||
thumb_func_start sub_80DA950
|
|
||||||
sub_80DA950: @ 80DA950
|
|
||||||
movs r0, 0
|
|
||||||
bx lr
|
|
||||||
thumb_func_end sub_80DA950
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_setstatus
|
|
||||||
MEScrCmd_setstatus: @ 80DA954
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
str r2, [r0, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
bx lr
|
|
||||||
thumb_func_end MEScrCmd_setstatus
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_setmsg
|
|
||||||
MEScrCmd_setmsg: @ 80DA964
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r4, 0x8]
|
|
||||||
ldrb r5, [r0]
|
|
||||||
adds r0, 0x1
|
|
||||||
str r0, [r4, 0x8]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
ldr r1, [r4, 0x68]
|
|
||||||
subs r0, r1
|
|
||||||
ldr r1, [r4, 0x64]
|
|
||||||
adds r1, r0, r1
|
|
||||||
cmp r5, 0xFF
|
|
||||||
beq _080DA988
|
|
||||||
ldr r0, [r4, 0x6C]
|
|
||||||
cmp r5, r0
|
|
||||||
bne _080DA98E
|
|
||||||
_080DA988:
|
|
||||||
ldr r0, _080DA998 @ =gStringVar4
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
_080DA98E:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DA998: .4byte gStringVar4
|
|
||||||
thumb_func_end MEScrCmd_setmsg
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_runscript
|
|
||||||
MEScrCmd_runscript: @ 80DA99C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
ldr r1, [r4, 0x68]
|
|
||||||
subs r0, r1
|
|
||||||
ldr r1, [r4, 0x64]
|
|
||||||
adds r0, r1
|
|
||||||
bl ScriptContext2_RunNewScript
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_runscript
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_setenigmaberry
|
|
||||||
MEScrCmd_setenigmaberry: @ 80DA9B8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
adds r7, r0, 0
|
|
||||||
bl IsEnigmaBerryValid
|
|
||||||
mov r8, r0
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r7, 0x68]
|
|
||||||
subs r4, r0
|
|
||||||
ldr r0, [r7, 0x64]
|
|
||||||
adds r4, r0
|
|
||||||
ldr r0, _080DAA0C @ =gStringVar1
|
|
||||||
mov r9, r0
|
|
||||||
ldr r6, _080DAA10 @ =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r6]
|
|
||||||
ldr r5, _080DAA14 @ =0x000030ec
|
|
||||||
adds r1, r5
|
|
||||||
movs r2, 0x7
|
|
||||||
bl StringCopyN
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_809C7C4
|
|
||||||
ldr r4, _080DAA18 @ =gStringVar2
|
|
||||||
ldr r1, [r6]
|
|
||||||
adds r1, r5
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r2, 0x7
|
|
||||||
bl StringCopyN
|
|
||||||
mov r0, r8
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080DAA24
|
|
||||||
ldr r0, _080DAA1C @ =gStringVar4
|
|
||||||
ldr r1, _080DAA20 @ =gUnknown_8488C70
|
|
||||||
b _080DAA44
|
|
||||||
.align 2, 0
|
|
||||||
_080DAA0C: .4byte gStringVar1
|
|
||||||
_080DAA10: .4byte gSaveBlock1Ptr
|
|
||||||
_080DAA14: .4byte 0x000030ec
|
|
||||||
_080DAA18: .4byte gStringVar2
|
|
||||||
_080DAA1C: .4byte gStringVar4
|
|
||||||
_080DAA20: .4byte gUnknown_8488C70
|
|
||||||
_080DAA24:
|
|
||||||
mov r0, r9
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl StringCompare
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080DAA40
|
|
||||||
ldr r0, _080DAA38 @ =gStringVar4
|
|
||||||
ldr r1, _080DAA3C @ =gUnknown_8488CA2
|
|
||||||
b _080DAA44
|
|
||||||
.align 2, 0
|
|
||||||
_080DAA38: .4byte gStringVar4
|
|
||||||
_080DAA3C: .4byte gUnknown_8488CA2
|
|
||||||
_080DAA40:
|
|
||||||
ldr r0, _080DAA60 @ =gStringVar4
|
|
||||||
ldr r1, _080DAA64 @ =gUnknown_8488CCE
|
|
||||||
_080DAA44:
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r7, 0x6C]
|
|
||||||
bl IsEnigmaBerryValid
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _080DAA6C
|
|
||||||
ldr r0, _080DAA68 @ =0x00004033
|
|
||||||
movs r1, 0x1
|
|
||||||
bl VarSet
|
|
||||||
b _080DAA70
|
|
||||||
.align 2, 0
|
|
||||||
_080DAA60: .4byte gStringVar4
|
|
||||||
_080DAA64: .4byte gUnknown_8488CCE
|
|
||||||
_080DAA68: .4byte 0x00004033
|
|
||||||
_080DAA6C:
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [r7, 0x6C]
|
|
||||||
_080DAA70:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_setenigmaberry
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_giveribbon
|
|
||||||
MEScrCmd_giveribbon: @ 80DAA80
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r2, [r4, 0x8]
|
|
||||||
ldrb r0, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
str r2, [r4, 0x8]
|
|
||||||
ldrb r1, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
str r2, [r4, 0x8]
|
|
||||||
bl GiveGiftRibbonToParty
|
|
||||||
ldr r0, _080DAAAC @ =gStringVar4
|
|
||||||
ldr r1, _080DAAB0 @ =gUnknown_8488CF6
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r4, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DAAAC: .4byte gStringVar4
|
|
||||||
_080DAAB0: .4byte gUnknown_8488CF6
|
|
||||||
thumb_func_end MEScrCmd_giveribbon
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_initramscript
|
|
||||||
MEScrCmd_initramscript: @ 80DAAB4
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5,r6}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r4, 0x8]
|
|
||||||
ldrb r1, [r0]
|
|
||||||
mov r9, r1
|
|
||||||
adds r0, 0x1
|
|
||||||
str r0, [r4, 0x8]
|
|
||||||
ldrb r1, [r0]
|
|
||||||
mov r8, r1
|
|
||||||
adds r1, r0, 0x1
|
|
||||||
str r1, [r4, 0x8]
|
|
||||||
ldrb r6, [r0, 0x1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r4, 0x8]
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, [r4, 0x68]
|
|
||||||
subs r5, r0
|
|
||||||
ldr r0, [r4, 0x64]
|
|
||||||
adds r5, r0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, [r4, 0x68]
|
|
||||||
subs r1, r0
|
|
||||||
ldr r0, [r4, 0x64]
|
|
||||||
adds r1, r0
|
|
||||||
subs r1, r5
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
str r6, [sp]
|
|
||||||
adds r0, r5, 0
|
|
||||||
mov r2, r9
|
|
||||||
mov r3, r8
|
|
||||||
bl InitRamScript
|
|
||||||
movs r0, 0
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_initramscript
|
|
||||||
|
|
||||||
thumb_func_start sub_80DAB1C
|
|
||||||
sub_80DAB1C: @ 80DAB1C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_806E22C
|
|
||||||
ldr r0, _080DAB38 @ =gStringVar4
|
|
||||||
ldr r1, _080DAB3C @ =gUnknown_8488D2A
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r4, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DAB38: .4byte gStringVar4
|
|
||||||
_080DAB3C: .4byte gUnknown_8488D2A
|
|
||||||
thumb_func_end sub_80DAB1C
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_addrareword
|
|
||||||
MEScrCmd_addrareword: @ 80DAB40
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r1, [r4, 0x8]
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r4, 0x8]
|
|
||||||
bl sub_80BDB70
|
|
||||||
ldr r0, _080DAB64 @ =gStringVar4
|
|
||||||
ldr r1, _080DAB68 @ =gUnknown_8488D60
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r4, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DAB64: .4byte gStringVar4
|
|
||||||
_080DAB68: .4byte gUnknown_8488D60
|
|
||||||
thumb_func_end MEScrCmd_addrareword
|
|
||||||
|
|
||||||
thumb_func_start sub_80DAB6C
|
|
||||||
sub_80DAB6C: @ 80DAB6C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl SetIncompatible
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r4, 0x70]
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80DAB6C
|
|
||||||
|
|
||||||
thumb_func_start sub_80DAB80
|
|
||||||
sub_80DAB80: @ 80DAB80
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
sub sp, 0x88
|
|
||||||
adds r6, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
ldr r1, [r6, 0x68]
|
|
||||||
subs r0, r1
|
|
||||||
ldr r1, [r6, 0x64]
|
|
||||||
adds r5, r0, r1
|
|
||||||
movs r0, 0x64
|
|
||||||
adds r0, r5
|
|
||||||
mov r8, r0
|
|
||||||
add r4, sp, 0x24
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x64
|
|
||||||
bl memcpy
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x41
|
|
||||||
bl GetMonData
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
movs r0, 0xCE
|
|
||||||
lsls r0, 1
|
|
||||||
cmp r4, r0
|
|
||||||
bne _080DABD0
|
|
||||||
ldr r0, _080DABC8 @ =gStringVar1
|
|
||||||
ldr r1, _080DABCC @ =gText_EggNickname
|
|
||||||
movs r2, 0xB
|
|
||||||
bl StringCopyN
|
|
||||||
b _080DABDA
|
|
||||||
.align 2, 0
|
|
||||||
_080DABC8: .4byte gStringVar1
|
|
||||||
_080DABCC: .4byte gText_EggNickname
|
|
||||||
_080DABD0:
|
|
||||||
ldr r0, _080DABF0 @ =gStringVar1
|
|
||||||
ldr r1, _080DABF4 @ =gUnknown_8415A66
|
|
||||||
movs r2, 0xB
|
|
||||||
bl StringCopyN
|
|
||||||
_080DABDA:
|
|
||||||
ldr r0, _080DABF8 @ =gPlayerPartyCount
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x6
|
|
||||||
bne _080DAC04
|
|
||||||
ldr r0, _080DABFC @ =gStringVar4
|
|
||||||
ldr r1, _080DAC00 @ =gUnknown_8488D8E
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x3
|
|
||||||
b _080DAC6E
|
|
||||||
.align 2, 0
|
|
||||||
_080DABF0: .4byte gStringVar1
|
|
||||||
_080DABF4: .4byte gUnknown_8415A66
|
|
||||||
_080DABF8: .4byte gPlayerPartyCount
|
|
||||||
_080DABFC: .4byte gStringVar4
|
|
||||||
_080DAC00: .4byte gUnknown_8488D8E
|
|
||||||
_080DAC04:
|
|
||||||
ldr r7, _080DAC80 @ =gUnknown_2024478
|
|
||||||
adds r0, r7, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x64
|
|
||||||
bl memcpy
|
|
||||||
mov r0, sp
|
|
||||||
mov r1, r8
|
|
||||||
movs r2, 0x24
|
|
||||||
bl memcpy
|
|
||||||
movs r0, 0xCE
|
|
||||||
lsls r0, 1
|
|
||||||
cmp r4, r0
|
|
||||||
beq _080DAC3E
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SpeciesToNationalPokedexNum
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x2
|
|
||||||
bl sub_8088E74
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
bl sub_8088E74
|
|
||||||
_080DAC3E:
|
|
||||||
adds r0, r7, 0
|
|
||||||
movs r1, 0xC
|
|
||||||
bl GetMonData
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl itemid_is_mail
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080DAC5C
|
|
||||||
adds r0, r7, 0
|
|
||||||
mov r1, sp
|
|
||||||
bl GiveMailToMon2
|
|
||||||
_080DAC5C:
|
|
||||||
bl CompactPartySlots
|
|
||||||
bl CalculatePlayerPartyCount
|
|
||||||
ldr r0, _080DAC84 @ =gStringVar4
|
|
||||||
ldr r1, _080DAC88 @ =gUnknown_8488D7C
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
_080DAC6E:
|
|
||||||
str r0, [r6, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
add sp, 0x88
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DAC80: .4byte gUnknown_2024478
|
|
||||||
_080DAC84: .4byte gStringVar4
|
|
||||||
_080DAC88: .4byte gUnknown_8488D7C
|
|
||||||
thumb_func_end sub_80DAB80
|
|
||||||
|
|
||||||
thumb_func_start sub_80DAC8C
|
|
||||||
sub_80DAC8C: @ 80DAC8C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, [r4, 0x68]
|
|
||||||
subs r1, r0
|
|
||||||
ldr r0, [r4, 0x64]
|
|
||||||
adds r1, r0
|
|
||||||
ldr r0, _080DACC8 @ =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r2, 0x94
|
|
||||||
lsls r2, 3
|
|
||||||
adds r0, r2
|
|
||||||
movs r2, 0xBC
|
|
||||||
bl memcpy
|
|
||||||
bl sub_80E7490
|
|
||||||
ldr r0, _080DACCC @ =gStringVar4
|
|
||||||
ldr r1, _080DACD0 @ =gUnknown_8488DBD
|
|
||||||
bl StringExpandPlaceholders
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r4, 0x6C]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080DACC8: .4byte gSaveBlock2Ptr
|
|
||||||
_080DACCC: .4byte gStringVar4
|
|
||||||
_080DACD0: .4byte gUnknown_8488DBD
|
|
||||||
thumb_func_end sub_80DAC8C
|
|
||||||
|
|
||||||
thumb_func_start sub_80DACD4
|
|
||||||
sub_80DACD4: @ 80DACD4
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl SetIncompatible
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r4, 0x70]
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80DACD4
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_checksum
|
|
||||||
MEScrCmd_checksum: @ 80DACE8
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r6, 0x68]
|
|
||||||
subs r4, r0
|
|
||||||
ldr r0, [r6, 0x64]
|
|
||||||
adds r4, r0
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, [r6, 0x68]
|
|
||||||
subs r1, r0
|
|
||||||
ldr r0, [r6, 0x64]
|
|
||||||
adds r1, r0
|
|
||||||
subs r1, r4
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl CalcByteArraySum
|
|
||||||
cmp r5, r0
|
|
||||||
beq _080DAD26
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r6, 0x70]
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [r6, 0x6C]
|
|
||||||
_080DAD26:
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_checksum
|
|
||||||
|
|
||||||
thumb_func_start MEScrCmd_crc
|
|
||||||
MEScrCmd_crc: @ 80DAD30
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, [r6, 0x68]
|
|
||||||
subs r4, r0
|
|
||||||
ldr r0, [r6, 0x64]
|
|
||||||
adds r4, r0
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, [r6, 0x68]
|
|
||||||
subs r1, r0
|
|
||||||
ldr r0, [r6, 0x64]
|
|
||||||
adds r1, r0
|
|
||||||
subs r1, r4
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl CalcCRC16
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r5, r0
|
|
||||||
beq _080DAD72
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r6, 0x70]
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [r6, 0x6C]
|
|
||||||
_080DAD72:
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end MEScrCmd_crc
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
||||||
+10
-10
@@ -57,8 +57,8 @@ _08088E6C:
|
|||||||
_08088E70: .4byte gUnknown_844E850
|
_08088E70: .4byte gUnknown_844E850
|
||||||
thumb_func_end sub_8088E38
|
thumb_func_end sub_8088E38
|
||||||
|
|
||||||
thumb_func_start sub_8088E74
|
thumb_func_start GetSetPokedexFlag
|
||||||
sub_8088E74: @ 8088E74
|
GetSetPokedexFlag: @ 8088E74
|
||||||
push {lr}
|
push {lr}
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
@@ -70,7 +70,7 @@ sub_8088E74: @ 8088E74
|
|||||||
asrs r0, 24
|
asrs r0, 24
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_8088E74
|
thumb_func_end GetSetPokedexFlag
|
||||||
|
|
||||||
thumb_func_start pokedex_count
|
thumb_func_start pokedex_count
|
||||||
pokedex_count: @ 8088E8C
|
pokedex_count: @ 8088E8C
|
||||||
@@ -101,7 +101,7 @@ _08088EB2:
|
|||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
_08088EBA:
|
_08088EBA:
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08088ECA
|
beq _08088ECA
|
||||||
@@ -145,7 +145,7 @@ _08088EFC:
|
|||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
_08088F04:
|
_08088F04:
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08088F14
|
beq _08088F14
|
||||||
@@ -176,7 +176,7 @@ _08088F28:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08088F48
|
bne _08088F48
|
||||||
@@ -203,7 +203,7 @@ _08088F5C:
|
|||||||
lsrs r4, r0, 16
|
lsrs r4, r0, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08088F74
|
bne _08088F74
|
||||||
@@ -230,7 +230,7 @@ _08088F88:
|
|||||||
lsrs r4, r0, 16
|
lsrs r4, r0, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08088FD6
|
beq _08088FD6
|
||||||
@@ -244,7 +244,7 @@ _08088FA4:
|
|||||||
lsrs r4, r0, 16
|
lsrs r4, r0, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08088FD6
|
beq _08088FD6
|
||||||
@@ -259,7 +259,7 @@ _08088FC2:
|
|||||||
lsrs r4, r0, 16
|
lsrs r4, r0, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08088FE0
|
bne _08088FE0
|
||||||
|
|||||||
+2
-2
@@ -482,13 +482,13 @@ sub_8044898: @ 8044898
|
|||||||
orrs r1, r0
|
orrs r1, r0
|
||||||
lsrs r1, 31
|
lsrs r1, 31
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _080448EE
|
bne _080448EE
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
adds r1, r5, 0
|
adds r1, r5, 0
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
bl NationalPokedexNumToSpecies
|
bl NationalPokedexNumToSpecies
|
||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
|
|||||||
+1
-1
@@ -155,7 +155,7 @@ _080CA4D8:
|
|||||||
lsls r0, 16
|
lsls r0, 16
|
||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
movs r1, 0x1
|
movs r1, 0x1
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _080CA500
|
beq _080CA500
|
||||||
|
|||||||
+1
-1
@@ -525,7 +525,7 @@ ScrCmd_setmysteryeventstatus: @ 806A274
|
|||||||
adds r1, 0x1
|
adds r1, 0x1
|
||||||
str r1, [r0, 0x8]
|
str r1, [r0, 0x8]
|
||||||
adds r0, r2, 0
|
adds r0, r2, 0
|
||||||
bl sub_80DA8E8
|
bl SetMysteryEventScriptStatus
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
|
|||||||
@@ -154,10 +154,10 @@ ScriptGiveMon: @ 80A011C
|
|||||||
blt _080A0196
|
blt _080A0196
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
_080A0196:
|
_080A0196:
|
||||||
adds r0, r7, 0
|
adds r0, r7, 0
|
||||||
bl Free
|
bl Free
|
||||||
|
|||||||
+1
-1
@@ -8131,7 +8131,7 @@ sub_80507A0: @ 80507A0
|
|||||||
lsrs r4, 16
|
lsrs r4, 16
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x2
|
movs r1, 0x2
|
||||||
bl sub_8088E74
|
bl GetSetPokedexFlag
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r1, 0x3
|
movs r1, 0x3
|
||||||
adds r2, r5, 0
|
adds r2, r5, 0
|
||||||
|
|||||||
+1
-1
@@ -556,7 +556,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C
|
|||||||
gText_EggNickname:: @ 8415A62
|
gText_EggNickname:: @ 8415A62
|
||||||
.incbin "baserom.gba", 0x415A62, 0x4
|
.incbin "baserom.gba", 0x415A62, 0x4
|
||||||
|
|
||||||
gUnknown_8415A66:: @ 8415A66
|
gText_Pokemon:: @ 8415A66
|
||||||
.incbin "baserom.gba", 0x415A66, 0x8
|
.incbin "baserom.gba", 0x415A66, 0x8
|
||||||
|
|
||||||
gUnknown_8415A6E:: @ 8415A6E
|
gUnknown_8415A6E:: @ 8415A6E
|
||||||
|
|||||||
+26
-20
@@ -337,32 +337,38 @@ gUnknown_84827B4:: @ 84827B4
|
|||||||
gUnknown_84886E8:: @ 84886E8
|
gUnknown_84886E8:: @ 84886E8
|
||||||
.incbin "baserom.gba", 0x4886E8, 0x588
|
.incbin "baserom.gba", 0x4886E8, 0x588
|
||||||
|
|
||||||
gUnknown_8488C70:: @ 8488C70
|
gText_MysteryGiftBerry:: @ 8488C70
|
||||||
.incbin "baserom.gba", 0x488C70, 0x32
|
.string "Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM.$"
|
||||||
|
|
||||||
gUnknown_8488CA2:: @ 8488CA2
|
gText_MysteryGiftBerryTransform:: @ 8488CA2
|
||||||
.incbin "baserom.gba", 0x488CA2, 0x2C
|
.string "The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY.$"
|
||||||
|
|
||||||
gUnknown_8488CCE:: @ 8488CCE
|
gText_MysteryGiftBerryObtained:: @ 8488CCE
|
||||||
.incbin "baserom.gba", 0x488CCE, 0x28
|
.string "The {STR_VAR_1} BERRY has already been\nobtained.$"
|
||||||
|
|
||||||
gUnknown_8488CF6:: @ 8488CF6
|
gText_MysteryGiftSpecialRibbon:: @ 8488CF6
|
||||||
.incbin "baserom.gba", 0x488CF6, 0x34
|
.string "A special RIBBON was awarded to\nyour party POKéMON.$"
|
||||||
|
|
||||||
gUnknown_8488D2A:: @ 8488D2A
|
gText_MysteryGiftNationalDex:: @ 8488D2A
|
||||||
.incbin "baserom.gba", 0x488D2A, 0x36
|
.string "The POKéDEX has been upgraded\nwith the NATIONAL MODE.$"
|
||||||
|
|
||||||
gUnknown_8488D60:: @ 8488D60
|
gText_MysteryGiftRareWord:: @ 8488D60
|
||||||
.incbin "baserom.gba", 0x488D60, 0x1C
|
.string "A rare word has been added.$"
|
||||||
|
|
||||||
gUnknown_8488D7C:: @ 8488D7C
|
gText_MysteryGiftSentOver:: @ 8488D7C
|
||||||
.incbin "baserom.gba", 0x488D7C, 0x12
|
.string "{STR_VAR_1} was sent over!$"
|
||||||
|
|
||||||
gUnknown_8488D8E:: @ 8488D8E
|
gText_MysteryGiftFullParty:: @ 8488D8E
|
||||||
.incbin "baserom.gba", 0x488D8E, 0x2F
|
.string "Your party is full.\n{STR_VAR_1} could not be sent over.$"
|
||||||
|
|
||||||
gUnknown_8488DBD:: @ 8488DBD
|
gText_MysteryGiftNewTrainer:: @ 8488DBD
|
||||||
.incbin "baserom.gba", 0x488DBD, 0x40
|
.string "A new TRAINER has arrived in\nHOENN.$"
|
||||||
|
|
||||||
gUnknown_8488DFD:: @ 8488DFD
|
gUnknown_8488DE1::
|
||||||
.incbin "baserom.gba", 0x488DFD, 0xB6B
|
.incbin "baserom.gba", 0x488DE1, 0x1C
|
||||||
|
|
||||||
|
gText_MysteryGiftCantBeUsed:: @ 8488DFD
|
||||||
|
.string "This data can’t be used in\nthis version.$"
|
||||||
|
|
||||||
|
gUnknown_8488E26::
|
||||||
|
.incbin "baserom.gba", 0x488E26, 0xB42
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
.section script_data, "aw", %progbits
|
.section script_data, "aw", %progbits
|
||||||
|
|
||||||
gUnknown_81DBCF0:: @ 81DBCF0
|
gMysteryEventScriptCmdTable:: @ 81DBCF0
|
||||||
.incbin "baserom.gba", 0x1DBCF0, 0x44
|
.incbin "baserom.gba", 0x1DBCF0, 0x44
|
||||||
|
gMysteryEventScriptCmdTableEnd:: @ 81DBD34
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
|
|
||||||
u16 sub_8164FCC(u8, u8);
|
u16 sub_8164FCC(u8, u8);
|
||||||
void sub_80E7524(u32 *);
|
void sub_80E7524(u32 *);
|
||||||
void sub_80E7490(void);
|
void ValidateEReaderTrainer(void);
|
||||||
|
|
||||||
#endif //GUARD_BATTLE_TOWER_H
|
#endif //GUARD_BATTLE_TOWER_H
|
||||||
|
|||||||
@@ -51,12 +51,12 @@
|
|||||||
#define VAR_0x402D 0x402D
|
#define VAR_0x402D 0x402D
|
||||||
#define VAR_0x402E 0x402E
|
#define VAR_0x402E 0x402E
|
||||||
|
|
||||||
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
|
#define VAR_0x402F 0x402F
|
||||||
|
|
||||||
#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
|
#define VAR_0x4030 0x4030
|
||||||
#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
|
#define VAR_0x4031 0x4031
|
||||||
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
|
#define VAR_0x4032 0x4032
|
||||||
#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
|
#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
|
||||||
|
|
||||||
#define VAR_0x4034 0x4034
|
#define VAR_0x4034 0x4034
|
||||||
#define VAR_0x4035 0x4035
|
#define VAR_0x4035 0x4035
|
||||||
|
|||||||
@@ -38,5 +38,6 @@ void InitializeEasyChatWordArray(u16 *words, u16 length);
|
|||||||
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
||||||
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
||||||
void sub_80BDE28(void);
|
void sub_80BDE28(void);
|
||||||
|
void EnableRareWord(u8);
|
||||||
|
|
||||||
#endif // GUARD_EASYCHAT_H
|
#endif // GUARD_EASYCHAT_H
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#ifndef GUARD_GLOBAL_BERRY_H
|
#ifndef GUARD_GLOBAL_BERRY_H
|
||||||
#define GUARD_GLOBAL_BERRY_H
|
#define GUARD_GLOBAL_BERRY_H
|
||||||
|
|
||||||
|
#define BERRY_NAME_LENGTH 6
|
||||||
#define BERRY_NAME_COUNT 7
|
#define BERRY_NAME_COUNT 7
|
||||||
#define BERRY_ITEM_EFFECT_COUNT 18
|
#define BERRY_ITEM_EFFECT_COUNT 18
|
||||||
|
|
||||||
|
|||||||
@@ -10,5 +10,6 @@
|
|||||||
// Exported ROM declarations
|
// Exported ROM declarations
|
||||||
|
|
||||||
u16 sub_80D45E8(u16, u16 *);
|
u16 sub_80D45E8(u16, u16 *);
|
||||||
|
bool8 itemid_is_mail(u16 itemId);
|
||||||
|
|
||||||
#endif //GUARD_MAIL_DATA_H
|
#endif //GUARD_MAIL_DATA_H
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef GUARD_MYSTERY_EVENT_MSG_H
|
||||||
|
#define GUARD_MYSTERY_EVENT_MSG_H
|
||||||
|
|
||||||
|
#include <gba/gba.h>
|
||||||
|
|
||||||
|
extern const u8 gText_MysteryGiftBerry[];
|
||||||
|
extern const u8 gText_MysteryGiftBerryTransform[];
|
||||||
|
extern const u8 gText_MysteryGiftBerryObtained[];
|
||||||
|
extern const u8 gText_MysteryGiftSpecialRibbon[];
|
||||||
|
extern const u8 gText_MysteryGiftNationalDex[];
|
||||||
|
extern const u8 gText_MysteryGiftRareWord[];
|
||||||
|
extern const u8 gText_MysteryGiftSentOver[];
|
||||||
|
extern const u8 gText_MysteryGiftFullParty[];
|
||||||
|
extern const u8 gText_MysteryGiftNewTrainer[];
|
||||||
|
extern const u8 gText_MysteryGiftNewAdversaryInBattleTower[];
|
||||||
|
extern const u8 gText_MysteryGiftCantBeUsed[];
|
||||||
|
|
||||||
|
#endif // GUARD_MYSTERY_EVENT_MSG_H
|
||||||
@@ -7,7 +7,7 @@ u32 RunMysteryEventScript(u8 *);
|
|||||||
void SetMysteryEventScriptStatus(u32 val);
|
void SetMysteryEventScriptStatus(u32 val);
|
||||||
u16 GetRecordMixingGift(void);
|
u16 GetRecordMixingGift(void);
|
||||||
|
|
||||||
void sub_80DA89C(void *);
|
void sub_80DA89C(u8 *);
|
||||||
bool32 sub_80DA8B0(u32 *);
|
bool32 sub_80DA8B0(u32 *);
|
||||||
|
|
||||||
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
|
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
|
||||||
|
|||||||
@@ -89,5 +89,7 @@ extern const u8 gText_Cancel4[];
|
|||||||
extern const u8 gText_IsThisTheCorrectTime[];
|
extern const u8 gText_IsThisTheCorrectTime[];
|
||||||
extern const u8 gText_PkmnFainted3[];
|
extern const u8 gText_PkmnFainted3[];
|
||||||
extern const u8 gText_Coins[];
|
extern const u8 gText_Coins[];
|
||||||
|
extern const u8 gText_EggNickname[];
|
||||||
|
extern const u8 gText_Pokemon[];
|
||||||
|
|
||||||
#endif //GUARD_STRINGS_H
|
#endif //GUARD_STRINGS_H
|
||||||
|
|||||||
+1
-1
@@ -182,7 +182,7 @@ SECTIONS {
|
|||||||
asm/roulette_util.o(.text);
|
asm/roulette_util.o(.text);
|
||||||
asm/cable_car_util.o(.text);
|
asm/cable_car_util.o(.text);
|
||||||
src/save.o(.text);
|
src/save.o(.text);
|
||||||
asm/mystery_event_script.o(.text);
|
src/mystery_event_script.o(.text);
|
||||||
asm/field_effect_helpers.o(.text);
|
asm/field_effect_helpers.o(.text);
|
||||||
asm/battle_anim_sound_tasks.o(.text);
|
asm/battle_anim_sound_tasks.o(.text);
|
||||||
asm/battle_controller_safari.o(.text);
|
asm/battle_controller_safari.o(.text);
|
||||||
|
|||||||
+1
-1
@@ -227,7 +227,7 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr)
|
|||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc);
|
memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc);
|
||||||
sub_80E7490();
|
ValidateEReaderTrainer();
|
||||||
break;
|
break;
|
||||||
case 21:
|
case 21:
|
||||||
memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
|
memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
|
||||||
|
|||||||
@@ -0,0 +1,322 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "berry.h"
|
||||||
|
#include "battle_tower.h"
|
||||||
|
#include "easy_chat.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "mail.h"
|
||||||
|
#include "mail_data.h"
|
||||||
|
#include "mystery_event_script.h"
|
||||||
|
#include "pokedex.h"
|
||||||
|
#include "pokemon.h"
|
||||||
|
#include "pokemon_size_record.h"
|
||||||
|
#include "script.h"
|
||||||
|
#include "constants/species.h"
|
||||||
|
#include "strings.h"
|
||||||
|
#include "string_util.h"
|
||||||
|
#include "text.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "mystery_event_msg.h"
|
||||||
|
#include "pokemon_storage_system.h"
|
||||||
|
|
||||||
|
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
|
||||||
|
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
|
||||||
|
|
||||||
|
#define LANGUAGE_MASK 0x1
|
||||||
|
#define VERSION_MASK 0x1
|
||||||
|
|
||||||
|
EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0};
|
||||||
|
|
||||||
|
static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4)
|
||||||
|
{
|
||||||
|
if (!(a1 & LANGUAGE_MASK))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!(a2 & LANGUAGE_MASK))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!(a3 & 0x1))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!(a4 & VERSION_MASK))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetIncompatible(void)
|
||||||
|
{
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftCantBeUsed);
|
||||||
|
SetMysteryEventScriptStatus(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script)
|
||||||
|
{
|
||||||
|
InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd);
|
||||||
|
SetupBytecodeScript(ctx, script);
|
||||||
|
ctx->data[0] = (u32)script;
|
||||||
|
ctx->data[1] = 0;
|
||||||
|
ctx->data[2] = 0;
|
||||||
|
ctx->data[3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
if (RunScriptCommand(ctx) && ctx->data[3])
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80DA89C(u8 *script)
|
||||||
|
{
|
||||||
|
InitMysteryEventScript(&sMysteryEventScriptContext, script);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 sub_80DA8B0(u32 *a0)
|
||||||
|
{
|
||||||
|
bool32 ret = RunMysteryEventScriptCommand(&sMysteryEventScriptContext);
|
||||||
|
*a0 = sMysteryEventScriptContext.data[2];
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 RunMysteryEventScript(u8 *script)
|
||||||
|
{
|
||||||
|
u32 ret;
|
||||||
|
sub_80DA89C(script);
|
||||||
|
while (sub_80DA8B0(&ret));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMysteryEventScriptStatus(u32 val)
|
||||||
|
{
|
||||||
|
sMysteryEventScriptContext.data[2] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_end(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
StopScript(ctx);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u16 v1;
|
||||||
|
u32 v2;
|
||||||
|
u16 v3;
|
||||||
|
u32 v4;
|
||||||
|
|
||||||
|
ctx->data[1] = ScriptReadWord(ctx);
|
||||||
|
v1 = ScriptReadHalfword(ctx);
|
||||||
|
v2 = ScriptReadWord(ctx);
|
||||||
|
v3 = ScriptReadHalfword(ctx);
|
||||||
|
v4 = ScriptReadWord(ctx);
|
||||||
|
|
||||||
|
if (CheckCompatibility(v1, v2, v3, v4) == TRUE)
|
||||||
|
ctx->data[3] = 1;
|
||||||
|
else
|
||||||
|
SetIncompatible();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_nop(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_setstatus(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 value = ScriptReadByte(ctx);
|
||||||
|
ctx->data[2] = value;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_setmsg(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 value = ScriptReadByte(ctx);
|
||||||
|
u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
if (value == 0xFF || value == ctx->data[2])
|
||||||
|
StringExpandPlaceholders(gStringVar4, str);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_runscript(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
ScriptContext2_RunNewScript(script);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 *str;
|
||||||
|
const u8 *message;
|
||||||
|
bool32 haveBerry = IsEnigmaBerryValid();
|
||||||
|
u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1);
|
||||||
|
SetEnigmaBerry(berry);
|
||||||
|
StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1);
|
||||||
|
|
||||||
|
if (!haveBerry)
|
||||||
|
{
|
||||||
|
str = gStringVar4;
|
||||||
|
message = gText_MysteryGiftBerry;
|
||||||
|
}
|
||||||
|
else if (StringCompare(gStringVar1, gStringVar2))
|
||||||
|
{
|
||||||
|
str = gStringVar4;
|
||||||
|
message = gText_MysteryGiftBerryTransform;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
str = gStringVar4;
|
||||||
|
message = gText_MysteryGiftBerryObtained;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringExpandPlaceholders(str, message);
|
||||||
|
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
|
||||||
|
if (IsEnigmaBerryValid() == TRUE)
|
||||||
|
VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1);
|
||||||
|
else
|
||||||
|
ctx->data[2] = 1;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 index = ScriptReadByte(ctx);
|
||||||
|
u8 ribbonId = ScriptReadByte(ctx);
|
||||||
|
GiveGiftRibbonToParty(index, ribbonId);
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSpecialRibbon);
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_initramscript(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u8 mapGroup = ScriptReadByte(ctx);
|
||||||
|
u8 mapNum = ScriptReadByte(ctx);
|
||||||
|
u8 objectId = ScriptReadByte(ctx);
|
||||||
|
u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
EnableNationalPokedex();
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNationalDex);
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_addrareword(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
EnableRareWord(ScriptReadByte(ctx));
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftRareWord);
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
SetIncompatible();
|
||||||
|
ctx->data[3] = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
struct MailStruct mail;
|
||||||
|
struct Pokemon pokemon;
|
||||||
|
u16 species;
|
||||||
|
u16 heldItem;
|
||||||
|
u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
|
||||||
|
void *pokemonPtr = (void *)data;
|
||||||
|
void *mailPtr = (void *)(data + sizeof(struct Pokemon));
|
||||||
|
|
||||||
|
pokemon = *(struct Pokemon *)pokemonPtr;
|
||||||
|
species = GetMonData(&pokemon, MON_DATA_SPECIES2);
|
||||||
|
|
||||||
|
if (species == SPECIES_EGG)
|
||||||
|
StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1);
|
||||||
|
else
|
||||||
|
StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1);
|
||||||
|
|
||||||
|
if (gPlayerPartyCount == PARTY_SIZE)
|
||||||
|
{
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftFullParty);
|
||||||
|
ctx->data[2] = 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon));
|
||||||
|
memcpy(&mail, mailPtr, sizeof(struct MailStruct));
|
||||||
|
|
||||||
|
if (species != SPECIES_EGG)
|
||||||
|
{
|
||||||
|
u16 pokedexNum = SpeciesToNationalPokedexNum(species);
|
||||||
|
GetSetPokedexFlag(pokedexNum, FLAG_SET_SEEN);
|
||||||
|
GetSetPokedexFlag(pokedexNum, FLAG_SET_CAUGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM);
|
||||||
|
if (itemid_is_mail(heldItem))
|
||||||
|
GiveMailToMon2(&gPlayerParty[5], &mail);
|
||||||
|
CompactPartySlots();
|
||||||
|
CalculatePlayerPartyCount();
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSentOver);
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
|
||||||
|
memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC);
|
||||||
|
ValidateEReaderTrainer();
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer);
|
||||||
|
ctx->data[2] = 2;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
SetIncompatible();
|
||||||
|
ctx->data[3] = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_checksum(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
int checksum = ScriptReadWord(ctx);
|
||||||
|
u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
if (checksum != CalcByteArraySum(data, dataEnd - data))
|
||||||
|
{
|
||||||
|
ctx->data[3] = 0;
|
||||||
|
ctx->data[2] = 1;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 MEScrCmd_crc(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
int crc = ScriptReadWord(ctx);
|
||||||
|
u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
|
||||||
|
if (crc != CalcCRC16(data, dataEnd - data))
|
||||||
|
{
|
||||||
|
ctx->data[3] = 0;
|
||||||
|
ctx->data[2] = 1;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
+1
-4
@@ -1197,10 +1197,7 @@ gUnknown_2039A34: @ 2039A34
|
|||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
.include "src/save.o"
|
.include "src/save.o"
|
||||||
|
.include "src/mystery_event_script.o"
|
||||||
.align 2
|
|
||||||
gUnknown_203AA3C: @ 203AA3C
|
|
||||||
.space 0x74
|
|
||||||
|
|
||||||
gUnknown_203AAB0: @ 203AAB0
|
gUnknown_203AAB0: @ 203AAB0
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|||||||
Reference in New Issue
Block a user