Skip to content

Commit 5882a39

Browse files
committed
Undub SoundEffects
1 parent 6edd467 commit 5882a39

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

Zero2UndubProcess/Importer/ZeroFileImporter.cs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
2-
using System.IO;
3-
using System.Text;
2+
using Zero2UndubProcess.Constants;
43
using Zero2UndubProcess.GameFiles;
54
using Zero2UndubProcess.Iso;
65
using Zero2UndubProcess.Reporter;
@@ -44,7 +43,7 @@ public void RestoreGame()
4443
continue;
4544
}
4645

47-
if (targetFile.Type != FileType.VIDEO && targetFile.Type != FileType.AUDIO)
46+
if (targetFile.Type != FileType.VIDEO && targetFile.Type != FileType.AUDIO && targetFile.Type != FileType.SOUNDEFFECT)
4847
{
4948
continue;
5049
}
@@ -53,14 +52,15 @@ public void RestoreGame()
5352
{
5453
_isoHandler.WriteNewFile(originFile, targetFile);
5554

56-
if (originFile.Type != FileType.AUDIO)
55+
if (originFile.Type != FileType.AUDIO || originFile.Type != FileType.SOUNDEFFECT)
5756
{
5857
continue;
5958
}
6059

6160
HandleAudioFile(originFile, targetFile);
6261
}
63-
else if (targetFile.Type == FileType.AUDIO && !_undubOptions.SafeUndub)
62+
else if (targetFile.Type is FileType.AUDIO or FileType.SOUNDEFFECT
63+
&& !_undubOptions.SafeUndub)
6464
{
6565
HandleAudioFile(originFile, targetFile);
6666
_isoHandler.AppendFile(originFile, targetFile);
@@ -89,11 +89,22 @@ private void HandleAudioFile(ZeroFile origin, ZeroFile target)
8989
var originHeaderFile = _isoHandler.OriginGetFile(origin.FileId - 1);
9090
var targetHeaderFile = _isoHandler.TargetGetFile(target.FileId - 1);
9191

92-
if (targetHeaderFile.Size > originHeaderFile.Size || originHeaderFile.Status is FileStatus.Unknown or FileStatus.NoFile || originHeaderFile.Type != FileType.AUDIO_HEADER || targetHeaderFile.Type != FileType.AUDIO_HEADER)
92+
if (originHeaderFile.Status is FileStatus.Unknown or FileStatus.NoFile
93+
|| originHeaderFile.Type != FileType.AUDIO_HEADER
94+
|| targetHeaderFile.Type != FileType.AUDIO_HEADER)
9395
{
9496
return;
9597
}
9698

99+
if (targetHeaderFile.Size > originHeaderFile.Size)
100+
{
101+
// Makes sure the entire sector of the file is overwritten
102+
// whenever the source audio header is smaller than the target.
103+
// This is for handling the edge case of file 0x3133 that
104+
// caused the game to crash
105+
originHeaderFile.Size = Ps2Constants.SectorSize - 1;
106+
}
107+
97108
_isoHandler.WriteNewFile(originHeaderFile, targetHeaderFile);
98109
}
99110

0 commit comments

Comments
 (0)