Port mystery_event_script
This commit is contained in:
@@ -3770,7 +3770,7 @@ sub_804981C: @ 804981C
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0804991C
|
||||
|
||||
@@ -31945,7 +31945,7 @@ _0802D5D8:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
movs r4, 0xA
|
||||
cmp r0, 0
|
||||
@@ -32356,7 +32356,7 @@ sub_802D95C: @ 802D95C
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802D9B4
|
||||
|
||||
+5
-5
@@ -143,7 +143,7 @@ sub_80E5A70: @ 80E5A70
|
||||
add r4, sp, 0x28
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
bl sub_80E7490
|
||||
bl ValidateEReaderTrainer
|
||||
ldr r0, _080E5AA4 @ =gUnknown_20370D0
|
||||
ldrh r0, [r0]
|
||||
adds r7, r4, 0
|
||||
@@ -1506,7 +1506,7 @@ sub_80E64C0: @ 80E64C0
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080E6554
|
||||
@@ -3497,8 +3497,8 @@ _080E7488: .4byte gSaveBlock2Ptr
|
||||
_080E748C: .4byte 0x000004a4
|
||||
thumb_func_end sub_80E7460
|
||||
|
||||
thumb_func_start sub_80E7490
|
||||
sub_80E7490: @ 80E7490
|
||||
thumb_func_start ValidateEReaderTrainer
|
||||
ValidateEReaderTrainer: @ 80E7490
|
||||
push {r4-r6,lr}
|
||||
ldr r2, _080E74C0 @ =gUnknown_20370D0
|
||||
movs r0, 0
|
||||
@@ -3556,7 +3556,7 @@ _080E74F6:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080E74FC: .4byte gUnknown_20370D0
|
||||
thumb_func_end sub_80E7490
|
||||
thumb_func_end ValidateEReaderTrainer
|
||||
|
||||
thumb_func_start sub_80E7500
|
||||
sub_80E7500: @ 80E7500
|
||||
|
||||
+3
-3
@@ -89,8 +89,8 @@ _0809C7BC: .4byte 0x000030ec
|
||||
_0809C7C0: .4byte 0x0100001a
|
||||
thumb_func_end sub_809C794
|
||||
|
||||
thumb_func_start sub_809C7C4
|
||||
sub_809C7C4: @ 809C7C4
|
||||
thumb_func_start SetEnigmaBerry
|
||||
SetEnigmaBerry: @ 809C7C4
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_809C794
|
||||
@@ -144,7 +144,7 @@ _0809C828: .4byte 0x000030ec
|
||||
_0809C82C: .4byte 0x00003108
|
||||
_0809C830: .4byte 0x00000516
|
||||
_0809C834: .4byte 0x00000529
|
||||
thumb_func_end sub_809C7C4
|
||||
thumb_func_end SetEnigmaBerry
|
||||
|
||||
thumb_func_start GetEnigmaBerryChecksum
|
||||
GetEnigmaBerryChecksum: @ 809C838
|
||||
|
||||
+7
-7
@@ -622,8 +622,8 @@ _080BDB68: .4byte gSaveBlock1Ptr
|
||||
_080BDB6C: .4byte 0x00002f10
|
||||
thumb_func_end sub_80BDB48
|
||||
|
||||
thumb_func_start sub_80BDB70
|
||||
sub_80BDB70: @ 80BDB70
|
||||
thumb_func_start EnableRareWord
|
||||
EnableRareWord: @ 80BDB70
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
@@ -648,7 +648,7 @@ _080BDB94:
|
||||
.align 2, 0
|
||||
_080BDB98: .4byte gSaveBlock1Ptr
|
||||
_080BDB9C: .4byte 0x00002f10
|
||||
thumb_func_end sub_80BDB70
|
||||
thumb_func_end EnableRareWord
|
||||
|
||||
thumb_func_start sub_80BDBA0
|
||||
sub_80BDBA0: @ 80BDBA0
|
||||
@@ -687,7 +687,7 @@ sub_80BDBCC: @ 80BDBCC
|
||||
b _080BDC32
|
||||
_080BDBDC:
|
||||
adds r0, r5, 0
|
||||
bl sub_80BDB70
|
||||
bl EnableRareWord
|
||||
ldr r0, _080BDBF4 @ =0x000001ff
|
||||
ands r4, r0
|
||||
movs r1, 0xA0
|
||||
@@ -841,7 +841,7 @@ _080BDCF6:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080BDD16
|
||||
@@ -1769,7 +1769,7 @@ _080BE3BC:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
b _080BE40C
|
||||
@@ -1783,7 +1783,7 @@ _080BE3D6:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
b _080BE40C
|
||||
|
||||
+2
-2
@@ -214,10 +214,10 @@ AddHatchedMonToParty: @ 8046D60
|
||||
lsrs r4, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x3
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
ldr r1, _08046E1C @ =gStringVar1
|
||||
adds r0, r5, 0
|
||||
bl GetMonNick
|
||||
|
||||
+3
-3
@@ -170,8 +170,8 @@ _0806E224: .4byte 0x0000404e
|
||||
_0806E228: .4byte gSaveBlock2Ptr
|
||||
thumb_func_end sub_806E204
|
||||
|
||||
thumb_func_start sub_806E22C
|
||||
sub_806E22C: @ 806E22C
|
||||
thumb_func_start EnableNationalPokedex
|
||||
EnableNationalPokedex: @ 806E22C
|
||||
push {lr}
|
||||
ldr r0, _0806E250 @ =0x0000404e
|
||||
bl GetVarPointer
|
||||
@@ -191,7 +191,7 @@ sub_806E22C: @ 806E22C
|
||||
_0806E250: .4byte 0x0000404e
|
||||
_0806E254: .4byte gSaveBlock2Ptr
|
||||
_0806E258: .4byte 0x00006258
|
||||
thumb_func_end sub_806E22C
|
||||
thumb_func_end EnableNationalPokedex
|
||||
|
||||
thumb_func_start sub_806E25C
|
||||
sub_806E25C: @ 806E25C
|
||||
|
||||
@@ -1252,13 +1252,13 @@ _080CE80C:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
ldrh r0, [r4, 0xC]
|
||||
bl SpeciesToNationalPokedexNum
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x3
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
mov r0, r9
|
||||
movs r1, 0xB
|
||||
bl GetMonData
|
||||
@@ -1829,13 +1829,13 @@ _080CED3A:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
ldrh r0, [r4, 0xC]
|
||||
bl SpeciesToNationalPokedexNum
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x3
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
movs r0, 0xE
|
||||
bl IncrementGameStat
|
||||
b _080CF528
|
||||
@@ -3136,13 +3136,13 @@ _080CF8A8:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
ldrh r0, [r4, 0xC]
|
||||
bl SpeciesToNationalPokedexNum
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x3
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
movs r0, 0xE
|
||||
bl IncrementGameStat
|
||||
b _080D003A
|
||||
|
||||
@@ -1491,7 +1491,7 @@ _080CB128:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
cmp r0, 0x1
|
||||
@@ -1521,7 +1521,7 @@ _080CB176:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
cmp r0, 0x1
|
||||
@@ -3129,7 +3129,7 @@ sub_80CBDCC: @ 80CBDCC
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
pop {r0}
|
||||
bx r0
|
||||
.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
|
||||
thumb_func_end sub_8088E38
|
||||
|
||||
thumb_func_start sub_8088E74
|
||||
sub_8088E74: @ 8088E74
|
||||
thumb_func_start GetSetPokedexFlag
|
||||
GetSetPokedexFlag: @ 8088E74
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
@@ -70,7 +70,7 @@ sub_8088E74: @ 8088E74
|
||||
asrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8088E74
|
||||
thumb_func_end GetSetPokedexFlag
|
||||
|
||||
thumb_func_start pokedex_count
|
||||
pokedex_count: @ 8088E8C
|
||||
@@ -101,7 +101,7 @@ _08088EB2:
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
_08088EBA:
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088ECA
|
||||
@@ -145,7 +145,7 @@ _08088EFC:
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
_08088F04:
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088F14
|
||||
@@ -176,7 +176,7 @@ _08088F28:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088F48
|
||||
@@ -203,7 +203,7 @@ _08088F5C:
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088F74
|
||||
@@ -230,7 +230,7 @@ _08088F88:
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088FD6
|
||||
@@ -244,7 +244,7 @@ _08088FA4:
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088FD6
|
||||
@@ -259,7 +259,7 @@ _08088FC2:
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088FE0
|
||||
|
||||
+2
-2
@@ -482,13 +482,13 @@ sub_8044898: @ 8044898
|
||||
orrs r1, r0
|
||||
lsrs r1, 31
|
||||
adds r0, r4, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080448EE
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
adds r0, r4, 0
|
||||
bl NationalPokedexNumToSpecies
|
||||
lsls r0, 16
|
||||
|
||||
+1
-1
@@ -155,7 +155,7 @@ _080CA4D8:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080CA500
|
||||
|
||||
+1
-1
@@ -525,7 +525,7 @@ ScrCmd_setmysteryeventstatus: @ 806A274
|
||||
adds r1, 0x1
|
||||
str r1, [r0, 0x8]
|
||||
adds r0, r2, 0
|
||||
bl sub_80DA8E8
|
||||
bl SetMysteryEventScriptStatus
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
@@ -154,10 +154,10 @@ ScriptGiveMon: @ 80A011C
|
||||
blt _080A0196
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x3
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
_080A0196:
|
||||
adds r0, r7, 0
|
||||
bl Free
|
||||
|
||||
+1
-1
@@ -8131,7 +8131,7 @@ sub_80507A0: @ 80507A0
|
||||
lsrs r4, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x2
|
||||
bl sub_8088E74
|
||||
bl GetSetPokedexFlag
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x3
|
||||
adds r2, r5, 0
|
||||
|
||||
+1
-1
@@ -556,7 +556,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C
|
||||
gText_EggNickname:: @ 8415A62
|
||||
.incbin "baserom.gba", 0x415A62, 0x4
|
||||
|
||||
gUnknown_8415A66:: @ 8415A66
|
||||
gText_Pokemon:: @ 8415A66
|
||||
.incbin "baserom.gba", 0x415A66, 0x8
|
||||
|
||||
gUnknown_8415A6E:: @ 8415A6E
|
||||
|
||||
+26
-20
@@ -337,32 +337,38 @@ gUnknown_84827B4:: @ 84827B4
|
||||
gUnknown_84886E8:: @ 84886E8
|
||||
.incbin "baserom.gba", 0x4886E8, 0x588
|
||||
|
||||
gUnknown_8488C70:: @ 8488C70
|
||||
.incbin "baserom.gba", 0x488C70, 0x32
|
||||
gText_MysteryGiftBerry:: @ 8488C70
|
||||
.string "Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM.$"
|
||||
|
||||
gUnknown_8488CA2:: @ 8488CA2
|
||||
.incbin "baserom.gba", 0x488CA2, 0x2C
|
||||
gText_MysteryGiftBerryTransform:: @ 8488CA2
|
||||
.string "The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY.$"
|
||||
|
||||
gUnknown_8488CCE:: @ 8488CCE
|
||||
.incbin "baserom.gba", 0x488CCE, 0x28
|
||||
gText_MysteryGiftBerryObtained:: @ 8488CCE
|
||||
.string "The {STR_VAR_1} BERRY has already been\nobtained.$"
|
||||
|
||||
gUnknown_8488CF6:: @ 8488CF6
|
||||
.incbin "baserom.gba", 0x488CF6, 0x34
|
||||
gText_MysteryGiftSpecialRibbon:: @ 8488CF6
|
||||
.string "A special RIBBON was awarded to\nyour party POKéMON.$"
|
||||
|
||||
gUnknown_8488D2A:: @ 8488D2A
|
||||
.incbin "baserom.gba", 0x488D2A, 0x36
|
||||
gText_MysteryGiftNationalDex:: @ 8488D2A
|
||||
.string "The POKéDEX has been upgraded\nwith the NATIONAL MODE.$"
|
||||
|
||||
gUnknown_8488D60:: @ 8488D60
|
||||
.incbin "baserom.gba", 0x488D60, 0x1C
|
||||
gText_MysteryGiftRareWord:: @ 8488D60
|
||||
.string "A rare word has been added.$"
|
||||
|
||||
gUnknown_8488D7C:: @ 8488D7C
|
||||
.incbin "baserom.gba", 0x488D7C, 0x12
|
||||
gText_MysteryGiftSentOver:: @ 8488D7C
|
||||
.string "{STR_VAR_1} was sent over!$"
|
||||
|
||||
gUnknown_8488D8E:: @ 8488D8E
|
||||
.incbin "baserom.gba", 0x488D8E, 0x2F
|
||||
gText_MysteryGiftFullParty:: @ 8488D8E
|
||||
.string "Your party is full.\n{STR_VAR_1} could not be sent over.$"
|
||||
|
||||
gUnknown_8488DBD:: @ 8488DBD
|
||||
.incbin "baserom.gba", 0x488DBD, 0x40
|
||||
gText_MysteryGiftNewTrainer:: @ 8488DBD
|
||||
.string "A new TRAINER has arrived in\nHOENN.$"
|
||||
|
||||
gUnknown_8488DFD:: @ 8488DFD
|
||||
.incbin "baserom.gba", 0x488DFD, 0xB6B
|
||||
gUnknown_8488DE1::
|
||||
.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
|
||||
|
||||
gUnknown_81DBCF0:: @ 81DBCF0
|
||||
gMysteryEventScriptCmdTable:: @ 81DBCF0
|
||||
.incbin "baserom.gba", 0x1DBCF0, 0x44
|
||||
gMysteryEventScriptCmdTableEnd:: @ 81DBD34
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
|
||||
u16 sub_8164FCC(u8, u8);
|
||||
void sub_80E7524(u32 *);
|
||||
void sub_80E7490(void);
|
||||
void ValidateEReaderTrainer(void);
|
||||
|
||||
#endif //GUARD_BATTLE_TOWER_H
|
||||
|
||||
@@ -51,12 +51,12 @@
|
||||
#define VAR_0x402D 0x402D
|
||||
#define VAR_0x402E 0x402E
|
||||
|
||||
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
|
||||
#define VAR_0x402F 0x402F
|
||||
|
||||
#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
|
||||
#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
|
||||
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
|
||||
#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
|
||||
#define VAR_0x4030 0x4030
|
||||
#define VAR_0x4031 0x4031
|
||||
#define VAR_0x4032 0x4032
|
||||
#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
|
||||
|
||||
#define VAR_0x4034 0x4034
|
||||
#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);
|
||||
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
||||
void sub_80BDE28(void);
|
||||
void EnableRareWord(u8);
|
||||
|
||||
#endif // GUARD_EASYCHAT_H
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef GUARD_GLOBAL_BERRY_H
|
||||
#define GUARD_GLOBAL_BERRY_H
|
||||
|
||||
#define BERRY_NAME_LENGTH 6
|
||||
#define BERRY_NAME_COUNT 7
|
||||
#define BERRY_ITEM_EFFECT_COUNT 18
|
||||
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
// Exported ROM declarations
|
||||
|
||||
u16 sub_80D45E8(u16, u16 *);
|
||||
bool8 itemid_is_mail(u16 itemId);
|
||||
|
||||
#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);
|
||||
u16 GetRecordMixingGift(void);
|
||||
|
||||
void sub_80DA89C(void *);
|
||||
void sub_80DA89C(u8 *);
|
||||
bool32 sub_80DA8B0(u32 *);
|
||||
|
||||
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
|
||||
|
||||
@@ -89,5 +89,7 @@ extern const u8 gText_Cancel4[];
|
||||
extern const u8 gText_IsThisTheCorrectTime[];
|
||||
extern const u8 gText_PkmnFainted3[];
|
||||
extern const u8 gText_Coins[];
|
||||
extern const u8 gText_EggNickname[];
|
||||
extern const u8 gText_Pokemon[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
||||
+1
-1
@@ -182,7 +182,7 @@ SECTIONS {
|
||||
asm/roulette_util.o(.text);
|
||||
asm/cable_car_util.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/battle_anim_sound_tasks.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;
|
||||
case 18:
|
||||
memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc);
|
||||
sub_80E7490();
|
||||
ValidateEReaderTrainer();
|
||||
break;
|
||||
case 21:
|
||||
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
|
||||
|
||||
.include "src/save.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_203AA3C: @ 203AA3C
|
||||
.space 0x74
|
||||
.include "src/mystery_event_script.o"
|
||||
|
||||
gUnknown_203AAB0: @ 203AAB0
|
||||
.space 0x4
|
||||
|
||||
Reference in New Issue
Block a user