March 31st, 2007 by
Multimedia Mike
I found out that the Nintendo 64 version of Capcom’s timeless Resident Evil 2 features FMV. This is amazing given that that the game is cartridge-based and only has 64 megabytes of data. According to some reports I have read, the N64 version had essentially the same FMV content as the the original PlayStation version had (which came on 2 CDs and had dedicated FMV decoding hardware at it disposal).
I’m sure I’m not the only person to wonder how this N64 FMV works.
Further, I read that the Neo Geo version of the 1994 remake of Double Dragon featured a FMV clip from the hilariously absurd 1994 movie. Naturally, I’m curious how that video was stored. I believe the Neo Geo was another strictly tile-based console which would have required vector quantization.
Posted in Game Hacking |
3 Comments »
March 30th, 2007 by
Multimedia Mike
If you think I’m obsessed with long-obsolete software and technology, I’ve got nothing on Trixter. This guy actually had a bake-off to determine which text editor performs best on an original 8088 PC. Forget vi vs. Emacs. Check out main article. Actually, vi is a contender but it didn’t fare well.
Check out Trixter’s blog for more classic hardware hacking, including information on how he is reworking his infamous 8088 Corruption PC video demo.
Posted in General |
No Comments »
March 29th, 2007 by
Multimedia Mike
So the Apple TV hit the street last week. I wasn’t aware of it until a friend just IM’d me informing me that he kept up his long-standing tradition of early adoption, putting one of these shiny new units next to his Nintendo Wii and Sony PlayStation 3.

Here’s the killer feature he relayed to me:
You’d like apple tv. There’s a built-in movie trailer streaming function.
To think: If Apple had released this unit 7 years ago, I might never have started down the path of multimedia hacking.
Posted in Multimedia Goals And TODO |
No Comments »
March 27th, 2007 by
Multimedia Mike
I've started to plunder my stash of Sega CD games for my Gaming Pathology project. To run the games with the Gens emulator under Windows it is necessary to either install ASPI drivers for accessing the game CD-ROMs in a particular manner, or rip the data and audio tracks into a particular filename sequence in order to play them directly from the hard disk. Since I couldn't make the former work on my new machine, I proceeded with the latter option.

Gens wants the data track, i.e. ISO-9660 CD-ROM filesystem, as 'title.iso'. Any redbook CD audio tracks after the data track need to be in the same directory, compressed as MP3, and named as 'title 02.mp3'...'title nn.mp3'. After performing the process more or less manually for Revengers of Vengeance (I automated some parts, but had to manually rename the files in the end, and RoV has 44 audio tracks), I wrote a Python script to help me with other games (and I'm not very good at Python yet but I like these opportunities to learn).
There might be other ways, better ways, but this is my new way. The script relies on cdparanoia and LAME (oh, and dd and rm). I didn't know any program to query a CD to learn how many audio tracks it had (except my own hacked up program and I didn't feel like leveraging it), so I just perform a rip loop until cdparanoia returns an error. LAME is instructed to encode at its 'insane' profile, sparing no bitrate. Syntax is './rip-sega-cd.py "game title"' which will produce an ISO file and a series of MP3 files if redbook audio is present:
$ ./rip-sega-cd.py "Revengers Of Vengeance"
ripping Revengers Of Vengeance
ripping data track...
/bin/dd if=/dev/cdrom of="Revengers Of Vengeance.iso"
ripping audio tracks...
/usr/bin/cdparanoia --quiet 2
/usr/bin/lame --quiet --preset insane cdda.wav "Revengers Of Vengeance 02.mp3"
/bin/rm cdda.wav
[...repeated for each redbook CD audio track...]
PYTHON:
-
#!/usr/bin/python
-
-
import os
-
import commands
-
from sys import argv
-
-
# programs
-
SOURCE_DRIVE = "/dev/cdrom"
-
DD_COMMAND = "/bin/dd"
-
CDPARANOIA_COMMAND = "/usr/bin/cdparanoia --quiet"
-
LAME_COMMAND = "/usr/bin/lame --quiet --preset insane"
-
RM_COMMAND = "/bin/rm"
-
-
if (len(argv) <2):
-
print "USAGE: rip-sega-cd.py <title>"
-
else:
-
title = argv[1]
-
print "ripping " + title
-
-
# rip ISO-9660 filesystem in the first track
-
data_rip_command = DD_COMMAND + " if=" + SOURCE_DRIVE + " of=\"" + title + ".iso\""
-
print "ripping data track..."
-
print data_rip_command
-
commands.getstatusoutput(data_rip_command)
-
print
-
-
# rip CD audio tracks -> MP3 files until cdparanoia reports an error
-
print "ripping audio tracks..."
-
n = 2
-
error = 0
-
rm_command = RM_COMMAND + " cdda.wav"
-
while (error == 0):
-
# rip
-
audio_rip_command = '%(cmd)s %(n)d' % \
-
{ 'cmd': CDPARANOIA_COMMAND, 'n' : n }
-
print audio_rip_command
-
commands.getstatusoutput(audio_rip_command)
-
-
# encode
-
audio_encode_command = '%(cmd)s cdda.wav "%(title)s %(n)02d.mp3"' % \
-
{ 'cmd' : LAME_COMMAND, 'title' : title, 'n' : n }
-
print audio_encode_command
-
if (commands.getstatusoutput(audio_encode_command)[0]):
-
error = 1
-
-
# cleanup
-
print rm_command
-
commands.getstatusoutput(rm_command)
-
-
n = n + 1
-
print
Posted in Game Hacking, Python |
5 Comments »
March 23rd, 2007 by
Multimedia Mike
The deadline for students to submit an application to Google's Summer of Code, 2007 Edition looms. Tomorrow, March 24th, is it. If you are interested in participating in FFmpeg for the SoC, go here to apply. The FFmpeg project does have the qualification requirement this year. However, that does not need to be done by tomorrow. You still have about 2 weeks to complete that.
Update: As noted by Monsieur Swain in the comments, the deadline Google has extended the application deadline to March 26th.
Posted in Open Source Multimedia |
1 Comment »
March 20th, 2007 by
Multimedia Mike
Trixter, who's interested in even older multimedia formats than I am, has unearthed utilities to compress special ADPCM variants used by the Covox Sound Master. The formats include 2-, 3- and 4-bit ADPCM formats. For anyone interested in trying to reverse engineer the details of these obscure formats (and I know you're out there), check out this directory at the samples site. It has PCM samples compressed in the various formats along with the DOS-based compression utility used. Also, there is a programming library that has C code to interface to a binary library module that handles the meat of the codec operations.
Happy RE'ing.
Posted in Reverse Engineering |
4 Comments »
March 18th, 2007 by
Multimedia Mike
I became curious how many other multimedia-related open source projects were competing with FFmpeg for students in Google's Summer of Code 2007. There is quite an assortment of 3D modelers, audio editors and players, and games on the list. Among them:
Posted in Open Source Multimedia |
No Comments »
March 17th, 2007 by
Multimedia Mike
As in 2006, Google has once again accepted FFmpeg as a mentoring organization in their Summer of Code. For review, this is the program that last year sponsored Kostya's work on an open source VC-1 decoder implementation for FFmpeg. We have been signing up a great crew of mentors and have a number of interesting projects lined up on the Summer of Code 2007 page on the MultimediaWiki.

However, we on the FFmpeg project recognize that multimedia is a tough area and the summer may not provide enough time to really come up to speed on multimedia technology and complete an involved multimedia-related project. Thus, we have prepared a list of qualification tasks on the MultimediaWiki page. These are fairly straightforward mini-projects that should be simple to someone at least marginally skilled in the art. We would like to see an SoC candidate complete one of the tasks in order to qualify for a coveted SoC project. If you are interested in applying, please move quickly as the student application deadline is March 24, 2007.
If you have any questions about this, you can email me privately or subscribe and post to the ffmpeg-devel mailing list. Good luck!
Posted in Open Source Multimedia |
1 Comment »
March 13th, 2007 by
Multimedia Mike
I have been poking at RealVideo 4 lately. Who knows? We might be able to make a Google Summer of Code project out of it. If the FFmpeg project is accepted for the 2007 season.
Here's a curious artifact I found: A method called Decoder::getBackdoorOptions(). The function turns out to be a NOP, though. In the original source, I imagine the guts were protected by an "#ifdef DEBUG...#endif" pair.
Posted in Reverse Engineering |
2 Comments »
March 8th, 2007 by
Multimedia Mike
This is the final entry in my Robots of the 80s series so it's fitting that these are probably the crowning pieces in my soon-to-be-disbursed collection. At the very least, my enduring favorites.
There was a trend in the Transformers toy line to have a team of several robots that combined to form a larger and more powerful robot. In retrospect, this was quite a brilliant marketing strategy. The first such group of robots were the Constructicons -- 6 green construction vehicles that all transformed into robots and then combined into -- I think -- Destructor. Afterwards, there was a team of jet craft Autobots and automobile Decepticons (turning the usual Autobot/Decepticon forms on their ear) which refined the combination model so that it now involved a larger Transformer which formed the mega-robot's torso and 4 smaller Transformers as the limbs.
My favorites were always the Technobots and the Terrorcons:

Click for larger image
Read the rest of this entry »
Posted in Robots Of The 80s |
2 Comments »