Skip to content

Commit

Permalink
Match so_general_work.cpp (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
mparisi20 authored Jan 4, 2025
1 parent eb28b3b commit ad79333
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 38 deletions.
7 changes: 7 additions & 0 deletions config/RSBE01_02/rels/sora_melee/splits.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ mo_melee/sora_melee/so/so_resource_module_impl.cpp:
.text start:0x0006F850 end:0x0006FCF4
.data start:0x00008028 end:0x000080F8

mo_melee/sora_melee/so/so_general_work.cpp:
.text start:0x0008D8B4 end:0x0008E230
.ctors start:0x00000028 end:0x0000002C
.rodata start:0x00000C10 end:0x00000C14
.data start:0x00013B08 end:0x00013BE0
.bss start:0x00001B30 end:0x00001B58

mo_melee/sora_melee/so/so_photo_call_back.cpp:
.text start:0x000C7024 end:0x000C7124

Expand Down
80 changes: 43 additions & 37 deletions config/RSBE01_02/rels/sora_melee/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5841,33 +5841,33 @@ fn_27_8D794 = .text:0x0008D794; // type:function size:0x30
fn_27_8D7C4 = .text:0x0008D7C4; // type:function size:0xC
fn_27_8D7D0 = .text:0x0008D7D0; // type:function size:0x40
fn_27_8D810 = .text:0x0008D810; // type:function size:0xA4
fn_27_8D8B4 = .text:0x0008D8B4; // type:function size:0x40
fn_27_8D8F4 = .text:0x0008D8F4; // type:function size:0xD4
fn_27_8D9C8 = .text:0x0008D9C8; // type:function size:0x14
fn_27_8D9DC = .text:0x0008D9DC; // type:function size:0x84
fn_27_8DA60 = .text:0x0008DA60; // type:function size:0x54
fn_27_8DAB4 = .text:0x0008DAB4; // type:function size:0x4C
fn_27_8DB00 = .text:0x0008DB00; // type:function size:0x38
fn_27_8DB38 = .text:0x0008DB38; // type:function size:0x4C
fn_27_8DB84 = .text:0x0008DB84; // type:function size:0x14
fn_27_8DB98 = .text:0x0008DB98; // type:function size:0x90
fn_27_8DC28 = .text:0x0008DC28; // type:function size:0x34
fn_27_8DC5C = .text:0x0008DC5C; // type:function size:0x80
fn_27_8DCDC = .text:0x0008DCDC; // type:function size:0x80
fn_27_8DD5C = .text:0x0008DD5C; // type:function size:0x80
fn_27_8DDDC = .text:0x0008DDDC; // type:function size:0x3C
fn_27_8DE18 = .text:0x0008DE18; // type:function size:0x14
fn_27_8DE2C = .text:0x0008DE2C; // type:function size:0x6C
fn_27_8DE98 = .text:0x0008DE98; // type:function size:0x34
fn_27_8DECC = .text:0x0008DECC; // type:function size:0x6C
fn_27_8DF38 = .text:0x0008DF38; // type:function size:0x84
fn_27_8DFBC = .text:0x0008DFBC; // type:function size:0x7C
fn_27_8E038 = .text:0x0008E038; // type:function size:0x7C
fn_27_8E0B4 = .text:0x0008E0B4; // type:function size:0x7C
fn_27_8E130 = .text:0x0008E130; // type:function size:0x40
fn_27_8E170 = .text:0x0008E170; // type:function size:0x80
fn_27_8E1F0 = .text:0x0008E1F0; // type:function size:0x40
fn_27_8E230 = .text:0x0008E230; // type:function size:0x20
__dt__21soGeneralWorkAbstractFv = .text:0x0008D8B4; // type:function size:0x40
clearWorkAll__13soGeneralWorkFv = .text:0x0008D8F4; // type:function size:0xD4
getFlagWorkSize__13soGeneralWorkFv = .text:0x0008D9C8; // type:function size:0x14
turnOffFlag__13soGeneralWorkFUlUl = .text:0x0008D9DC; // type:function size:0x84
isFlag__13soGeneralWorkCFUlUl = .text:0x0008DA60; // type:function size:0x54
offFlag__13soGeneralWorkFUlUl = .text:0x0008DAB4; // type:function size:0x4C
clearFlag__13soGeneralWorkFUl = .text:0x0008DB00; // type:function size:0x38
onFlag__13soGeneralWorkFUlUl = .text:0x0008DB38; // type:function size:0x4C
getFloatWorkSize__13soGeneralWorkFv = .text:0x0008DB84; // type:function size:0x14
divFloatWork__13soGeneralWorkFfUl = .text:0x0008DB98; // type:function size:0x90
getFloatWork__13soGeneralWorkCFUl = .text:0x0008DC28; // type:function size:0x34
mulFloatWork__13soGeneralWorkFfUl = .text:0x0008DC5C; // type:function size:0x80
subFloatWork__13soGeneralWorkFfUl = .text:0x0008DCDC; // type:function size:0x80
addFloatWork__13soGeneralWorkFfUl = .text:0x0008DD5C; // type:function size:0x80
setFloatWork__13soGeneralWorkFfUl = .text:0x0008DDDC; // type:function size:0x3C
getIntWorkSize__13soGeneralWorkFv = .text:0x0008DE18; // type:function size:0x14
decIntWork__13soGeneralWorkFUl = .text:0x0008DE2C; // type:function size:0x6C
getIntWork__13soGeneralWorkCFUl = .text:0x0008DE98; // type:function size:0x34
incIntWork__13soGeneralWorkFUl = .text:0x0008DECC; // type:function size:0x6C
divIntWork__13soGeneralWorkFlUl = .text:0x0008DF38; // type:function size:0x84
mulIntWork__13soGeneralWorkFlUl = .text:0x0008DFBC; // type:function size:0x7C
subIntWork__13soGeneralWorkFlUl = .text:0x0008E038; // type:function size:0x7C
addIntWork__13soGeneralWorkFlUl = .text:0x0008E0B4; // type:function size:0x7C
setIntWork__13soGeneralWorkFlUl = .text:0x0008E130; // type:function size:0x40
__sinit_\so_general_work_cpp = .text:0x0008E170; // type:function size:0x80
__dt__13soGeneralWorkFv = .text:0x0008E1F0; // type:function size:0x40
__ct__21soGeneralWorkAbstractFv = .text:0x0008E230; // type:function size:0x20
fn_27_8E250 = .text:0x0008E250; // type:function size:0x8
fn_27_8E258 = .text:0x0008E258; // type:function size:0x8
fn_27_8E260 = .text:0x0008E260; // type:function size:0x4
Expand Down Expand Up @@ -26853,7 +26853,7 @@ lbl_27_rodata_BE4 = .rodata:0x00000BE4; // type:object size:0x14 data:float
lbl_27_rodata_BF8 = .rodata:0x00000BF8; // type:object size:0x4 data:float
lbl_27_rodata_C00 = .rodata:0x00000C00; // type:object size:0x8 data:double
lbl_27_rodata_C08 = .rodata:0x00000C08; // type:object size:0x8 data:float
lbl_27_rodata_C10 = .rodata:0x00000C10; // type:object size:0x8 data:float
lbl_27_rodata_C10 = .rodata:0x00000C10; // type:object size:0x4 data:float
lbl_27_rodata_C18 = .rodata:0x00000C18; // type:object size:0x8 data:float
lbl_27_rodata_C20 = .rodata:0x00000C20; // type:object size:0x8 data:float
lbl_27_rodata_C28 = .rodata:0x00000C28; // type:object size:0x4 data:float
Expand Down Expand Up @@ -30040,13 +30040,13 @@ lbl_27_data_13A30 = .data:0x00013A30; // type:object size:0x40
lbl_27_data_13A70 = .data:0x00013A70; // type:object size:0x98
lbl_27_data_13B08 = .data:0x00013B08; // type:object size:0x4
lbl_27_data_13B0C = .data:0x00013B0C; // type:object size:0x4
lbl_27_data_13B10 = .data:0x00013B10; // type:object size:0x70
__vt__13soGeneralWork = .data:0x00013B10; // type:object size:0x70
lbl_27_data_13B80 = .data:0x00013B80; // type:object size:0x10
lbl_27_data_13B90 = .data:0x00013B90; // type:object size:0x18
lbl_27_data_13BA8 = .data:0x00013BA8; // type:object size:0x8
__RTTI__13soGeneralWork = .data:0x00013BA8; // type:object size:0x8
lbl_27_data_13BB0 = .data:0x00013BB0; // type:object size:0x18
lbl_27_data_13BC8 = .data:0x00013BC8; // type:object size:0x10
lbl_27_data_13BD8 = .data:0x00013BD8; // type:object size:0x8
__RTTI__21soGeneralWorkAbstract = .data:0x00013BD8; // type:object size:0x8
lbl_27_data_13BE0 = .data:0x00013BE0; // type:object size:0x70
lbl_27_data_13C50 = .data:0x00013C50; // type:object size:0x70
lbl_27_data_13CC0 = .data:0x00013CC0; // type:object size:0x14 data:string
Expand Down Expand Up @@ -38792,11 +38792,17 @@ lbl_27_bss_8C4 = .bss:0x000008C4; // type:object size:0x10
lbl_27_bss_8D4 = .bss:0x000008D4; // type:object size:0x10
lbl_27_bss_8E4 = .bss:0x000008E4; // type:object size:0x14
lbl_27_bss_8F8 = .bss:0x000008F8; // type:object size:0x24 data:4byte
lbl_27_bss_91C = .bss:0x0000091C; // type:object size:0x10
lbl_27_bss_92C = .bss:0x0000092C; // type:object size:0x10
lbl_27_bss_93C = .bss:0x0000093C; // type:object size:0x10
lbl_27_bss_94C = .bss:0x0000094C; // type:object size:0x20
lbl_27_bss_96C = .bss:0x0000096C; // type:object size:0x30
lbl_27_bss_91C = .bss:0x0000091C; // type:object size:0x4
lbl_27_bss_920 = .bss:0x00000920; // type:object size:0xC
g_s32ArrayNull = .bss:0x0000092C; // type:object size:0x4
lbl_27_bss_930 = .bss:0x00000930; // type:object size:0xC
g_u32ArrayNull = .bss:0x0000093C; // type:object size:0x4
lbl_27_bss_940 = .bss:0x00000940; // type:object size:0xC
g_floatArrayNull = .bss:0x0000094C; // type:object size:0x4
lbl_27_bss_950 = .bss:0x00000950; // type:object size:0xC
g_charArrayNull = .bss:0x0000095C; // type:object size:0x4
lbl_27_bss_960 = .bss:0x00000960; // type:object size:0xC
g_s32GeneralFlagArrayNull = .bss:0x0000096C; // type:object size:0x4
lbl_27_bss_99C = .bss:0x0000099C; // type:object size:0x10
lbl_27_bss_9AC = .bss:0x000009AC; // type:object size:0x10
lbl_27_bss_9BC = .bss:0x000009BC; // type:object size:0x14
Expand Down Expand Up @@ -39083,7 +39089,7 @@ lbl_27_bss_1B18 = .bss:0x00001B18; // type:object size:0x8 data:4byte
lbl_27_bss_1B20 = .bss:0x00001B20; // type:object size:0x8 data:4byte
lbl_27_bss_1B28 = .bss:0x00001B28; // type:object size:0x8 data:4byte
lbl_27_bss_1B30 = .bss:0x00001B30; // type:object size:0x10
lbl_27_bss_1B40 = .bss:0x00001B40; // type:object size:0x18 data:4byte
g_soGeneralWork = .bss:0x00001B40; // type:object size:0x18 data:4byte
lbl_27_bss_1B58 = .bss:0x00001B58; // type:object size:0xC
lbl_27_bss_1B64 = .bss:0x00001B64; // type:object size:0xC data:4byte
lbl_27_bss_1B70 = .bss:0x00001B70; // type:object size:0xC
Expand Down
1 change: 1 addition & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,7 @@ def MatchingFor(*versions):
"host": False,
"objects": [
Object(Matching, "mo_melee/sora_melee/so/so_resource_module_impl.cpp"),
Object(Matching, "mo_melee/sora_melee/so/so_general_work.cpp"),
Object(Matching, "mo_melee/sora_melee/so/so_photo_call_back.cpp"),
Object(Matching, "mo_melee/sora_melee/so/so_common_data_accesser.cpp"),
Object(Matching, "mo_melee/mo_melee.cpp"),
Expand Down
127 changes: 127 additions & 0 deletions src/mo_melee/sora_melee/so/so_general_work.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#include <StaticAssert.h>
#include <so/so_array.h>
#include <so/so_general_flag.h>
#include <so/so_null.h>
#include <so/work/so_general_work_abstract.h>
#include <so/work/so_general_work.h>
#include <types.h>

soGeneralWork g_soGeneralWork(&g_s32ArrayNull, &g_floatArrayNull, &g_s32GeneralFlagArrayNull);

namespace {
// This class and function are present only to hoist the inline
// definition of ~soGeneralWorkAbstract to the beginning
// of this file's .text section
class UnusedClass : public soGeneralWorkAbstract {

};

UnusedClass getTestClass() {
UnusedClass c;
return c;
}
}

void soGeneralWork::clearWorkAll() {
m_ints->set(0, 0, m_ints->size());
m_floats->set(0, 0, m_floats->size());
m_flags->set(0, 0, m_flags->size());
}

u32 soGeneralWork::getFlagWorkSize() {
return m_flags->size();
}

u32 soGeneralWork::turnOffFlag(u32 flag, u32 index) {
u32 result;
if ((result = isFlag(flag, index)) == 1) {
offFlag(flag, index);
}
return result;
}

bool soGeneralWork::isFlag(u32 flag, u32 index) const {
soGeneralFlag<s32> *gflag = m_flags->at(index);
return gflag->flag & flag;
}

void soGeneralWork::offFlag(u32 flag, u32 index) {
m_flags->at(index)->flag &= ~flag;
}

void soGeneralWork::clearFlag(u32 index) {
soGeneralFlag<s32> *gflag = m_flags->at(index);
gflag->flag = 0;
}

void soGeneralWork::onFlag(u32 flag, u32 index) {
m_flags->at(index)->flag |= flag;
}

u32 soGeneralWork::getFloatWorkSize() {
return m_floats->size();
}

void soGeneralWork::divFloatWork(float value, u32 index) {
if (0.0f != value) {
m_floats->set(index, getFloatWork(index) / value, 1);
}
}

float soGeneralWork::getFloatWork(u32 index) const {
return *m_floats->at(index);
}

void soGeneralWork::mulFloatWork(float value, u32 index) {
m_floats->set(index, value * getFloatWork(index), 1);
}

void soGeneralWork::subFloatWork(float value, u32 index) {
m_floats->set(index, getFloatWork(index) - value, 1);
}

void soGeneralWork::addFloatWork(float value, u32 index) {
m_floats->set(index, value + getFloatWork(index), 1);
}

void soGeneralWork::setFloatWork(float value, u32 index) {
m_floats->set(index, value, 1);
}

u32 soGeneralWork::getIntWorkSize() {
return m_ints->size();
}

void soGeneralWork::decIntWork(u32 index) {
m_ints->set(index, getIntWork(index) - 1, 1);
}

s32 soGeneralWork::getIntWork(u32 index) const {
return *m_ints->at(index);
}

void soGeneralWork::incIntWork(u32 index) {
m_ints->set(index, getIntWork(index) + 1, 1);
}

void soGeneralWork::divIntWork(s32 value, u32 index) {
if (0 != value) {
m_ints->set(index, getIntWork(index) / value, 1);
}
}

void soGeneralWork::mulIntWork(s32 value, u32 index) {
m_ints->set(index, value * getIntWork(index), 1);
}

void soGeneralWork::subIntWork(s32 value, u32 index) {
m_ints->set(index, getIntWork(index) - value, 1);
}

void soGeneralWork::addIntWork(s32 value, u32 index) {
m_ints->set(index, value + getIntWork(index), 1);
}

void soGeneralWork::setIntWork(s32 value, u32 index) {
m_ints->set(index, value, 1);
}

0 comments on commit ad79333

Please sign in to comment.