Skip to content

Commit

Permalink
v0.99.9 rev3898 (9 Aug 2019)
Browse files Browse the repository at this point in the history
- Added Italian translation (thanks Gianluigi "Infrid" Cusimano!)
- Updated Spanish translation
  (still many thanks to Víctor González, Sergi Medina!)
- Minimum required Java version is now version 6
- Updated to be compatible with Java version 9 and higher
- Added support for ReBoot video (thanks to XBrav!)
- Added support for Policenauts FMVs
- Added support for Road Rash 3D FMVs
- Added support for opening video of Aconcagua
- Improved real-time audio/video player on Linux (hopefully)
Bug fixes:
- Couldn't save 24-bit TIM images as png
- Videos with odd frame dimensions caused errors
- Lots of small fixes
Internal:
- Revamped bitstream handling
- Several simplifications
Known issues:
- Videos with variable frames rates saved as AVI do not play right in
  some video players (primarily on Windows). Use a more reliable player
  such as VLC media player.
  • Loading branch information
m35 committed Aug 10, 2019
1 parent 5096e0b commit 3c34022
Show file tree
Hide file tree
Showing 251 changed files with 15,150 additions and 5,239 deletions.
2 changes: 1 addition & 1 deletion jpsxdec/PlayStation1_STR_format.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The PlayStation 1 Video (STR) Format
v1.11, ? 2017?
http://jpsxdec.kenai.com/
https://github.com/m35/jpsxdec
http://jpsxdec.blogspot.com/

--------------------------------------------------------------------------------
Expand Down
87 changes: 24 additions & 63 deletions jpsxdec/TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,10 @@ Improvements

Java 6 Console
Background
Java <= 5 only has stdout PrintStream,
which does not allow choosing the text encoder (for non-English languages)
Java <= 5 only had stdout PrintStream, which does not allow choosing the text
encoder (for non-English languages)
Suggested solution
Use Java 6 Console to use proper encoding when printing to the console
Java 6 added 'Console' that offers the choice of encoding
jPSXdec uses Java 5, however reflection can get around that
The printing to the console can be abstracted and reflection could not only save
Faith's sister Kate but also gain access to Console if Java >= 6, otherwise fall back to PrintStream
Use Java 6 Console to use proper encoding when printing to the console.

GUI improvements
* Only show disc and index dropdown button when there are list entries
Expand Down Expand Up @@ -127,8 +123,6 @@ Add list box when indexing that will show the items as they are discovered
? Make tutorial on ripping a game and using jpsxdec
? Update manual to cover game ripping

Remove .mov from STR extensions
Give up trying to verify CD sector header "File" should have any value
Log "Writing dup frame for frame" to user log with "to keep audio and video in sync"
Log "Ahead of reading by x frames" more like "out of sync with frame timing" maybe?
"Frame in sectors 129921-129927 is missing chunk 6" -> "Frame found in sectors x-x is incomplete or missing data"
Expand All @@ -154,11 +148,10 @@ Serious Real-time media playback/preview issues
* OpenJDK Ubuntu video playback doesn't process frames
* Oracle Java Ubuntu VM audio auto-starts when it shouldn't
jPSXdec still has issues in several cases
! Bug: Audio that starts way before, ends way after, or has long breaks is not handled by player (ff tactics FFTST.STR)
/?/ Bug: Audio that starts way before, ends way after, or has long breaks is not handled by player (ff tactics FFTST.STR)
* Bug: when audio doesn't start for a prolonged period, video frame queue fills and blocks
* Add PlayingState.AT_END
* Bug: Player doesn't let you play movie with 1 frame
* Bug: video player repeats prior frames and audio when frame type is not detected
/?/ Bug: Player doesn't let you play movie with 1 frame
/?/ Bug: video player repeats prior frames and audio when frame type is not detected
* Pause video-only playback when reading is delayed
/?/ Bug: end of playing race condition locks gui
/?/ Bug: Player automatically plays video-only content when it is very short
Expand Down Expand Up @@ -186,17 +179,24 @@ Games to investigate
* Discworld 2
* BrainDead 13
* Syphon Filter 3
* Policenauts - Video in static files
* "Love Game's - Wai Wai Tennis [Service Price] [SLPS-01647] have intro.str file weighing 33 megabytes. In jpsxdec did not see."
* Fear Effect
* Kowloon's Gate
* Jackie Chan Stuntmaster
* Firemen 2
* Magic the Gathering
* Aconcagua ending video
// Policenauts - Video in static files

Replace
* Crusader audio
* SPU
Then introduce a shared -replace command
with a prompt before applying changes
which can be skipped with -y (don't prompt to apply changes)
or -n (essentially a dry-run)
* SPU
* Add ability to replace using a PNG with (semi-)transparent pixels
which would be painted over the original frame, then re-encoded
x Crusader audio
x Then introduce a shared -replace command

Editing disc items
* SPU items samples/second varies by clip
Expand Down Expand Up @@ -237,8 +237,6 @@ Create my own smaller/simpler arg parser

General code stuff
* Add unit tests to build.xml
* Unit tests require Java 6 while jPSXdec is built with Java 5 ...
can use 2 different Javas in ant?
* Create unit test subproject?
* Clean up all the TODOs
* Proper handling for InterruptedExcetion
Expand All @@ -249,22 +247,16 @@ General code stuff
Add @Override all the things

Logger framework that supports thread context logging - removes all the log parameters
Replace playback system with ExecutorService

SectorClaimer is not thread safe! setRangeLimit() mutates the global instance

* Super simplify but slow down IO.java
! Cleanup Main: Remove FeedbackStream and just use a Logger
* show error/warn unused cmdline args
/ show error/warn unused cmdline args

! Have separate DiscItemBuilderGuiFactory to create a gui from a DiscItemBuilder and cache it
* Have separate DiscItemBuilderGuiFactory to create a gui from a DiscItemBuilder and cache it
* Log when frame rate detection fails

* change xa playback to properly handle static (adjacent sector) streaming
* change xa playback to better handle static (adjacent sector) streaming
* Figure out how to better organize all the RGB and YCbCr pixel formats

? Use ConcurrentLinkedQueue in player queue wrapped with bounds

? Optimize AviWriter with buffers
- Construct audio/video chunks in ram before writing
- Write to buffered stream
Expand All @@ -277,7 +269,6 @@ SectorClaimer is not thread safe! setRangeLimit() mutates the global instance
may remove the possibility of random access, unless there is smart
limited scope contextual detection considering adjacent sectors

? Can the 0 AC remover count them then have single message per frame?
"Invalid Crusader header 00000000000000000000000000000000"
Any way to check where in the stream it is?

Expand Down Expand Up @@ -311,8 +302,6 @@ Video encoder

Game specific
* Finish testing LoD iki: GOAST.IKI (end of disc 2), DENIN2.INI (middle of disc 3), DRAGON1.IKI
* Add WCW to sector test
* Update LoM sector test
* Finish Crusader tests
. only audio
. starts near end
Expand All @@ -338,7 +327,7 @@ Game specific
? Even when not upsampling chroma, utilize it for PsxYuv->JpgYuv matrix conversion
! Test how much difference there is between the two color sets
? When displaying progress, setup a timer to only update the display at most every second
? Index doesn't indicate generic type that is used in cmdline save all
* Index doesn't indicate generic type that is used in cmdline save all
/?/ Add LIST:INFO:ISFT to AVI
? Save and load gui ini on every change?
? https://github.com/Georgeto/XFileDialog
Expand All @@ -349,6 +338,8 @@ Game specific

Done or rejected /x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x/x

//Remove .mov from STR extensions
//Give up trying to verify CD sector header "File" should have any value
// Indexing overhaul:
//Introduce contextual information to help identify sector types
//Identifying video sectors by combining the frame data along the way and checking if its valid (FF7, Lain, Dredd)
Expand All @@ -357,8 +348,6 @@ x Change visualization to output HTML page -> no, 20mb .html files are bad
x Finish function "identifySector()" in DiscItem
to more quickly figure out what type of sectors are read (since it won't
have to go through the whole list of like 10 types).
// Add partial replace tests
// Add in a comment in log what sector types were found during indexing (for debugging)
x Change sector reading to start by only reading the header, then read remaining as needed
-> like to avoid handling possible ioexception everywhere
x PSX may not like replaced tims, check palette effect -> removed bmp tim replace
Expand All @@ -374,37 +363,9 @@ x PSX may not like replaced tims, check palette effect -> removed bmp tim replac
// unfortunately RandomAccessFile cannot be extended like this
// use threads
x otherwise stuck with a state machine
// Verify Loggers and LogRecords and ResourceBundles, use another log system? -> my own logger
// Finish RbGen
// Localize Main help
// Finish XA encoder
// Look into adding ErrorHandler to my Loggers -> my own logger
// Ensure cleaning AC=0 codes doesn't affect decoded output
// Try to find audio from Gran Turismo
// Remove need for video frame dimensions to be in sector
// Demuxer should provide frame dimensions either from the sector or from checking the demuxed frame
// Applies to: Dredd, Gran Turismo 2, Crusader already does this?
// XA replace: give better feedback what stopped the replace
// Save isofile: display output size for raw/normal
/ Add time log msg at end of save/index
// Update launch4j
// Update dir chooser - project is dead
//Indexing
// ISO indexer keeps a bit array of all sectors in the CD and flags them as mode 1/2.
//When creating the DiscItemISO9660Files, it checks if the file contains mode 2 sectors
// Duplicated frame number in header messes things up (iki)
// Remove need for frame numbers, and Dredd prebuilt index
x Just store the frame start sectors for Dredd
x Make Dredd indexer and Dredd Disc item that subclasses DiscItemVideoStream
// Localize disc item help
// Change the way video items split audio items: do it after indexing.
//It's conceptually better, and removes Audio indexer from having to know about video frames.
//However, different movie types split movies slightly differently
//And right now its the sectors that are the only game specific logic
//I would need to add game specific indexers
x Add doxygen to build.xml
x Make doxygen config
x Bug: Tree music icon is hard to see on blue background
// Can the 0 AC remover count them then have single message per frame?

------------------------------------------
User test feedback
Expand Down
28 changes: 6 additions & 22 deletions jpsxdec/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

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

<property name="jpsxdec.ver" value="v0-99-8_rev3788"/>
<property name="jpsxdec.ver" value="v0-99-9_rev3898"/>

<!-- sources -->
<property name="src.dir.rel" location="src" relative="true"/>
Expand Down Expand Up @@ -43,8 +43,8 @@
<property name="build-lgpl.dir" location="${working.dir}/build-lgpl"/>
<property name="testbuild.dir" location="${working.dir}/build-test"/>

<property name="javac.target.ver" value="1.5"/>
<property name="javac.source.ver" value="1.5" />
<property name="javac.target.ver" value="1.6"/>
<property name="javac.source.ver" value="1.6" />

<!-- output -->
<property name="release.dir" location="${working.dir}/release"/>
Expand All @@ -62,7 +62,7 @@
</target>

<target name="compile-lgpl" depends="init" description="compile the LGPL source" >
<echo>Be sure to set JAVA_HOME to 1.5 jdk directory before building.</echo>
<echo>Be sure to set JAVA_HOME to 1.6 jdk directory before building.</echo>
<!-- Create the lgpl build directory -->
<mkdir dir="${build-lgpl.dir}"/>
<javac srcdir="${src-lgpl.dir}" destdir="${build-lgpl.dir}" includeantruntime="false"
Expand All @@ -85,7 +85,7 @@


<target name="compile" depends="package-lgpl" description="compile the jPSXdec source" >
<echo>Be sure to set JAVA_HOME to 1.5 jdk directory before building.</echo>
<echo>Be sure to set JAVA_HOME to 1.6 jdk directory before building.</echo>
<!-- Create the build directory -->
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false"
Expand Down Expand Up @@ -167,7 +167,7 @@ Manually convert manual to pdf using [Open|Libre]Office to continue build
<target name="test" depends="compile" description="build and run tests">
<fail message="Found Java version ${ant.java.version}. Java version must be at least 1.6.">
<condition>
<equals arg1="${ant.java.version}" arg2="1.5"/>
<equals arg1="${ant.java.version}" arg2="1.6"/>
</condition>
</fail>
<echo>Be sure junit jar (at least verion 4) is in the classpath or local directory or build will fail.</echo>
Expand Down Expand Up @@ -196,22 +196,6 @@ Manually convert manual to pdf using [Open|Libre]Office to continue build
</junit>
</target>

<target name="javadoc" description="generate code documentation via javadoc">
<javadoc additionalparam="-stylesheetfile javadoc.css" charset="UTF-8"
destdir="${javadoc.dir}" docencoding="UTF-8" failonerror="true"
private="true" use="true" windowtitle="jPSXdec" useexternalfile="true">
<classpath>
<path path="${javac.classpath}"/>
</classpath>
<fileset dir="${src.dir}">
<filename name="**/*.java"/>
</fileset>
<fileset dir="${src-lgpl.dir}">
<filename name="**/*.java"/>
</fileset>
</javadoc>
</target>

<target name="clean" description="clean up" >
<!-- Delete all generated dirs -->
<delete dir="${working.dir}"/>
Expand Down
23 changes: 22 additions & 1 deletion jpsxdec/doc/CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
v0.99.9 rev3898 (9 Aug 2019)
- Added Italian translation (thanks Gianluigi "Infrid" Cusimano!)
- Updated Spanish translation (still many thanks to V�ctor Gonz�lez, Sergi Medina!)
- Minimum required Java version is now version 6
- Updated to be compatible with Java version 9 and higher
- Added support for ReBoot video (thanks to XBrav!)
- Added support for Policenauts FMVs
- Added support for Road Rash 3D FMVs
- Added support for opening video of Aconcagua
- Improved real-time audio/video player on Linux (hopefully)
Bug fixes:
- Couldn't save 24-bit TIM images as png
- Videos with odd frame dimensions caused errors
- Lots of small fixes
Internal:
- Revamped bitstream handling
- Several simplifications
Known issues:
- Videos with variable frames rates saved as AVI do not play right in
some video players (primarily on Windows). Use a more reliable player
such as VLC media player.
v0.99.8 rev3788 (21 Jan 2019)
- Updated Spanish translation (still many thanks to V�ctor Gonz�lez, Sergi Medina)
- Updated Japanese translation (still using Google translate)
Expand Down Expand Up @@ -34,7 +55,7 @@ v0.99.8 rev3788 (21 Jan 2019)
- Frame numbering redesign
Known issues:
- Video playback on Linux may still not work right
- Videos with variable frames rates saved as AVI do not play right in the
- Videos with variable frames rates saved as AVI do not play right in the
default video players found in some Windows versions.
Use a more reliable player such VLC media player.
v0.99.7 rev3397 (8 Jan 2017) The "road to v1.0" release
Expand Down
4 changes: 4 additions & 0 deletions jpsxdec/doc/CREDITS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ Sony's official SDK movconv tool.

V�ctor Gonz�lez and Sergi Medina for the Spanish translation.

Gianluigi "Infrid" Cusimano for adding the Italian translation.

XBrav for adding support for Reboot video.

The Hitmen for releasing invaluable source code related to PSX hacking.

The countless people who created so many open source tools that I've used
Expand Down
7 changes: 6 additions & 1 deletion jpsxdec/doc/LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,15 @@ Some individual components are licensed under compatible licenses:
The jPSXdec translations
Specifically src/jpsxdec/i18n/I.java and Translations*.properties

Copyright Michael Sabin, V�ctor Gonz�lez, Sergi Medina
Copyright:
Michael Sabin
V�ctor Gonz�lez
Sergi Medina
Gianluigi "Infrid" Cusimano

English and Japanese by Michael Sabin
Spanish by V�ctor Gonz�lez and Sergi Medina
Italian by Gianluigi "Infrid" Cusimano

Licensed under the Apache License, Version 2.0
The text of this license is contained in the file apache-2.0.txt
Expand Down
Binary file modified jpsxdec/doc/jPSXdec-manual.odt
Binary file not shown.
Binary file modified jpsxdec/jpsxdec.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion jpsxdec/launch4j.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<path></path>
<bundledJre64Bit>false</bundledJre64Bit>
<bundledJreAsFallback>false</bundledJreAsFallback>
<minVersion>1.5.0</minVersion>
<minVersion>1.6.0</minVersion>
<maxVersion></maxVersion>
<jdkPreference>preferJre</jdkPreference>
<runtimeBits>64/32</runtimeBits>
Expand Down
Loading

0 comments on commit 3c34022

Please sign in to comment.