through ScrCmd_copyvar
This commit is contained in:
-234
@@ -5,240 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start ScrCmd_gotoram
|
|
||||||
ScrCmd_gotoram: @ 806A248
|
|
||||||
push {lr}
|
|
||||||
ldr r1, _0806A258 @ =gUnknown_20370A4
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl ScriptJump
|
|
||||||
movs r0, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0806A258: .4byte gUnknown_20370A4
|
|
||||||
thumb_func_end ScrCmd_gotoram
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_killscript
|
|
||||||
ScrCmd_killscript: @ 806A25C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ClearRamScript
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl StopScript
|
|
||||||
movs r0, 0x1
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_killscript
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_setmysteryeventstatus
|
|
||||||
ScrCmd_setmysteryeventstatus: @ 806A274
|
|
||||||
push {lr}
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl SetMysteryEventScriptStatus
|
|
||||||
movs r0, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_setmysteryeventstatus
|
|
||||||
|
|
||||||
thumb_func_start sub_806A28C
|
|
||||||
sub_806A28C: @ 806A28C
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_8069E48
|
|
||||||
adds r2, r0, 0
|
|
||||||
cmp r2, 0
|
|
||||||
beq _0806A2A8
|
|
||||||
ldr r1, _0806A2B0 @ =gUnknown_20370A4
|
|
||||||
ldr r0, [r4, 0x8]
|
|
||||||
str r0, [r1]
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r2, 0
|
|
||||||
bl ScriptJump
|
|
||||||
_0806A2A8:
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0806A2B0: .4byte gUnknown_20370A4
|
|
||||||
thumb_func_end sub_806A28C
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_loadword
|
|
||||||
ScrCmd_loadword: @ 806A2B4
|
|
||||||
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
|
|
||||||
lsls r5, 2
|
|
||||||
adds r4, 0x64
|
|
||||||
adds r4, r5
|
|
||||||
str r0, [r4]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_loadword
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_loadbytefromaddr
|
|
||||||
ScrCmd_loadbytefromaddr: @ 806A2D8
|
|
||||||
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
|
|
||||||
lsls r5, 2
|
|
||||||
adds r4, 0x64
|
|
||||||
adds r4, r5
|
|
||||||
ldrb r0, [r0]
|
|
||||||
str r0, [r4]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_loadbytefromaddr
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_writebytetoaddr
|
|
||||||
ScrCmd_writebytetoaddr: @ 806A2FC
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r4, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
bl ScriptReadWord
|
|
||||||
strb r4, [r0]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_writebytetoaddr
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_loadbyte
|
|
||||||
ScrCmd_loadbyte: @ 806A314
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r3, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
lsls r3, 2
|
|
||||||
adds r2, r0, 0
|
|
||||||
adds r2, 0x64
|
|
||||||
adds r2, r3
|
|
||||||
ldrb r3, [r1]
|
|
||||||
str r3, [r2]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
bx lr
|
|
||||||
thumb_func_end ScrCmd_loadbyte
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_setptrbyte
|
|
||||||
ScrCmd_setptrbyte: @ 806A330
|
|
||||||
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
|
|
||||||
lsls r5, 2
|
|
||||||
adds r4, 0x64
|
|
||||||
adds r4, r5
|
|
||||||
ldr r1, [r4]
|
|
||||||
strb r1, [r0]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_setptrbyte
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_copylocal
|
|
||||||
ScrCmd_copylocal: @ 806A354
|
|
||||||
ldr r1, [r0, 0x8]
|
|
||||||
ldrb r3, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r1, 0x1
|
|
||||||
str r1, [r0, 0x8]
|
|
||||||
lsls r3, 2
|
|
||||||
adds r0, 0x64
|
|
||||||
adds r3, r0, r3
|
|
||||||
lsls r2, 2
|
|
||||||
adds r0, r2
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r3]
|
|
||||||
movs r0, 0
|
|
||||||
bx lr
|
|
||||||
thumb_func_end ScrCmd_copylocal
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_copybyte
|
|
||||||
ScrCmd_copybyte: @ 806A374
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ScriptReadWord
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strb r0, [r5]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_copybyte
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_setvar
|
|
||||||
ScrCmd_setvar: @ 806A390
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl GetVarPointer
|
|
||||||
adds r4, r0, 0
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
strh r0, [r4]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_setvar
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_copyvar
|
|
||||||
ScrCmd_copyvar: @ 806A3B4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl GetVarPointer
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl ScriptReadHalfword
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl GetVarPointer
|
|
||||||
ldrh r0, [r0]
|
|
||||||
strh r0, [r5]
|
|
||||||
movs r0, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ScrCmd_copyvar
|
|
||||||
|
|
||||||
thumb_func_start ScrCmd_setorcopyvar
|
thumb_func_start ScrCmd_setorcopyvar
|
||||||
ScrCmd_setorcopyvar: @ 806A3E0
|
ScrCmd_setorcopyvar: @ 806A3E0
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
|||||||
@@ -66,4 +66,6 @@ bool32 sub_8069DFC(void);
|
|||||||
void sub_8069EA4(u8 * script, u16 scriptSize);
|
void sub_8069EA4(u8 * script, u16 scriptSize);
|
||||||
u8 * sub_8069E48(void);
|
u8 * sub_8069E48(void);
|
||||||
|
|
||||||
|
extern const u8 *gRAMScriptPtr;
|
||||||
|
|
||||||
#endif // GUARD_SCRIPT_H
|
#endif // GUARD_SCRIPT_H
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "gba/isagbprint.h"
|
#include "gba/isagbprint.h"
|
||||||
#include "script.h"
|
#include "script.h"
|
||||||
|
#include "mystery_event_script.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
|
|
||||||
extern u16 (*const gSpecials[])(void);
|
extern u16 (*const gSpecials[])(void);
|
||||||
@@ -215,6 +216,101 @@ SCRCMD_DEF(ScrCmd_callstd_if)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_gotoram)
|
||||||
|
{
|
||||||
|
ScriptJump(ctx, gRAMScriptPtr);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_killscript)
|
||||||
|
{
|
||||||
|
ClearRamScript();
|
||||||
|
StopScript(ctx);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_setmysteryeventstatus)
|
||||||
|
{
|
||||||
|
SetMysteryEventScriptStatus(ScriptReadByte(ctx));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(sub_806A28C)
|
||||||
|
{
|
||||||
|
const u8 * script = sub_8069E48();
|
||||||
|
if (script != NULL)
|
||||||
|
{
|
||||||
|
gRAMScriptPtr = ctx->scriptPtr;
|
||||||
|
ScriptJump(ctx, script);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_loadword)
|
||||||
|
{
|
||||||
|
u8 which = ScriptReadByte(ctx);
|
||||||
|
ctx->data[which] = ScriptReadWord(ctx);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_loadbytefromaddr)
|
||||||
|
{
|
||||||
|
u8 which = ScriptReadByte(ctx);
|
||||||
|
ctx->data[which] = *(const u8 *)ScriptReadWord(ctx);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_writebytetoaddr)
|
||||||
|
{
|
||||||
|
u8 value = ScriptReadByte(ctx);
|
||||||
|
*(u8 *)ScriptReadWord(ctx) = value;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_loadbyte)
|
||||||
|
{
|
||||||
|
u8 which = ScriptReadByte(ctx);
|
||||||
|
ctx->data[which] = ScriptReadByte(ctx);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_setptrbyte)
|
||||||
|
{
|
||||||
|
u8 which = ScriptReadByte(ctx);
|
||||||
|
*(u8 *)ScriptReadWord(ctx) = ctx->data[which];
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_copylocal)
|
||||||
|
{
|
||||||
|
u8 whichDst = ScriptReadByte(ctx);
|
||||||
|
u8 whichSrc = ScriptReadByte(ctx);
|
||||||
|
ctx->data[whichDst] = ctx->data[whichSrc];
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_copybyte)
|
||||||
|
{
|
||||||
|
u8 * dest = (u8 *)ScriptReadWord(ctx);
|
||||||
|
*dest = *(const u8 *)ScriptReadWord(ctx);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_setvar)
|
||||||
|
{
|
||||||
|
u16 * varPtr = GetVarPointer(ScriptReadHalfword(ctx));
|
||||||
|
*varPtr = ScriptReadHalfword(ctx);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRCMD_DEF(ScrCmd_copyvar)
|
||||||
|
{
|
||||||
|
u16 * destPtr = GetVarPointer(ScriptReadHalfword(ctx));
|
||||||
|
u16 * srcPtr = GetVarPointer(ScriptReadHalfword(ctx));
|
||||||
|
*destPtr = *srcPtr;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
u8 * const sScriptStringVars[] =
|
u8 * const sScriptStringVars[] =
|
||||||
{
|
{
|
||||||
gStringVar1,
|
gStringVar1,
|
||||||
|
|||||||
+3
-3
@@ -19,7 +19,7 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
EWRAM_DATA u8 gUnknown_20370A0 = 0;
|
EWRAM_DATA u8 gUnknown_20370A0 = 0;
|
||||||
EWRAM_DATA u8 *gUnknown_20370A4 = NULL;
|
EWRAM_DATA const u8 *gRAMScriptPtr = NULL;
|
||||||
|
|
||||||
// ewram bss
|
// ewram bss
|
||||||
/*IWRAM_DATA*/ static u8 sScriptContext1Status;
|
/*IWRAM_DATA*/ static u8 sScriptContext1Status;
|
||||||
@@ -485,7 +485,7 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec
|
|||||||
u8 *GetRamScript(u8 objectId, u8 *script)
|
u8 *GetRamScript(u8 objectId, u8 *script)
|
||||||
{
|
{
|
||||||
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
|
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
|
||||||
gUnknown_20370A4 = NULL;
|
gRAMScriptPtr = NULL;
|
||||||
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
||||||
return script;
|
return script;
|
||||||
if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup)
|
if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup)
|
||||||
@@ -501,7 +501,7 @@ u8 *GetRamScript(u8 objectId, u8 *script)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gUnknown_20370A4 = script;
|
gRAMScriptPtr = script;
|
||||||
return scriptData->script;
|
return scriptData->script;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user