Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Archives:

FFmpeg Autobuilds

September 21st, 2006 by Multimedia Mike

I have been sitting on this for at least a month. As brainstormed in this post, I have developed a system on a spare, headless, always-on x86 Linux box that automatically updates its FFmpeg SVN copy and compiles it with 6 different gcc versions, essentially the latest in each of the 2.95, 3.2, 3.3, 3.4, 4.0, and 4.1 series. That’s all working quite well. The part that I’m trying to resolve right now is what to do with the results. I would like to aggregate the results into a concise format for easy web reading. Plus, it would be good to have a history of build successes/failures. I think an RSS aggregation would be useful as well. And for bonus points, some halfway intelligent system that figures out which warnings occur in all or most builds. This would reveal good code janitor work for aspiring FFmpeg developers.

This is just the first phase. Of course, I want to add functional tests later, such as the standard regression. I am still trying to get the infrastructure up.

Related post:

Posted in FATE Server, Open Source Multimedia | 1 Comment »

Branching Out

September 18th, 2006 by Multimedia Mike

Cyril Zorin wanted a good place to document a 3D model format used in a LucasArts computer game. I thought this might be a good time to expand the charter of the MultimediaWiki to include more general game formats, not just the FMV-oriented ones. That is, unless there are other wikis devoted to that same charter. Perhaps I’m not asking the right questions, but a quick Google for “game format wiki” brings up this domain and the XentaxWiki in the first page.


joystick

BTW, Cyril wants to know if anyone has anything to add to the inaugural 3D format page in the MultimediaWiki.

Posted in Game Hacking | 7 Comments »

Reverse Engineering Artwork

September 16th, 2006 by Multimedia Mike

VAG directed me to some curious visualization of console game disassemblies filed under distellamap. This particular experiment targets Atari games and helps to highlight some of the graphics contained inside. Nearer and dearer to my heart is some of the research upon which this was based called dismap which maps the flow of selected Nintendo Entertainment System games.

Posted in Reverse Engineering | Comments Off on Reverse Engineering Artwork

Investigating Hachoir

September 14th, 2006 by Multimedia Mike

In response to yesterday’s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the “I wish I had thought of that” category– Hachoir (wish I knew how to pronounce it). It’s a Python-based framework for writing file parsers.


Hachoir mascot appliance

Finally! I have a compelling reason to learn Python.*** Python has long been on my list of languages to figure out, along with Prolog. Tonight, I wrote a very basic extension to Hachoir to parse the BIN FMV format discovered in my most recent exploration journal entry. And look– this WordPress plugin for code syntax highlighting also does Python:

  1. from hachoir.field import (Parser, ParserError,
  2.     UInt8, UInt16, UInt32, String, RawBytes)
  3. from hachoir.endian import BIG_ENDIAN
  4. from hachoir.text_handler import hexadecimal
  5.  
  6. class SpiderManBinFile(Parser):
  7.     tags = {
  8.         "file_ext": "bin",
  9.         "min_size": 8*8,
  10.         "description": "The Amazing Spider-Man vs. The Kingpin (Sega CD) FMV"
  11.     }
  12.  
  13.     endian = BIG_ENDIAN
  14.  
  15.     def validate(self):
  16.         return (self.stream.readBytes(0, 4) == 'CONF')
  17.  
  18.     def createFields(self):
  19.         yield String(self, "chunk type", 4, "FourCC")
  20.         yield UInt32(self, "chunk length", "4 bytes", text_handler=hexadecimal)

Right now, this produces the output:

root (The Amazing Spider-Man vs. The Kingpin (Sega CD) FMV)
0) chunk type= "CONF": FourCC (size 4 bytes)
4) chunk length= 0x00000028: 4 bytes (size 4 bytes)
8) raw[]= "\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0(...)" (size 3.3 MB)
[ q to quit - move with arrows, page up/down, home/end ]

I still have a lot to learn about both Python and the existing framework facilities provided by Hachoir for parsing chunked file formats. The program already includes parsers for an impressive array of file format types. One that is of particular interest to me is a QuickTime file parser that the authors concede is rather incomplete. I see real promise for this parser as a research and troubleshooting tool for one of the most involved multimedia formats available.

*** (Proviso: No disrespect meant to anyone’s favorite language. I’m as fascinated with new programming languages as the next hardcore Linux geek. But it always helps me to learn a new language when I have a clear goal outlined for doing so.)

Posted in Python, Reverse Engineering | 1 Comment »

« Previous Entries