V-Gears 0
Free Final Fantasy VII engine.
MediaDataInstaller.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include <unordered_map>
20#include "common/BinGZipFile.h"
21#include "TexFile.h"
22
27
28
29 public:
30
41 const std::string input_dir, const std::string output_dir, const bool keep_originals,
42 const bool no_ffmpeg, const bool no_timidity
43 );
44
49
53 void PopulateMaps();
54
61 void InstallSprites();
62
69
75 bool InstallSounds();
76
80 void WriteSoundIndex();
81
88
94 bool InstallMusics();
95
101 void InstallHQMusics();
102
106 void WriteMusicsIndex();
107
108 private:
109
113 static int TOTAL_SOUNDS;
114
120 static u8 WAV_HEADER[78];
121
125 struct FmtFile{
126
131
136
141
146
151
156
161 };
162
166 std::string input_dir_;
167
171 std::string output_dir_;
172
177
182
187
192
197
201 std::unordered_map<int, std::string> sound_map_;
202
206 std::vector<std::string> sounds_;
207
212
217
221 std::unordered_map<int, std::string> musics_map_;
222
226 std::vector<std::string> musics_;
227
232
237
242
243
244
245};
Ogre::uint16 u16
Definition: TypeDefine.h:22
Ogre::uint32 u32
Definition: TypeDefine.h:23
Ogre::uint8 u8
Definition: TypeDefine.h:21
Handles GZip-compressed BIn files.
Definition: BinGZipFile.h:23
Represents a file.
Definition: File.h:24
The media data installer.
Definition: MediaDataInstaller.h:26
void InstallHQMusics()
Converts high quality musiscs to OGG.
Definition: MediaDataInstaller.cpp:467
int processed_sounds_
Number of sounds already processed.
Definition: MediaDataInstaller.h:196
static int TOTAL_SOUNDS
Number of sound files to extract.
Definition: MediaDataInstaller.h:113
MediaDataInstaller(const std::string input_dir, const std::string output_dir, const bool keep_originals, const bool no_ffmpeg, const bool no_timidity)
Constructor.
Definition: MediaDataInstaller.cpp:41
std::unordered_map< int, std::string > musics_map_
Map for music files with descriptive names.
Definition: MediaDataInstaller.h:221
void InstallSprites()
Extracts all images contained in the menu LGP file and installs them.
Definition: MediaDataInstaller.cpp:66
std::unordered_map< int, std::string > sound_map_
Map for sound files with descriptive names.
Definition: MediaDataInstaller.h:201
std::string input_dir_
The path to the directory from which to read the PC game data.
Definition: MediaDataInstaller.h:166
static u8 WAV_HEADER[78]
The standard WAV header.
Definition: MediaDataInstaller.h:120
bool no_ffmpeg_
Flag to prevent system calls to ffmpeg.
Definition: MediaDataInstaller.h:236
File fmt_
The sounds .fmt file.
Definition: MediaDataInstaller.h:186
bool no_timidity_
Flag to prevent system calls to timidity.
Definition: MediaDataInstaller.h:241
BinGZipFile window_
The WINDOW.BIN file.
Definition: MediaDataInstaller.h:181
~MediaDataInstaller()
Destructor.
Definition: MediaDataInstaller.cpp:64
std::string output_dir_
The path to the directory where to save the V-Gears data.
Definition: MediaDataInstaller.h:171
int InstallSoundsInit()
Prepares the installer for the sounds extraction.
Definition: MediaDataInstaller.cpp:307
bool InstallSounds()
Extracts the next sound file contained in the audio.dat file and installs it.
Definition: MediaDataInstaller.cpp:314
VGears::LGPArchive midi_
The midi.lgp file.
Definition: MediaDataInstaller.h:211
int InstallMusicsInit()
Prepares the installer for the sounds extraction.
Definition: MediaDataInstaller.cpp:406
bool InstallMusics()
Extracts the next music file contained in the midi.lgp, converts it and installs it.
Definition: MediaDataInstaller.cpp:430
void PopulateMaps()
Populates the audio name maps.
Definition: MediaDataInstaller.cpp:52
VGears::LGPArchive menu_
The menu.lgp file.
Definition: MediaDataInstaller.h:176
void WriteMusicsIndex()
Writes the XML file with all music tracks.
Definition: MediaDataInstaller.cpp:486
void WriteSoundIndex()
Writes the XML file with all audio entries.
Definition: MediaDataInstaller.cpp:384
std::vector< std::string > sounds_
Sound data for each entry to write to the XML file.
Definition: MediaDataInstaller.h:206
bool keep_originals_
If true, orginal files will not be deleted after conversion.
Definition: MediaDataInstaller.h:231
std::vector< std::string > musics_
Sound data for each entry to write to the XML file.
Definition: MediaDataInstaller.h:226
File dat_
The sounds .dat file.
Definition: MediaDataInstaller.h:191
int processed_musics_
Number of music tracks already processed.
Definition: MediaDataInstaller.h:216
Handles LZS compressed archives.
Definition: VGearsLGPArchive.h:26
The structure of each audio file pointer in a sound FMT file.
Definition: MediaDataInstaller.h:125
u8 adpcm_sets[28]
Standard Microsoft ADPCMCoefSets.
Definition: MediaDataInstaller.h:160
u16 adpcm
Number of ADPCM coefficients (used for compression, should always be 7).
Definition: MediaDataInstaller.h:155
u8 wav_header[18]
Microsoft WAVFORMATEX header for the wav file.
Definition: MediaDataInstaller.h:145
u32 offset
Offset of the wav file in the dat.
Definition: MediaDataInstaller.h:135
u8 loop_metadata[16]
Information for sound looping.
Definition: MediaDataInstaller.h:140
u32 size
Size of the wav file in the dat.
Definition: MediaDataInstaller.h:130
u16 samples_per_block
Samples per block.
Definition: MediaDataInstaller.h:150