Skip to content

Commit 872e1dc

Browse files
randomsalienceStbn-antier
authored andcommitted
Z2AudioLib work (zeldaret#2339)
* Z2LinkMgr work, Z2AudioArcLoader matching * Z2SeMgr matching * Z2SpeechMgr2 almost done, Z2SoundHandles matching
1 parent 7bd5fe5 commit 872e1dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1872
-1234
lines changed

.clangd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ CompileFlags:
33
Diagnostics:
44
Suppress:
55
- "warn_char_constant_too_large"
6+
- "illegal_union_or_anon_struct_member"
67
---
78
If:
89
PathMatch: .*/*.inc

config/GZ2E01/splits.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2067,7 +2067,7 @@ JSystem/JAudio2/osdsp.cpp:
20672067
JSystem/JAudio2/osdsp_task.cpp:
20682068
.text start:0x8029EB20 end:0x8029EFAC
20692069
.bss start:0x80434060 end:0x80434078
2070-
.sbss start:0x80451308 end:0x80451330
2070+
.sbss start:0x80451308 end:0x80451310
20712071

20722072
JSystem/JAudio2/JAIAudible.cpp:
20732073
.text start:0x8029EFAC end:0x8029EFF4
@@ -2087,6 +2087,7 @@ JSystem/JAudio2/JAISeMgr.cpp:
20872087
.rodata start:0x8039B8F8 end:0x8039B910
20882088
.data start:0x803C98B0 end:0x803C98D8
20892089
.bss start:0x80434078 end:0x80434098
2090+
.sbss start:0x80451310 end:0x80451320
20902091
.sdata2 start:0x80455788 end:0x80455798
20912092

20922093
JSystem/JAudio2/JAISeq.cpp:
@@ -2103,6 +2104,7 @@ JSystem/JAudio2/JAISeqMgr.cpp:
21032104
.text start:0x802A1804 end:0x802A2184
21042105
.data start:0x803C9958 end:0x803C9970
21052106
.bss start:0x804340C0 end:0x804340E0
2107+
.sbss start:0x80451320 end:0x80451328
21062108
.sdata2 start:0x804557A8 end:0x804557B8
21072109

21082110
JSystem/JAudio2/JAISound.cpp:
@@ -2143,6 +2145,7 @@ JSystem/JAudio2/JAIStreamDataMgr.cpp:
21432145
JSystem/JAudio2/JAIStreamMgr.cpp:
21442146
.text start:0x802A3B68 end:0x802A4244
21452147
.bss start:0x804340F0 end:0x80434110
2148+
.sbss start:0x80451328 end:0x80451330
21462149
.sdata2 start:0x80455800 end:0x80455810
21472150

21482151
JSystem/JAudio2/JAUAudioArcInterpreter.cpp:
@@ -2216,7 +2219,7 @@ Z2AudioLib/Z2Calc.cpp:
22162219

22172220
Z2AudioLib/Z2Param.cpp:
22182221
.sdata start:0x804507D8 end:0x80450870
2219-
.sbss start:0x80451338 end:0x80451350
2222+
.sbss start:0x80451338 end:0x80451348
22202223

22212224
Z2AudioLib/Z2AudioArcLoader.cpp:
22222225
.text start:0x802A9A34 end:0x802A9B58
@@ -2238,6 +2241,7 @@ Z2AudioLib/Z2SoundStarter.cpp:
22382241
Z2AudioLib/Z2SoundHandles.cpp:
22392242
.text start:0x802AB07C end:0x802AB64C
22402243
.bss start:0x804341B8 end:0x804341D8
2244+
.sbss start:0x80451348 end:0x80451350
22412245

22422246
Z2AudioLib/Z2SeMgr.cpp:
22432247
.text start:0x802AB64C end:0x802AEEA0

config/GZ2E01/symbols.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21177,10 +21177,10 @@ memPool_$localstatic3$getMemPool___26JASPoolAllocObject<5JAISe>Fv = .bss:0x80434
2117721177
@896 = .bss:0x804340A4; // type:object size:0xC scope:local align:4
2117821178
memPool_$localstatic3$getMemPool___35JASPoolAllocObject<13JAISoundChild>Fv = .bss:0x804340B0; // type:object size:0x10 scope:local align:4
2117921179
@715 = .bss:0x804340C0; // type:object size:0xC scope:local align:4
21180-
memPool_$localstatic3$getMemPool___27JASPoolAllocObject<6JAISeq>Fv = .bss:0x804340CC; // type:object size:0x10 scope:local align:4
21180+
memPool_$localstatic3$getMemPool___27JASPoolAllocObject<6JAISeq>Fv = .bss:0x804340CC; // type:object size:0x10 scope:weak align:4
2118121181
@881 = .bss:0x804340E0; // type:object size:0xC scope:local align:4
2118221182
@745 = .bss:0x804340F0; // type:object size:0xC scope:local align:4
21183-
memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .bss:0x804340FC; // type:object size:0x10 scope:local align:4
21183+
memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .bss:0x804340FC; // type:object size:0x10 scope:weak align:4
2118421184
...bss.0 = .bss:0x80434110; // type:label scope:local
2118521185
@757 = .bss:0x80434110; // type:object size:0xC scope:local align:4
2118621186
@763 = .bss:0x8043411C; // type:object size:0xC scope:local align:4
@@ -21189,7 +21189,7 @@ memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .bss:0x8
2118921189
@863 = .bss:0x80434140; // type:object size:0xC scope:local align:4
2119021190
@867 = .bss:0x8043414C; // type:object size:0xC scope:local align:4
2119121191
@632 = .bss:0x804341B8; // type:object size:0xC scope:local align:4
21192-
memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .bss:0x804341C4; // type:object size:0x10 scope:local align:4
21192+
memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .bss:0x804341C4; // type:object size:0x10 scope:weak align:4
2119321193
@1539 = .bss:0x804341D8; // type:object size:0xC scope:local align:4
2119421194
memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .bss:0x804341E4; // type:object size:0x10 scope:local align:4
2119521195
...bss.0 = .bss:0x804341F8; // type:label scope:local
@@ -21509,7 +21509,7 @@ sStickHigh = .sdata:0x80450898; // type:object size:0x4 scope:global align:4 dat
2150921509
sStickCenter = .sdata:0x8045089C; // type:object size:0x4 scope:global align:4 data:float
2151021510
sHowlTobikusa = .sdata:0x804508A0; // type:object size:0x8 scope:global align:4
2151121511
cm2hw$539 = .sdata:0x804508A8; // type:object size:0x4 scope:local align:4
21512-
data_804508B0 = .sdata:0x804508B0; // type:object size:0x8 scope:global align:4 data:byte
21512+
data_804508B0 = .sdata:0x804508B0; // type:object size:0x1 scope:global align:4 data:byte
2151321513
sSZSBufferSize__7JKRAram = .sdata:0x804508B8; // type:object size:0x4 scope:global align:4 data:4byte
2151421514
rootPath$2498 = .sdata:0x804508C0; // type:object size:0x2 scope:local align:4 data:string
2151521515
errorRetry = .sdata:0x804508C8; // type:object size:0x1 scope:local align:1 data:byte
@@ -22087,8 +22087,8 @@ struct_80451309 = .sbss:0x80451309; // type:object size:0x1 scope:local align:1
2208722087
DSP_prior_task = .sbss:0x8045130C; // type:object size:0x4 scope:global align:4 data:4byte
2208822088
data_80451310 = .sbss:0x80451310; // type:object size:0x8 scope:global align:4 data:byte
2208922089
data_80451318 = .sbss:0x80451318; // type:object size:0x8 scope:global align:4 data:byte
22090-
data_80451320 = .sbss:0x80451320; // type:object size:0x8 scope:global align:4 data:byte
22091-
data_80451328 = .sbss:0x80451328; // type:object size:0x8 scope:global align:4 data:byte
22090+
init$localstatic4$getMemPool___27JASPoolAllocObject<6JAISeq>Fv = .sbss:0x80451320; // type:object size:0x1 scope:global align:1 data:byte
22091+
init$localstatic4$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .sbss:0x80451328; // type:object size:0x1 scope:global align:1 data:byte
2209222092
init$80 = .sbss:0x80451330; // type:object size:0x1 scope:local align:1 data:byte
2209322093
oRandom$401 = .sbss:0x80451334; // type:object size:0x4 scope:local align:4 data:4byte
2209422094
MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x80451338; // type:object size:0x4 scope:global align:4 data:float
@@ -22097,7 +22097,7 @@ struct_80451340 = .sbss:0x80451340; // type:object size:0x1 scope:global align:1
2209722097
struct_80451341 = .sbss:0x80451341; // type:object size:0x1 scope:global align:1 data:byte
2209822098
struct_80451342 = .sbss:0x80451342; // type:object size:0x1 scope:global align:1 data:byte
2209922099
pad_80451344 = .sbss:0x80451344; // type:object size:0x4 scope:global align:4
22100-
data_80451348 = .sbss:0x80451348; // type:object size:0x8 scope:global align:4 data:byte
22100+
init$localstatic4$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .sbss:0x80451348; // type:object size:0x1 scope:global align:1 data:byte
2210122101
cNearFarRatio = .sbss:0x80451350; // type:object size:0x4 scope:local align:4 data:float
2210222102
data_80451354 = .sbss:0x80451354; // type:object size:0x4 scope:global align:4 data:byte
2210322103
data_80451358 = .sbss:0x80451358; // type:object size:0x1 scope:global align:1 data:byte

configure.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ def MatchingFor(*versions):
823823
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASProbe.cpp"),
824824
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASReport.cpp"),
825825
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASCmdStack.cpp"),
826-
Object(NonMatching, "JSystem/JAudio2/JASTrack.cpp"),
826+
Object(NonMatching, "JSystem/JAudio2/JASTrack.cpp", extra_cflags=['-pragma "nosyminline off"']),
827827
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASTrackPort.cpp"),
828828
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASRegisterParam.cpp"),
829829
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASSeqCtrl.cpp"),
@@ -840,7 +840,7 @@ def MatchingFor(*versions):
840840
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASWSParser.cpp"),
841841
Object(NonMatching, "JSystem/JAudio2/JASBNKParser.cpp"),
842842
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASWaveArcLoader.cpp", extra_cflags=['-pragma "nosyminline off"']),
843-
Object(NonMatching, "JSystem/JAudio2/JASChannel.cpp", extra_cflags=['-pragma "nosyminline off"']),
843+
Object(Equivalent, "JSystem/JAudio2/JASChannel.cpp", extra_cflags=['-pragma "nosyminline off"']), # bss locations
844844
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASLfo.cpp"),
845845
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JASOscillator.cpp"),
846846
Object(NonMatching, "JSystem/JAudio2/JASAiCtrl.cpp"),
@@ -857,25 +857,25 @@ def MatchingFor(*versions):
857857
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAIAudible.cpp"),
858858
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAIAudience.cpp"),
859859
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISe.cpp"),
860-
Object(NonMatching, "JSystem/JAudio2/JAISeMgr.cpp"),
861-
Object(NonMatching, "JSystem/JAudio2/JAISeq.cpp"),
860+
Object(Equivalent, "JSystem/JAudio2/JAISeMgr.cpp", extra_cflags=['-pragma "nosyminline off"']), # weak function order
861+
Object(Equivalent, "JSystem/JAudio2/JAISeq.cpp", extra_cflags=['-pragma "nosyminline off"']), # bss locations
862862
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISeqDataMgr.cpp"),
863-
Object(NonMatching, "JSystem/JAudio2/JAISeqMgr.cpp"),
863+
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISeqMgr.cpp", extra_cflags=['-pragma "nosyminline off"']),
864864
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISound.cpp"),
865865
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISoundChild.cpp"),
866866
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISoundHandles.cpp"),
867867
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISoundInfo.cpp"),
868868
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISoundParams.cpp"),
869869
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAISoundStarter.cpp"),
870-
Object(NonMatching, "JSystem/JAudio2/JAIStream.cpp", extra_cflags=["-sym off"]),
870+
Object(Equivalent, "JSystem/JAudio2/JAIStream.cpp", extra_cflags=['-pragma "nosyminline off"']), # bss locations
871871
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAIStreamDataMgr.cpp"),
872-
Object(NonMatching, "JSystem/JAudio2/JAIStreamMgr.cpp"),
872+
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAIStreamMgr.cpp", extra_cflags=['-pragma "nosyminline off"']),
873873
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUAudioArcInterpreter.cpp"),
874874
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUAudioArcLoader.cpp"),
875875
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUAudioMgr.cpp"),
876876
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUBankTable.cpp"),
877877
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUClusterSound.cpp"),
878-
Object(NonMatching, "JSystem/JAudio2/JAUInitializer.cpp"),
878+
Object(Equivalent, "JSystem/JAudio2/JAUInitializer.cpp", extra_cflags=['-pragma "nosyminline off"']), # bss locations
879879
Object(NonMatching, "JSystem/JAudio2/JAUSectionHeap.cpp"),
880880
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUSeqCollection.cpp"),
881881
Object(MatchingFor("GZ2E01"), "JSystem/JAudio2/JAUSeqDataBlockMgr.cpp"),
@@ -902,12 +902,12 @@ def MatchingFor(*versions):
902902
"host": True,
903903
"objects": [
904904
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2Calc.cpp"),
905-
Object(NonMatching, "Z2AudioLib/Z2AudioArcLoader.cpp"),
905+
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2AudioArcLoader.cpp"),
906906
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2Param.cpp"),
907907
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SoundMgr.cpp"),
908908
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SoundStarter.cpp"),
909-
Object(NonMatching, "Z2AudioLib/Z2SoundHandles.cpp"),
910-
Object(NonMatching, "Z2AudioLib/Z2SeMgr.cpp"),
909+
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SoundHandles.cpp"),
910+
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SeMgr.cpp"),
911911
Object(NonMatching, "Z2AudioLib/Z2SeqMgr.cpp"),
912912
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2StatusMgr.cpp"),
913913
Object(NonMatching, "Z2AudioLib/Z2SceneMgr.cpp"),
@@ -917,7 +917,7 @@ def MatchingFor(*versions):
917917
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SoundObject.cpp"),
918918
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SoundObjMgr.cpp"),
919919
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2Creature.cpp"),
920-
Object(NonMatching, "Z2AudioLib/Z2LinkMgr.cpp"),
920+
Object(NonMatching, "Z2AudioLib/Z2LinkMgr.cpp", extra_cflags=['-pragma "nosyminline on"']),
921921
Object(NonMatching, "Z2AudioLib/Z2EnvSeMgr.cpp"),
922922
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2WolfHowlMgr.cpp"),
923923
Object(NonMatching, "Z2AudioLib/Z2SpeechMgr2.cpp"),

include/JSystem/JAudio2/JAISeMgr.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@ class JAISeCategoryMgr : public JAISeqDataUser {
4949
/* 8029FE78 */ void stopSoundID(JAISoundID);
5050
/* 8029FEEC */ void pause(bool);
5151
/* 8029FF18 */ void JAISeMgr_mixOut_(JAISoundParamsMove const&, JAISoundActivity);
52-
/* 802A0994 */ JAISeCategoryMgr();
52+
/* 802A0994 */ JAISeCategoryMgr() {
53+
mParams.init();
54+
mMaxActiveSe = 0;
55+
mMaxInactiveSe = 0;
56+
field_0x4.field_0x0 = 0;
57+
}
5358

5459
/* 800078DC */ virtual ~JAISeCategoryMgr() {}
5560
/* 8029F8B0 */ virtual bool isUsingSeqData(JAISeqDataRegion const&);

include/JSystem/JAudio2/JASHeapCtrl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,23 +241,23 @@ template <typename T>
241241
class JASPoolAllocObject {
242242
public:
243243
static void* operator new(size_t n) {
244-
JASMemPool<T>* memPool = getMemPool();
244+
JASMemPool<T>* memPool = getMemPool_();
245245
return memPool->alloc(sizeof(T));
246246
}
247247
static void* operator new(size_t n, void* ptr) {
248248
return ptr;
249249
}
250250
static void operator delete(void* ptr, size_t n) {
251-
JASMemPool<T>* memPool_ = getMemPool();
251+
JASMemPool<T>* memPool_ = getMemPool_();
252252
memPool_->free(ptr, sizeof(T));
253253
}
254254
static void newMemPool(int param_0) {
255-
JASMemPool<T>* memPool_ = getMemPool();
255+
JASMemPool<T>* memPool_ = getMemPool_();
256256
memPool_->newMemPool(param_0);
257257
}
258258

259259
private:
260-
static JASMemPool<T>* getMemPool() {
260+
static JASMemPool<T>* getMemPool_() {
261261
static JASMemPool<T> memPool_;
262262
return &memPool_;
263263
}

include/JSystem/JAudio2/JASTrack.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,17 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
169169
/* 0x000 */ JASSeqCtrl mSeqCtrl;
170170
/* 0x05C */ JASTrackPort mTrackPort;
171171
/* 0x080 */ JASRegisterParam mRegisterParam;
172-
/* 0x09C */ MoveParam_ mMoveParam[6]; // volume, pitch, fxmix, pan, dolby, distFilter
172+
/* 0x09C */ union {
173+
struct {
174+
MoveParam_ volume;
175+
MoveParam_ pitch;
176+
MoveParam_ fxmix;
177+
MoveParam_ pan;
178+
MoveParam_ dolby;
179+
MoveParam_ distFilter;
180+
} params;
181+
MoveParam_ array[6];
182+
} mMoveParam;
173183
/* 0x0e4 */ JASOscillator::Data mOscParam[2];
174184
/* 0x114 */ JASOscillator::Point mOscPoint[4];
175185
/* 0x12C */ JASTrack* mParent;

include/JSystem/JGadget/linklist.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ struct TLinkListNode {
2222

2323
struct TNodeLinkList {
2424
struct iterator {
25+
iterator() { node = NULL; }
2526
explicit iterator(TLinkListNode* pNode) { node = pNode; }
27+
iterator& operator=(const iterator& other) { node = other.node; return *this; }
2628

2729
iterator& operator++() { node = node->getNext(); return *this; }
2830
iterator& operator--() { node = node->getPrev(); return *this; }
@@ -117,6 +119,7 @@ struct TLinkList : public TNodeLinkList {
117119
TLinkList() : TNodeLinkList() {}
118120

119121
struct iterator {
122+
iterator() {}
120123
explicit iterator(TNodeLinkList::iterator iter) : base(iter) {}
121124

122125
iterator& operator++() {

include/JSystem/JKernel/JKRArchive.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,11 @@ inline bool JKRRemoveResource(void* resource, JKRFileLoader* fileLoader) {
238238
return JKRFileLoader::removeResource(resource, fileLoader);
239239
}
240240

241+
inline JKRArchive* JKRMountArchive(void* ptr, JKRHeap* heap,
242+
JKRArchive::EMountDirection mountDirection) {
243+
return JKRArchive::mount(ptr, heap, mountDirection);
244+
}
245+
241246
inline void JKRUnmountArchive(JKRArchive* arc) {
242247
arc->unmount();
243248
}
@@ -246,4 +251,4 @@ inline void JKRReadIdxResource(void* param_1, u32 param_2, u32 param_3, JKRArchi
246251
param_4->readIdxResource(param_1, param_2, param_3);
247252
}
248253

249-
#endif
254+
#endif

include/JSystem/JMath/JMath.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ void JMAVECScaleAdd(register const Vec* vec1, register const Vec* vec2, register
1212
register f32 scale);
1313

1414
inline int JMAAbs(int value) {
15-
return (value >> 0x1f ^ value) - (value >> 0x1f);
15+
return value > 0 ? value : -value;
1616
}
1717

1818
inline f32 JMAFastReciprocal(f32 value) {

0 commit comments

Comments
 (0)