jPSXdec is a cross-platform PlayStation 1 media decoder/converter.
Get the latest version here.

Friday, December 14, 2007

Happy Winter Solstice

This time of year brings, among other things, demands that defy the known laws of time and space. So further updates for jPSXdec and the STR file format will have to wait until after the holidays.

In the works:
  • Full FF8 support done!
  • GUI well, it's something
  • Removing dependence on Java 1.6, down to 1.5 done!
  • FF9 video support video yes, audio no
  • TIM image searching and converting need to include more comprehensive TIM searching
So until then, may you have a pleasant season.

Thursday, November 29, 2007

Games tested with jPSXdec

PLEASE LEAVE A COMMENT ABOUT ANY GAME YOU USED WITH JPSXDEC

Alundra 2 - works
Valkyrie Profile - works
Xenogears - works
Final Fantasy Chronicles - works (video at 30 fps)
Saiyuki: Journey West - works
Intelligent Qube - works
Power Puff Girls - works
Simpsons Wrestling - works
Super Puzzle Fighter 2 Turbo - works
Lethal Enforcers 1 and 2 - works
Battle Arena Toshinden - works
Metal Gear Solid - works
Silent Hill - works
Tekken 3 - works
Xeno Gears - works
Motorhead - works
Oddworld Abes Oddysee - works
Spyro - works
Worms World Party - works
Soul Blade - works
R4 Ridge Racer Type 4 - works

Samples from ffmpeg examples
abc000.str - works (video at 30 fps)
descent_descent-e.str.bz2 - works
finalfantasyVII_movie-gold4.mov.bz2 - works
jumpingflash2_music2.xai.bz2 - works
jumpingflash2_movie-01.str.bz2 - works
lain.str - works
lunar2.str - works (video just under 20 fps)
river1.str - works (video at 12.5 fps)
st3.xa - works
logo.iki - works (from game "UmJammer Lammy")

Games requiring special handling
Serial Experiments Lain - works
FF7 - works
FF8 - works
FF9 - works
Chrono Cross - works
Alice in Cyberland - works
Sonic Wings Special - last movie seems like filler data, but can be converted if it is first copied off the disc normally
Ace Combat 3 - works
Legend of Mana

Gran Turismo?
G-Generation?
Ko'hloons Gate?
Maborosi (まぼろし月夜) Moonlit Night?
Formula 1?
Lunar 2?
BeatMania 4?

Friday, November 9, 2007

"Huve Fun With Family Movie"


...with out warranty of any kid.

Tuesday, November 6, 2007

#lain

Through a lucky course of events, the folks over at a Lain IRC channel ran across my page. As farhan put it, "i suppose lain favours your blog". The people were friendly, and I met an excellent tester that helped with the jPSXdec development (thanks phm!).

If you love Lain, and know how to get around IRC (or can fake it, like I do ;), then feel free to join us at IRCnet (open.ircnet.net or maybe irc.ircnet.com) #lain.

Sunday, November 4, 2007

nihongo

Since I began the task of decoding the Serial Experiments Lain Playstation movies years ago, I've hoped some friendly multi-lingual folks might someday translate all the audio and movies into English. I've always assumed the translated media would be downloadable, separate from the game itself, until I met a fellow who had the lofty desire to put the translated media back into the game.

I wondered what he was going to do about the 2 hours of audio. Dubbing seems the only option. But while finally playing through the whole game the other night, I found there are many sound-effects and characters in the audio portions. I would hate to lose all that to dubbing (not to mention my preference for sub-titles).

However, I also noticed the pictures shown in the background as you listen to audio, and I started thinking...


Not an actual screen-shot (you can tell by the pixels), but I have the ability to make it so. This isn't a perfect solution, but could be an alternative to dubbing (and it's probably easier too).

Saturday, October 27, 2007

Close the world, Open the nExt.

After watching and enjoying the Serial Experiments Lain anime series, my interest was piqued by something I saw on the disc extras.

A Lain Playstation game.

And I had to own it.

With the help of my Japanese co-worker during my trip to Japan, I managed to acquire a copy all of my own.

Jen's site was accurate when it said there was very little info about the game. Following her lead, I wanted to change that. I wanted to decode the video for all to see. The audio could be ripped just fine, but the video refused to decode. Endless Googles later and I was still left wanting.

While toying with the game in an emulator, it dawned on me that if I couldn't decode the video off the disc, maybe I could let the game do it for me. I got the open source P.E.Op.S. GPU plug-in and went to work grabbing the video frames before anything was drawn over them. Soon I had nearly all the media from disc 1 sitting on my hard drive.

However, I ran into a snag. The decoded audio from the disc wasn't lining up with the video frames I had captured.

I had big plans, but was burning out and couldn't ever find a reason for this discrepancy. The project was abandoned for another day.

Two years later...

Finding myself still stumped over the audio/video mismatching, I veered a different direction. Could I possibly learn how to decode PSX videos myself?

Another endless bout of Googles later and I learned about JPEG and MPEG encoding. Soon I had my own I-frame decoder. It was the Q-gears source code that finally pushed the decoder into aligning with PSX data. It was done. I was seeing video frames from games I'd never seen before, and without ever touching someone else's decoder.

I could do what existing decoders could do, but what of Lain? What is with all this video data? It doesn't add up to anything sensible. Again I hit a snag. The only way to know what the data means is to see what the game is doing, and how could I do that?

I was just about ready to settle with my mis-matched audio and video frames, but I couldn't leave well enough alone. I ran across the pSX emulator that provides debugging capabilities. So over a three day weekend I swam through a sea of R3051 assembly code. By the end I knew how it is all done.

Outraged at the lack of information and source code about the PSX, I decided to take my little decoder to the big time and share everything I have learned over the last few months.

And thus is the jPSXdec.

Sunday, October 21, 2007

Open Sauce

As mentioned in the project goals, the code will be open source. And I want to make sure this source code stays open and free (unlike so many hacking tools before this one). As such, I plan on releasing jPSXdec under GPL v3 GPL v2 (for better compatibility).

Initially, I thought simply providing the source compressed in an archive on this site would be sufficient. I've mentioned a few ways people could help with the development if they were interested. I kept these very modular, so incorporating them would be fairly easy. I also didn't think the source code would be very large.

But there has been a request to setup a code repository instead. I've also realized the size of the source code is already non-trivial (almost 7000 lines of code), and will only grow larger (especially if a GUI is added).

I'm all for setting up a code repository, however, I don't know anything about existing hosting sites (except SF), nor do I have any experience setting up or maintaining such a site. I wish I could list some criteria, but I'm not even sure what I'll need. If anyone has any thoughts/info/suggestions/insight, I'd be interested in hearing them.
Update: After carefully weighing the different options, I found that Google Code was the best choice after all (thanks phm).

I will also be releasing two tidbits of documentation:
  • documentation about the code, describing how the different classes are organized and used.
  • a lengthy text file describing the STR file format and decoding process (nearly complete).
While I'm somewhat familiar with the GPL license, I've never had any experience with licensing documentation. It seems there are two recommended options: GNU FDL and FreeBSD Documentation License. After reading a little about them, I'm not sure which to choose. Again, if anyone has any thoughts, please share.
Update: Went with MIT license.


Thanks!