through ScrCmd_copyvar
This commit is contained in:
-234
@@ -5,240 +5,6 @@
|
||||
|
||||
.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
|
||||
ScrCmd_setorcopyvar: @ 806A3E0
|
||||
push {r4,r5,lr}
|
||||
|
||||
@@ -66,4 +66,6 @@ bool32 sub_8069DFC(void);
|
||||
void sub_8069EA4(u8 * script, u16 scriptSize);
|
||||
u8 * sub_8069E48(void);
|
||||
|
||||
extern const u8 *gRAMScriptPtr;
|
||||
|
||||
#endif // GUARD_SCRIPT_H
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "gba/isagbprint.h"
|
||||
#include "script.h"
|
||||
#include "mystery_event_script.h"
|
||||
#include "event_data.h"
|
||||
|
||||
extern u16 (*const gSpecials[])(void);
|
||||
@@ -215,6 +216,101 @@ SCRCMD_DEF(ScrCmd_callstd_if)
|
||||
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[] =
|
||||
{
|
||||
gStringVar1,
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ enum
|
||||
};
|
||||
|
||||
EWRAM_DATA u8 gUnknown_20370A0 = 0;
|
||||
EWRAM_DATA u8 *gUnknown_20370A4 = NULL;
|
||||
EWRAM_DATA const u8 *gRAMScriptPtr = NULL;
|
||||
|
||||
// ewram bss
|
||||
/*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)
|
||||
{
|
||||
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
|
||||
gUnknown_20370A4 = NULL;
|
||||
gRAMScriptPtr = NULL;
|
||||
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
||||
return script;
|
||||
if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup)
|
||||
@@ -501,7 +501,7 @@ u8 *GetRamScript(u8 objectId, u8 *script)
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_20370A4 = script;
|
||||
gRAMScriptPtr = script;
|
||||
return scriptData->script;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user