through ScrCmd_copyvar

This commit is contained in:
PikalaxALT
2019-01-06 07:54:57 -05:00
parent 0eba7e0870
commit d2538cffa0
4 changed files with 101 additions and 237 deletions
-234
View File
@@ -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}
+2
View File
@@ -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
+96
View File
@@ -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
View File
@@ -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;
}
}