summaryrefslogtreecommitdiff
path: root/src/JSystem/JAudio/JAIInitData.cpp
blob: 239fbf4ca6287a99bdea2ea661e20c67d0e33b5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//
// Generated by dtk
// Translation Unit: JAIInitData.cpp
//

#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JAudio/JAIInitData.h"
#include "JSystem/JAudio/JAIBankWave.h"
#include "JSystem/JAudio/JAIBasic.h"
#include "JSystem/JAudio/JAIConst.h"
#include "JSystem/JAudio/JAIFx.h"
#include "JSystem/JAudio/JAIGlobalParameter.h"
#include "JSystem/JAudio/JAISoundTable.h"
#include "JSystem/JAudio/JAIStreamMgr.h"
#include "JSystem/JAudio/JAISystemInterface.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "stdio.h"
#include "string.h"

u32* JAInter::InitData::aafPointer;

/* 80292460-80292548       .text checkInitDataFile__Q27JAInter8InitDataFv */
BOOL JAInter::InitData::checkInitDataFile() {
    if (!SystemInterface::checkFileExsistence(JAIGlobalParameter::getParamInitDataFileName())) {
        char* fileName = (char*)JASDram->alloc(strlen(JAIGlobalParameter::getParamAudioResPath()) + strlen(JAIGlobalParameter::getParamInitDataFileName()) + 1, 0);
        sprintf(fileName, "%s%s%c", JAIGlobalParameter::getParamAudioResPath(), JAIGlobalParameter::getParamInitDataFileName(), 0);
        JAIGlobalParameter::setParamInitDataFileName(fileName);
        if (!SystemInterface::checkFileExsistence(JAIGlobalParameter::getParamInitDataFileName())) {
            return false;
        }
    }
    loadTmpDVDFile(JAIGlobalParameter::getParamInitDataFileName(), (u8**)&aafPointer);
    if (aafPointer) {
        checkInitDataOnMemory();
        deleteTmpDVDFile((u8**)&aafPointer);
        return true;
    }
    return false;
}

/* 80292548-8029285C       .text checkInitDataOnMemory__Q27JAInter8InitDataFv */
void JAInter::InitData::checkInitDataOnMemory() {
    int r30 = 0;
    u32 r29 = true;
    u8 r31;
    u8* temp;
    while (r29) {
        switch (aafPointer[r30++]) {
        case 0:
            r29 = false;
            break;
        case 1: {
            u8* var1 = (u8*)aafPointer + aafPointer[r30++];
            u32 var2 = aafPointer[r30];
            SoundTable::init(transInitDataFile(var1, var2), var2);
            r30 += 2;
            break;
        }
        case 2:
            r31 = 0;
            temp = (u8*)(aafPointer + r30);
            u32 var6;
            for (var6 = 0; aafPointer[r30 + var6]; var6 += 3) {}
            BankWave::initOnCodeBnk = (BankWave::initOnCode_s*)transInitDataFile(temp, var6 / 3 * 12 + 4);
            for (; aafPointer[r30]; r31++, r30 += 3) {
                BankWave::initOnCodeBnk[r31].field_0x0 = (u8*)aafPointer + (u32)BankWave::initOnCodeBnk[r31].field_0x0;
            }
            r30++;
            break;
        case 3:
            r31 = 0;
            temp = (u8*)(aafPointer + r30);
            for (var6 = 0; aafPointer[r30 + var6]; var6 += 3) {}
            BankWave::initOnCodeWs = (BankWave::initOnCode_s*)transInitDataFile(temp, var6 / 3 * 12 + 4);
            for (; aafPointer[r30]; r30 += 3, r31++) {
                BankWave::initOnCodeWs[r31].field_0x0 = (u8*)aafPointer + (u32)BankWave::initOnCodeWs[r31].field_0x0;
                BankWave::wsMax++;
            }
            r30++;
            break;
        case 4:
            JUT_WARN(120, "%s", "Hed file is not needed. Remove this file('aaf')\n");
            r30 += 3;
            break;
        case 5:
            StreamMgr::initOnCodeStrm = (JAInter::streamList_t*)transInitDataFile((u8*)(aafPointer + r30), 8);
            // fakematch?
            *(JAInter::streamList_t**)StreamMgr::initOnCodeStrm = (JAInter::streamList_t*)transInitDataFile((u8*)aafPointer + aafPointer[r30], aafPointer[r30 + 1]);
            StreamMgr::streamList = *(JAInter::streamList_t**)StreamMgr::initOnCodeStrm;
            r30 += 3;
            break;
        case 6: {
            u32* r28 = (u32*)transInitDataFile((u8*)aafPointer + aafPointer[r30], aafPointer[r30 + 1]);
            JAIGlobalParameter::setParamSoundSceneMax(*r28);
            JAIBasic::getInterface()->field_0x1c = (u8**)(r28 + 1);
            for (int i = 0; i < JAIGlobalParameter::getParamSoundSceneMax(); i++) {
                JAIBasic::getInterface()->field_0x1c[i] += u32(r28);
            }
            r30 += 3;
            break;
        }
        case 7:
            Fx::initOnCodeFxScene = (Fx::initOnCodeFxScene_s*)transInitDataFile((u8*)aafPointer + aafPointer[r30], aafPointer[r30 + 1]);
            r30 += 3;
            break;
        case 8: {
            u8* tmp = transInitDataFile((u8*)aafPointer + aafPointer[r30], (aafPointer[r30 + 1] & 0xFFF0) + 16);
            JAIBasic::getInterface()->field_0x18 = tmp;
            r30 += 3;
            break;
        }
        default:
            while (aafPointer[r30++]) {}
            break;
        }
    }
    BankWave::init();
}