Skip to content

Commit e1ba2bb

Browse files
committed
v1.02 rev3950 (13 Dec 2019)
- Added support for Jackie Chan Stuntmaster videos Bug fixes: - Some videos in EA games are not detected
1 parent 2f042c9 commit e1ba2bb

25 files changed

+333
-225
lines changed

jpsxdec/PSXListOFGames.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ Status
687687
[ ] SLUS-01014 ISS Pro Evolution
688688
[ ] SLUS-00674 ISS Soccer Pro '98
689689
[ ] SLUS-01457 Italian Job, The
690-
[ ] SLUS-00684 Jackie Chan Stuntmaster
690+
[+f] SLUS-00684 Jackie Chan Stuntmaster
691691
[ ] SLUS-00854 Jade Cocoon - Legend of Tamamayu
692692
[ ] SLUS-90054 Jade Cocoon - Story of the Tamamayu [Demo]
693693
[ ] SCUS-94176 Jampack Vol.1 [Demo]
@@ -800,7 +800,7 @@ Status
800800
00C1B085 Madden NFL '96
801801
[ ] SLUS-00018 Madden NFL '97
802802
[ ] SLUS-00516 Madden NFL '98
803-
[ ] SLUS-00729 Madden NFL '99
803+
[+] SLUS-00729 Madden NFL '99
804804
[ ] SLUS-00029 Magic Carpet
805805
[ ] SLUS-00247 Magic the Gathering - Battlemage
806806
[ ] SLUS-01471 Marble Master
@@ -924,7 +924,7 @@ Status
924924
[ ] SLUS-01166 NASCAR Heat
925925
[ ] SLUS-01050 NASCAR Racers
926926
[ ] SLUS-00374 NASCAR Racing
927-
[ ] SLUS-01068 NASCAR Rumble
927+
[+] SLUS-01068 NASCAR Rumble
928928
[ ] SLUS-01403 NASCAR Thunder 2002
929929
[ ] SLUS-01502 NASCAR Thunder 2003
930930
[ ] SLUS-01571 NASCAR Thunder 2004
@@ -4384,7 +4384,7 @@ Status
43844384
[ ] SLPM-86073 Akumajo Dracula X - Gekka no Yasoukyoku [PlayStation The Best]
43854385
[ ] SLPM-87328 Akumajo Dracula X - Gekka no Yasoukyoku [PSone Books]
43864386
[ ] SLPS-02961 Alabama
4387-
[f] SLPS-00636 Alice in Cyberland
4387+
[+f] SLPS-00636 Alice in Cyberland
43884388
[ ] SLPS-01003 Alice on Borderlines [Disc1of3]
43894389
[ ] SLPS-01004 Alice on Borderlines [Disc2of3]
43904390
[ ] SLPS-01005 Alice on Borderlines [Disc3of3]
@@ -5665,7 +5665,7 @@ Status
56655665
[ ] SLPM-86081 Final Fantasy V
56665666
[ ] SCPS-45387 Final Fantasy VI
56675667
[ ] SLPM-86198 Final Fantasy VI
5668-
[f] SLPS-01060 Final Fantasy VII - International [Bonus Disc]
5668+
[+f] SLPS-01060 Final Fantasy VII - International [Bonus Disc]
56695669
[ ] SLPS-91443 Final Fantasy VII - International [Bonus Disc] [PSone Books]
56705670
[ ] SLPM-87383 Final Fantasy VII - International [Bonus Disc] [Ultimate Hits]
56715671
[ ] SLPS-01057 Final Fantasy VII - International [Disc1of3]
@@ -5682,7 +5682,7 @@ Status
56825682
[ ] SCPS-45008 Final Fantasy VII [Disc2of3]
56835683
[ ] SLPS-00701 Final Fantasy VII [Disc2of3]
56845684
[ ] SCPS-45009 Final Fantasy VII [Disc3of3]
5685-
[f] SLPS-00702 Final Fantasy VII [Disc3of3]
5685+
[+f] SLPS-00702 Final Fantasy VII [Disc3of3]
56865686
[ ] SCPS-45375 Final Fantasy VIII [Disc1of4]
56875687
[ ] SLPS-01880 Final Fantasy VIII [Disc1of4]
56885688
[ ] SLPM-87384 Final Fantasy VIII [Disc1of4] [Ultimate Hits]
@@ -5797,7 +5797,7 @@ Status
57975797
[ ] SLPS-03313 Gakkou o Tsukurou!! Koushou Sensei Monogatari [Reprint]
57985798
[ ] SLPS-01852 Gakuen Sentai Solblast
57995799
[ ] SLPS-01638 Gakuensai
5800-
[ ] SLPS-00270 Galaxian 3
5800+
[+] SLPS-00270 Galaxian 3
58015801
[ ] SLPS-00138 Galaxy Fight - Universal Warriors
58025802
[ ] SLPS-02596 Gale Gunner
58035803
[ ] SLPS-03305 Gale Gunner [ASCII Casual Collection]

jpsxdec/build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<!-- ====== global build properties ====== -->
1111

12-
<property name="jpsxdec.ver" value="v1-01_rev3936"/>
12+
<property name="jpsxdec.ver" value="v1-02_rev3950"/>
1313

1414
<!-- sources -->
1515
<property name="src.dir.rel" location="src" relative="true"/>

jpsxdec/doc/CHANGES.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
v1.02 rev3950 (13 Dec 2019)
2+
- Added support for Jackie Chan Stuntmaster videos
3+
Bug fixes:
4+
- Some videos in EA games are not detected
15
v1.01 rev3936 (16 Nov 2019)
2-
- Added support for Starblade Alpha videos
6+
- Added support for Starblade Alpha and Galaxian 3 videos
37
Bug fixes:
48
- Replacing audio throws an exception
59
v1.00 rev3921 (7 Sept 2019) The "ran out of version numbers" release

jpsxdec/doc/LICENSE.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ Specifically src/jpsxdec/i18n/I.java and Translations*.properties
5555

5656
Copyright:
5757
Michael Sabin
58-
V�ctor Gonz�lez
58+
Víctor González
5959
Sergi Medina
6060
Gianluigi "Infrid" Cusimano
6161

6262
English and Japanese by Michael Sabin
63-
Spanish by V�ctor Gonz�lez and Sergi Medina
63+
Spanish by Víctor González and Sergi Medina
6464
Italian by Gianluigi "Infrid" Cusimano
6565

6666
Licensed under the Apache License, Version 2.0

jpsxdec/src/jpsxdec/Version.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
public class Version {
4141

42-
public final static String Version = "1.01 (beta)";
42+
public final static String Version = "1.02 (beta)";
4343
public final static String IndexHeader = "[jPSXdec v"+Version+"]";
4444

4545
}

jpsxdec/src/jpsxdec/i18n/I.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ <p>Right after this string, the next string (CMD_ASSERT_DISABLED_NO_DEBUG_USE_EA
979979
</ul>
980980
*/
981981
public static @Nonnull ILocalizedMessage GUI_DISC_NO_RAW_HEADERS_WARNING() {
982-
return msg("GUI_DISC_NO_RAW_HEADERS_WARNING", "Disc image does not have raw headers -- audio may not be detected.");
982+
return new _PlaceholderMessage("File does not have raw sector headers -- audio may not be detected.");
983983
}
984984

985985
/**
@@ -3852,8 +3852,8 @@ <pre>Trying to reduce quantization scale of macroblock ({0,number,#},{1,number,#
38523852
<li>SectorClaimToRoadRash.java</li>
38533853
</ul>
38543854
*/
3855-
public static @Nonnull ILocalizedMessage ROADRASH_DATA_CORRUPTION() {
3856-
return msg("ROADRASH_DATA_CORRUPTION", "RoadRash data corruption");
3855+
public static @Nonnull ILocalizedMessage EA_VIDEO_DATA_CORRUPTION() {
3856+
return new _PlaceholderMessage("EA video data corruption");
38573857
}
38583858

38593859
/**
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
* jPSXdec: PlayStation 1 Media Decoder/Converter in Java
3+
* Copyright (C) 2019 Michael Sabin
4+
* All rights reserved.
5+
*
6+
* Redistribution and use of the jPSXdec code or any derivative works are
7+
* permitted provided that the following conditions are met:
8+
*
9+
* * Redistributions may not be sold, nor may they be used in commercial
10+
* or revenue-generating business activities.
11+
*
12+
* * Redistributions that are modified from the original source must
13+
* include the complete source code, including the source code for all
14+
* components used by a binary built from the modified sources. However, as
15+
* a special exception, the source code distributed need not include
16+
* anything that is normally distributed (in either source or binary form)
17+
* with the major components (compiler, kernel, and so on) of the operating
18+
* system on which the executable runs, unless that component itself
19+
* accompanies the executable.
20+
*
21+
* * Redistributions must reproduce the above copyright notice, this list
22+
* of conditions and the following disclaimer in the documentation and/or
23+
* other materials provided with the distribution.
24+
*
25+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
26+
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27+
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
28+
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
29+
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36+
*/
37+
38+
package jpsxdec.i18n;
39+
40+
import java.text.MessageFormat;
41+
import java.util.logging.Level;
42+
import java.util.logging.LogRecord;
43+
import java.util.logging.Logger;
44+
import javax.annotation.CheckForNull;
45+
import javax.annotation.Nonnull;
46+
47+
/** Development localized message. Replace with actual message before release. */
48+
public class _PlaceholderMessage implements ILocalizedMessage {
49+
50+
@Nonnull
51+
private final String _sMessage;
52+
@CheckForNull
53+
private final Object[] _aoArguments;
54+
55+
public _PlaceholderMessage(@Nonnull String sMessage, Object ... aoArguments) {
56+
_sMessage = sMessage;
57+
_aoArguments = aoArguments;
58+
}
59+
60+
public _PlaceholderMessage(@Nonnull String sMessage) {
61+
_sMessage = sMessage;
62+
_aoArguments = null;
63+
}
64+
65+
public void logEnglish(@Nonnull Logger log, @Nonnull Level level) {
66+
logEnglish(log, level, null);
67+
}
68+
69+
public void logEnglish(@Nonnull Logger log, @Nonnull Level level, @CheckForNull Throwable ex) {
70+
LogRecord lr = new LogRecord(level, _sMessage);
71+
lr.setLoggerName(log.getName());
72+
if (_aoArguments != null)
73+
lr.setParameters(_aoArguments);
74+
if (ex != null)
75+
lr.setThrown(ex);
76+
log.log(lr);
77+
}
78+
79+
public @Nonnull String getEnglishMessage() {
80+
if (_aoArguments == null)
81+
return _sMessage;
82+
else {
83+
Object[] aoArgCopy = new Object[_aoArguments.length];
84+
for (int i = 0; i < _aoArguments.length; i++) {
85+
Object arg = _aoArguments[i];
86+
if (arg instanceof ILocalizedMessage)
87+
aoArgCopy[i] = ((ILocalizedMessage)arg).getEnglishMessage(); // recursively get all the English
88+
else
89+
aoArgCopy[i] = arg;
90+
}
91+
92+
return MessageFormat.format(_sMessage, aoArgCopy);
93+
}
94+
}
95+
96+
public @Nonnull String getLocalizedMessage() {
97+
return getEnglishMessage();
98+
}
99+
100+
@Override
101+
public String toString() {
102+
return getLocalizedMessage();
103+
}
104+
105+
public boolean equalsIgnoreCase(@Nonnull String s) {
106+
return _sMessage.equalsIgnoreCase(s);
107+
}
108+
109+
}

jpsxdec/src/jpsxdec/indexing/DiscIndexer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@
5454
import jpsxdec.modules.ac3.DiscIndexerAceCombat3Video;
5555
import jpsxdec.modules.crusader.DiscIndexerCrusader;
5656
import jpsxdec.modules.dredd.DiscIndexerDredd;
57+
import jpsxdec.modules.eavideo.DiscIndexerEAVideo;
5758
import jpsxdec.modules.iso9660.DiscIndexerISO9660;
5859
import jpsxdec.modules.policenauts.DiscIndexerPolicenauts;
59-
import jpsxdec.modules.roadrash.DiscIndexerRoadRash;
6060
import jpsxdec.modules.spu.DiscIndexerSpu;
6161
import jpsxdec.modules.square.DiscIndexerSquareAudio;
6262
import jpsxdec.modules.strvideo.DiscIndexerStrVideo;
@@ -81,7 +81,7 @@ public abstract class DiscIndexer {
8181
new DiscIndexerPolicenauts(),
8282
new DiscIndexerCrusader(log),
8383
new DiscIndexerDredd(log),
84-
new DiscIndexerRoadRash(),
84+
new DiscIndexerEAVideo(),
8585
};
8686
ArrayList<DiscIndexer> indexers = new ArrayList<DiscIndexer>(Arrays.asList(coreIndexers));
8787

jpsxdec/src/jpsxdec/modules/SectorClaimSystem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@
4949
import jpsxdec.modules.cdaudio.SectorClaimToSectorCdAudio;
5050
import jpsxdec.modules.crusader.SectorClaimToSectorCrusader;
5151
import jpsxdec.modules.dredd.SectorClaimToDreddFrame;
52+
import jpsxdec.modules.eavideo.SectorClaimToEAVideo;
5253
import jpsxdec.modules.iso9660.SectorClaimToSectorISO9660;
5354
import jpsxdec.modules.policenauts.SectorClaimToPolicenauts;
54-
import jpsxdec.modules.roadrash.SectorClaimToRoadRash;
5555
import jpsxdec.modules.square.SectorClaimToSquareAudioSector;
5656
import jpsxdec.modules.strvideo.SectorClaimToStrVideoSector;
5757
import jpsxdec.modules.xa.SectorClaimToSectorXaAudio;
@@ -99,7 +99,7 @@ public class SectorClaimSystem {
9999
scs.addClaimer(new SectorClaimToSectorCrusader());
100100
scs.addClaimer(new SectorClaimToDreddFrame());
101101
scs.addClaimer(new SectorClaimToPolicenauts());
102-
scs.addClaimer(new SectorClaimToRoadRash());
102+
scs.addClaimer(new SectorClaimToEAVideo());
103103
scs.addClaimer(new SectorClaimToUnidentifiedSector());
104104
return scs;
105105
}

jpsxdec/src/jpsxdec/modules/roadrash/BitStreamUncompressorRoadRash.java renamed to jpsxdec/src/jpsxdec/modules/eavideo/BitStreamUncompressor_EA.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3636
*/
3737

38-
package jpsxdec.modules.roadrash;
38+
package jpsxdec.modules.eavideo;
3939

4040
import javax.annotation.Nonnull;
4141
import jpsxdec.psxvideo.bitstreams.ArrayBitReader;
@@ -45,11 +45,11 @@
4545
import jpsxdec.psxvideo.bitstreams.BitStreamUncompressor_STRv2;
4646
import jpsxdec.psxvideo.bitstreams.ZeroRunLengthAcLookup;
4747

48-
public class BitStreamUncompressorRoadRash extends BitStreamUncompressor {
48+
public class BitStreamUncompressor_EA extends BitStreamUncompressor {
4949

5050
private final int _iQuantizationScale;
5151

52-
public BitStreamUncompressorRoadRash(@Nonnull byte[] abMdecPacketPayload,
52+
public BitStreamUncompressor_EA(@Nonnull byte[] abMdecPacketPayload,
5353
@Nonnull ZeroRunLengthAcLookup lookupTable,
5454
int iQuantizationScale)
5555
{
@@ -65,8 +65,8 @@ public BitStreamUncompressorRoadRash(@Nonnull byte[] abMdecPacketPayload,
6565

6666
@Override
6767
public @Nonnull BitStreamCompressor makeCompressor() {
68-
// Writing a Road Rashvideo encoder would be a significant amount of work.
69-
// And that might be ok, except to properly replace Road Rash videos would
68+
// Writing a EA video encoder would be a significant amount of work.
69+
// And that might be ok, except to properly replace EA videos would
7070
// require re-building all of the packets from start to finish.
7171
// That is beyond the scope jPSXdec's functionality. Modders will have
7272
// to handle that part on their own.
@@ -84,7 +84,7 @@ public String toString() {
8484
static final int BITSTREAM_ESCAPE_CODE = 0x7c1f;
8585

8686
/** The VLC0 packet contains a list of MDEC codes that are mapped to bit-codes in this order. */
87-
static final BitStreamCode[] ROAD_RASH_BIT_CODE_ORDER = {
87+
static final BitStreamCode[] EA_VIDEO_BIT_CODE_ORDER = {
8888
BitStreamCode._10_______________,
8989
BitStreamCode._110______________,
9090
BitStreamCode._111______________,
@@ -312,8 +312,8 @@ public String toString() {
312312
};
313313

314314
static {
315-
if (ROAD_RASH_BIT_CODE_ORDER.length != BitStreamCode.getTotalCount())
316-
throw new AssertionError("Road Rash VLC code count is wrong");
315+
if (EA_VIDEO_BIT_CODE_ORDER.length != BitStreamCode.getTotalCount())
316+
throw new AssertionError("EA VLC code count is wrong");
317317
}
318318

319319
}

0 commit comments

Comments
 (0)