SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
ConfigDataMii.cpp
1#include "Game/System/ConfigDataMii.hpp"
2#include "Game/Util.hpp"
3#include "JSystem/JSupport/JSUMemoryInputStream.hpp"
4#include "JSystem/JSupport/JSUMemoryOutputStream.hpp"
5
6ConfigDataMii::ConfigDataMii() {
7 _4 = 0;
8 mIconID = 1;
9 mBuffer = 0;
10 mBuffer = new u8[0x8];
11 initializeData();
12}
13
14void ConfigDataMii::setMiiOrIconId(const void *pData, const u32 *a2) {
15 if (pData) {
16 MR::copyMemory(mBuffer, pData, 8);
17 _4 |= 0x2;
18 mIconID = 0;
19 }
20 else {
21 MR::fillMemory(mBuffer, 0, 8);
22 mIconID = *a2;
23 }
24}
25
26bool ConfigDataMii::getIconId(u32 *pIconId) const {
27 *pIconId = mIconID;
28 return mIconID != 0;
29}
30
31bool ConfigDataMii::getMiiId(void *pData) const {
32 MR::copyMemory(pData, mBuffer, 8);
33 return !mIconID;
34}
35
36u32 ConfigDataMii::makeHeaderHashCode() const {
37 return 0x2836E9;
38}
39
40u32 ConfigDataMii::getSignature() const {
41 return 0x4D494920;
42}
43
44s32 ConfigDataMii::serialize(u8 *pData, u32 len) const {
45 JSUMemoryOutputStream stream;
46 stream.setBuffer(pData, len);
47 u8 stack_9 = _4;
48 stream.write(&stack_9, 1);
49 stream.write(mBuffer, 8);
50 u8 stack_8 = mIconID;
51 stream.write(&stack_8, 1);
52 return stream.mPosition;
53}
54
55s32 ConfigDataMii::deserialize(const u8 *pData, u32 len) {
56 initializeData();
57 JSUMemoryInputStream stream;
58 stream.setBuffer(pData, len);
59 u8 stack_8;
60 stream.read(&stack_8, 1);
61 _4 = stack_8;
62 stream.read(mBuffer, 8);
63
64 if (!stream.getAvailable()) {
65 if (_4 & 0x1) {
66 mIconID = 0;
67 }
68 }
69 else {
70 stream.read(&mIconID, 1);
71 }
72
73 return 0;
74}
75
76void ConfigDataMii::initializeData() {
77 _4 = 0;
78 mIconID = 1;
79 MR::zeroMemory(mBuffer, 8);
80}