mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-12 02:56:01 -05:00
Add funcs matched by @Kermalis
This commit is contained in:
217
asm/event_flag.s
217
asm/event_flag.s
@@ -444,221 +444,4 @@ _080018CE:
|
||||
bx r1
|
||||
thumb_func_end GetScriptVarArrayValue
|
||||
|
||||
thumb_func_start SetScriptVarValue
|
||||
SetScriptVarValue:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
adds r3, r0, 0
|
||||
adds r4, r2, 0
|
||||
lsls r1, 16
|
||||
asrs r5, r1, 16
|
||||
mov r0, sp
|
||||
adds r1, r3, 0
|
||||
adds r2, r5, 0
|
||||
bl GetScriptVarRef
|
||||
ldr r0, [sp]
|
||||
ldrh r0, [r0]
|
||||
subs r0, 0x1
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x7
|
||||
bhi _08001990
|
||||
lsls r0, 2
|
||||
ldr r1, _08001908
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08001908: .4byte _0800190C
|
||||
.align 2, 0
|
||||
_0800190C:
|
||||
.4byte _0800192C
|
||||
.4byte _08001958
|
||||
.4byte _08001958
|
||||
.4byte _0800195E
|
||||
.4byte _0800195E
|
||||
.4byte _08001964
|
||||
.4byte _08001958
|
||||
.4byte _08001968
|
||||
_0800192C:
|
||||
ldr r0, [sp]
|
||||
movs r2, 0x6
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r0, 0x80
|
||||
lsls r0, 17
|
||||
lsls r0, r1
|
||||
lsrs r3, r0, 24
|
||||
cmp r4, 0
|
||||
beq _0800194A
|
||||
ldr r2, [sp, 0x4]
|
||||
ldrb r1, [r2]
|
||||
adds r0, r3, 0
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
b _08001990
|
||||
_0800194A:
|
||||
ldr r2, [sp, 0x4]
|
||||
ldrb r1, [r2]
|
||||
adds r0, r3, 0
|
||||
orrs r0, r1
|
||||
eors r0, r3
|
||||
strb r0, [r2]
|
||||
b _08001990
|
||||
_08001958:
|
||||
ldr r0, [sp, 0x4]
|
||||
strb r4, [r0]
|
||||
b _08001990
|
||||
_0800195E:
|
||||
ldr r0, [sp, 0x4]
|
||||
strh r4, [r0]
|
||||
b _08001990
|
||||
_08001964:
|
||||
ldr r0, [sp, 0x4]
|
||||
b _0800198E
|
||||
_08001968:
|
||||
cmp r5, 0x22
|
||||
beq _08001972
|
||||
cmp r5, 0x23
|
||||
beq _08001984
|
||||
b _08001990
|
||||
_08001972:
|
||||
ldr r0, _08001980
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
b _0800198E
|
||||
.align 2, 0
|
||||
_08001980: .4byte gTeamInventoryRef
|
||||
_08001984:
|
||||
ldr r0, _08001998
|
||||
ldr r0, [r0]
|
||||
movs r2, 0x99
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
_0800198E:
|
||||
str r4, [r0]
|
||||
_08001990:
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001998: .4byte gTeamInventoryRef
|
||||
thumb_func_end SetScriptVarValue
|
||||
|
||||
thumb_func_start SetScriptVarArrayValue
|
||||
SetScriptVarArrayValue:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r6, r3, 0
|
||||
lsls r1, 16
|
||||
asrs r7, r1, 16
|
||||
lsls r2, 16
|
||||
lsrs r5, r2, 16
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
adds r2, r7, 0
|
||||
bl GetScriptVarRef
|
||||
ldr r0, [sp]
|
||||
ldrh r0, [r0]
|
||||
subs r0, 0x1
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x7
|
||||
bhi _08001A68
|
||||
lsls r0, 2
|
||||
ldr r1, _080019D0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080019D0: .4byte _080019D4
|
||||
.align 2, 0
|
||||
_080019D4:
|
||||
.4byte _080019F4
|
||||
.4byte _08001A2C
|
||||
.4byte _08001A2C
|
||||
.4byte _08001A34
|
||||
.4byte _08001A34
|
||||
.4byte _08001A3E
|
||||
.4byte _08001A2C
|
||||
.4byte _08001A44
|
||||
_080019F4:
|
||||
ldr r0, [sp]
|
||||
ldrh r0, [r0, 0x6]
|
||||
adds r0, r5, r0
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 19
|
||||
ldr r1, [sp, 0x4]
|
||||
adds r3, r1, r2
|
||||
movs r1, 0xE0
|
||||
lsls r1, 11
|
||||
ands r1, r0
|
||||
lsrs r1, 16
|
||||
movs r0, 0x80
|
||||
lsls r0, 17
|
||||
lsls r0, r1
|
||||
lsrs r2, r0, 24
|
||||
cmp r6, 0
|
||||
beq _08001A20
|
||||
ldrb r1, [r3]
|
||||
adds r0, r2, 0
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
b _08001A68
|
||||
_08001A20:
|
||||
ldrb r1, [r3]
|
||||
adds r0, r2, 0
|
||||
orrs r0, r1
|
||||
eors r0, r2
|
||||
strb r0, [r3]
|
||||
b _08001A68
|
||||
_08001A2C:
|
||||
ldr r0, [sp, 0x4]
|
||||
adds r0, r5
|
||||
strb r6, [r0]
|
||||
b _08001A68
|
||||
_08001A34:
|
||||
ldr r1, [sp, 0x4]
|
||||
lsls r0, r5, 1
|
||||
adds r0, r1
|
||||
strh r6, [r0]
|
||||
b _08001A68
|
||||
_08001A3E:
|
||||
ldr r1, [sp, 0x4]
|
||||
lsls r0, r5, 2
|
||||
b _08001A64
|
||||
_08001A44:
|
||||
cmp r7, 0x22
|
||||
beq _08001A4E
|
||||
cmp r7, 0x23
|
||||
beq _08001A5C
|
||||
b _08001A68
|
||||
_08001A4E:
|
||||
ldr r0, _08001A58
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x98
|
||||
lsls r1, 2
|
||||
b _08001A64
|
||||
.align 2, 0
|
||||
_08001A58: .4byte gTeamInventoryRef
|
||||
_08001A5C:
|
||||
ldr r0, _08001A70
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x99
|
||||
lsls r1, 2
|
||||
_08001A64:
|
||||
adds r0, r1
|
||||
str r6, [r0]
|
||||
_08001A68:
|
||||
add sp, 0x8
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08001A70: .4byte gTeamInventoryRef
|
||||
thumb_func_end SetScriptVarArrayValue
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
||||
@@ -17,7 +17,7 @@ const u8 *GetCurrentMissionText(s16 index);
|
||||
bool8 IsMazeCompleted(s16 mazeIndex);
|
||||
|
||||
bool8 sub_8096F50(WonderMail *mail);
|
||||
void sub_8097418(s16 index, bool32);
|
||||
void sub_8097418(s32 index, bool32);
|
||||
bool8 sub_8097504(s16 mazeIndex);
|
||||
const u8 *sub_80975DC(s16);
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ void GetScriptVarRef(struct ScriptVarPtr *out, u8 *localVarBuf, s32 varId);
|
||||
s32 GetScriptVarValue(u8 *localVarBuf, s32 varId);
|
||||
s32 GetScriptVarArrayValue(u8 *localVarBuf, s32 varId, u16 idx);
|
||||
void SetScriptVarValue(u8 *localVarBuf, s32 varId, s32 val);
|
||||
void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId, u16 idx, s32 val);
|
||||
void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId, s32 idx, s32 val);
|
||||
s32 GetScriptVarArraySum(u8 *localVarBuf, s16 varId);
|
||||
void GetScriptVarScenario(s32 varId,u32 *outMain,u32 *outSub);
|
||||
void ScenarioCalc(s16 varId, s32 main, s32 sub);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "dungeon.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "event_flag.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "code_80A26CC.h"
|
||||
#include "code_80972F4.h"
|
||||
|
||||
@@ -85,21 +85,21 @@ bool32 sub_8097384(s16 param_1)
|
||||
return val;
|
||||
}
|
||||
|
||||
void sub_80973A8(s16 param_1,u32 param_2)
|
||||
void sub_80973A8(s32 param_1,u32 param_2)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 param_1_s32 = param_1;
|
||||
s32 param_1_s32 = (s16)param_1;
|
||||
u8 param_2_u32 = param_2;
|
||||
|
||||
if (param_1_s32 != 0xd) {
|
||||
if (param_2_u32 != 0) {
|
||||
sVar1 = sub_80A26B8(param_1);
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_ORDER_LIST,param_1_s32,0);
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_ORDER_LIST,(u16)param_1_s32,0);
|
||||
if (sVar1 != -1) {
|
||||
SetScriptVarValue(NULL,DUNGEON_SELECT,sVar1);
|
||||
}
|
||||
}
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_JOB_LIST,param_1_s32,param_2_u32);
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_JOB_LIST,(u16)param_1_s32,param_2_u32);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,12 +120,12 @@ bool32 RescueScenarioConquered(s16 param_1)
|
||||
return val;
|
||||
}
|
||||
|
||||
void sub_8097418(s16 index,bool32 param_2)
|
||||
void sub_8097418(s32 index,bool32 param_2)
|
||||
{
|
||||
int index_s32 = index;
|
||||
int index_s32 = (s16)index;
|
||||
bool8 param_2_u8 = param_2;
|
||||
if (index_s32 != 0xd) {
|
||||
if ((param_2_u8) && (SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_JOB_LIST,index_s32,0), index_s32 < 0x1f)) {
|
||||
if ((param_2_u8) && (SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_JOB_LIST,(u16)index_s32,0), index_s32 < 0x1f)) {
|
||||
const MissionText *mt = &sStoryMissionText[index_s32];
|
||||
if (mt->unk4 != 0xFF) {
|
||||
sub_8097FA8(mt->unk4);
|
||||
@@ -138,7 +138,7 @@ void sub_8097418(s16 index,bool32 param_2)
|
||||
}
|
||||
sub_8097FF8();
|
||||
}
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_CONQUEST_LIST,index_s32,param_2_u8);
|
||||
SetScriptVarArrayValue(NULL,RESCUE_SCENARIO_CONQUEST_LIST,(u16)index_s32,param_2_u8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
118
src/event_flag.c
118
src/event_flag.c
@@ -52,6 +52,124 @@ extern void sub_80973A8(u32, u32);
|
||||
// code_80972F4.h (read comment)
|
||||
extern bool8 RescueScenarioConquered(s16);
|
||||
|
||||
void SetScriptVarValue(u8 *localVarBuf, s32 varId_, s32 val)
|
||||
{
|
||||
s32 varID;
|
||||
struct ScriptVarPtr sp;
|
||||
|
||||
varID = (s16)varId_;
|
||||
GetScriptVarRef(&sp, localVarBuf, varID);
|
||||
|
||||
switch (sp.info->type) {
|
||||
case 1: {
|
||||
u8 bVar1 = 1 << sp.info->bitOffset;
|
||||
|
||||
if (val != 0)
|
||||
*sp.ptr |= bVar1;
|
||||
else
|
||||
*sp.ptr = (bVar1 | *sp.ptr) ^ bVar1;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
*((s8 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
*((u8 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 7: {
|
||||
*((bool8 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
*((s16 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
*((u16 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
*((s32 *)sp.ptr) = val;
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
switch (varID) {
|
||||
case 0x22: {
|
||||
gTeamInventoryRef->teamMoney = val;
|
||||
break;
|
||||
}
|
||||
case 0x23: {
|
||||
gTeamInventoryRef->teamSavings = val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId_, s32 idx_, s32 val)
|
||||
{
|
||||
s32 varID;
|
||||
struct ScriptVarPtr sp;
|
||||
s32 idx;
|
||||
|
||||
varID = (s16)varId_;
|
||||
idx = (u16)idx_;
|
||||
GetScriptVarRef(&sp, localVarBuf, varID);
|
||||
|
||||
switch (sp.info->type) {
|
||||
case 1: {
|
||||
s32 bitOffset = (u16)sp.info->bitOffset;
|
||||
u16 flagNum = idx + bitOffset;
|
||||
u8 *a = &sp.ptr[flagNum / 8];
|
||||
u8 bVar1 = 1 << (flagNum % 8);
|
||||
if (val != 0)
|
||||
*a |= bVar1;
|
||||
else
|
||||
*a = (bVar1 | *a) ^ bVar1;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
((s8 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
((u8 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 7: {
|
||||
((bool8 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
((s16 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
((u16 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
((s32 *)sp.ptr)[idx] = val;
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
switch (varID) {
|
||||
case 0x22: {
|
||||
gTeamInventoryRef->teamMoney = val;
|
||||
break;
|
||||
}
|
||||
case 0x23: {
|
||||
gTeamInventoryRef->teamSavings = val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED u8 *GetScriptVarPointer(s16 varId)
|
||||
{
|
||||
struct ScriptVarPtr local_1c;
|
||||
|
||||
Reference in New Issue
Block a user