For the past few days I have been going through the files and making notes at the same time. I think I did some fairly interesting finds, take a look.
There are 2 different versions of the voice clip of Princess Kyte, in the first scene with Scales and Krystal.
"You coward Scales, my mother will send an army against you". Version one can be heard at 43:41 in the MPEG.bin file that leaked from the SFA E3 demo,
and at 06:24 on the 1 hour Dinosaur Planet video. The second one sounds calm, while at the first one Kyte (which sounds more like Krystal) is shouting.
INTERESTING STUFF:
We know that certain files from the E3 disk are definitely from Dinosaur Planet, like MPEG.bin, MODELS.bin, MUSIC.bin, etc. In the "out" file, a list of files is displayed, with a date to them. These dates vary in the 1999 - 2000 area, 2 years before SFA was released. This could very well be the date that the DP -> SFA transition began. All of the files that we DO know are from DP are mentioned in this file list. These could very well be the whole DP game. They include everything. Textures, models, audio, game text, and there's a high chance the scripts are in there as well (NOTE: It's DLLS.bin, more info below). All of the files mentioned in the file list are available in the root directory of the E3 disk.
default.dol dumped to binary, contains interesting strings.
0x00312255 "Hello My Friend"
0x00311bed "Cryaction" (suggesting Krystal may have been spelled with a "C"?)
0x0030fe05 "Hit Krystal", "The Player Guesses that a Seed goes here!"
0x0030f4f0 "fish has reached the end of it life" (note the typo) TAKE A LOOK BELOW! THIS COULD BE A CLUE TO A HUGE FIND!!
0x0030de00 "Trying to strike baddie, but it doesn't work! Would someone please fix this" (LMAO)
0x0030c584 "tricky error 2!!!!!" (lots of interesting stuff around this offset!)
0x0030b136 "Windows Protection Fault" (and a lot of other debug ?dev unit? strings)
0x0030a7d4 "Distance = %d...Polygons = %3d Textures = %3d.....Size = %6d bytes Model %3d/%3d....Time: SP %.2f%% DP %.2f%%.Animations = %d...csize %i cend %i ambient %i intensity %i....Standard Lighting...starting weapon data....Generating weapon data..ex=%f ey=%f ez=%f hx=%f hy=%f hz=%f dx=%f dy=%f dz=%f...dx underflow....dx overflow.....dy underflow....dy overflow.....dz underflow....dz overflow.....animpos=%f max=%f...POST: animpos=%f max=%f.....modv:trans.. PACKET SIZE %i .... Data %i ... Packed It in %i ...Illegal material number.........Memory Allocation......h.... Àÿÿ€0Úð....€.äp................................Used = %d+%d.Slots = %d+%d.. %08x:%s %d/%d+%d... %s %d+%d...TextStart.= %x.Size = %x....DataStart.= %x.Size = %x....BssStart..= %x.Size = %x....RomTableStart.= %x..Size = %x...RomDataStart.= %x..Size = %x........MainCharacter :....Landscape :....Models :....Sprites :....AntiAliasing :....Transparencies :....Audio :....Clouds :....Shadows+Foots :....Shadow Render :....Lighting :
0x0030A477 "Ping pong"
0x0030928C Seems to be either script names, folder names and / or level names. Also includes Swapstone Circle, AS WELL as Swapstone-Hollow
0x00307BD0 Start of a lot of debug expressions, including "Too suspicious", "Init in attack", "Cant see enemy", "Incoming fire" and "Aggression"
0x00304974 A lot of more debug stuff, don't know if this is normal or a joke, but there's an expression called "DinoVista:", after "WideScreen:".
There we go! 0x003043E8 "Dino Planet.Development.System"
0x00303D70 "SERIOUS ERRROR in meter.c, and I mean SERIOUS"
0x00303B10 Seems to be some initalization stuff, I think from the N64 DP era. There's some version info of some sort which states "Version 2.8 14/12/98 15.30 L Schuneman"
0x0031A928 Sequence text with mentioning of Sabre (only game text in the file, rest is in GAMETEXT.bin (the DP stuff), so THERE IS N64 DP code hidden in here.
"starting seq %d.......What is it ? .......I Can Feel Something Strange !......Randorn... Are You There ??....Be Careful..Skeetas Everywhere !....Stay Close to a Torch!......Light Kills Them....Krystal! How Is My Son?.....Sabre Is Just Glad Your Alive.......When His Brother Died I blamed Myself.......I Couldn't Face Being A Father......Until I Found You My Dear Girl......He Understands Why You Left Him.....He Is A Good Son....I've Yet To See Him To Apologise....He Has Already Forgiven You.....When This Is Over You Shall Be Reunited!....What's happening to you Randorn?....There's not much energy left in this Mountain.......I'm dying..I need food......Do You Remember How We Got Here?....Of Course I Remember........Back On Our Own Planet We Found A.......Strange Room In The Lost City.......There We Uncovered A Message From The.......King EarthWalker, Begging Us To Help Him........And Then I Entered A Wormhole.......And Arrived On Dinosaur Planet......You Followed Later With Sabre.......Yes, We Ended Up In A Chamber Beneath.......One Of The Earthwalker Temples......Unless You Can Find A Cure For Me.......I'm Not Going To Last Much Longer.......But What Can We Do......There Must Be A Similiar Room Here......That Will Allow Us To Return....Either You Or Sabre Must Find It.."
Then there follow some object names.
wmsun:alist.wmcrystal.c
VFlevcontrol.c
minifire.c
statueball.c
ladders.c
fireblock.c
platform1.c
doorswitch.c
draghead.c
lavaflow.c
spellplace.c
DBrockfall.c
[offtopic]I WOULD DO SO MUCH FOR THOSE .c FILES [/offtopic]
Some task / action names, I *think* they're from DP (NOTE: ALSO A CLUE!):
popOutOfGround
burstIntoGroun
biteAttack
standStill
standAndSpit
hitFightMain
fight_die
runt bject
runto_ThrowObj
pickup_Object
throw_AtObject
wait_forObject
Wait_for_throw
try_to_catch
catch_Object
Kill_Object
LOL 0x0031F4F5 "HIT BY SHIT" *cough* Rare, behave yourselves.
LOL2 0x00320ED1 "DOING WARP YEAH HAA"
0x00321CB4 Some other actions...
Laser: Recharging...Laser: Fire->Power..Laser: Fire->Twin...Laser: Fire->Single->Right..Laser: Fire->Single->Left...Laser: Idle.....Bomb: Recharging....Bomb: Fire->Twin....Bomb: Fire->Single->Right...Bomb: Fire->Single->Left....Double Click Right..Click Timers: left=%f right=%f..Mode: VELOCITY LIMIT X..Vel Limit: x=%f y=%f....Mode: VELOCITY LIMIT Y..Mode: VELOCITY SCALE X..Vel Scale: x=%f y=%f....Mode: VELOCITY SCALE Y..Mode: ANGLE LIMIT YAW...Ang Limit: yaw=%f pitch=%f roll=%f..Mode: ANGLE LIMIT PITCH.....Mode: ANGLE LIMIT ROLL..Mode: ANGLE LIMIT ROLLBANK..Ang Limit: %f...Mode: ANGLE SCALE YAW...Ang Scale: yaw=%f pitch=%f roll=%f..Mode: ANGLE SCALE PITCH.....Mode: ANGLE SCALE ROLL..Mode: ANGLE SCALE ROLLBANK..Ang Scale: %f...Mode: LASER TYPE....Mode: LASER RECHARGE....Time(frames): %d....Mode: LASER LIFE....Mode: LASER SPEED...Speed: %f...Mode: BOMB TYPE.....Mode: BOMB RECHARGE.....Mode: BOMB LIFE.....Mode: BOMB SPEED....Mode: BOMB MAX..Max: %d.....Mode: BOMB CURRENT..Current: %d.....Mode: FLAP SCALE....Scale: %f...Mode: BOOSTER ANIM SPEED....Anim Speed %d...Mode: IDLE SPEED ROLL...Mode: IDLE AMPLITUDE ROLL...Amplitude: %f...Mode: IDLE SPEED X..Mode: IDLE AMPLITUDE X..Mode: IDLE SPEED Y..Mode: IDLE AMPLITUDE Y..Mode: IDLE MAX VELOCITY.....Vel: %f.....Mode: IDLE RAMPUP SPEED.....Mode: BANK RAMPUP LIMIT.....Angle: %f...Mode: BANK RAMPUP SPEED.....Mode: BARREL ROLL SPEED.....Mode: BARREL ROLL SLOW ANGLE....Mode: DOUBLE CLICK TIME.....Mode: POSITION LIMIT X..Limit: %f...Mode: POSITION LIMIT Y..Mode: FORWARD VEL...Mode: INFO..JoyStick: x=%2f y=%2f l=%2f r=%2f...Vel: x=%f y=%f..Vel Want: x=%f y=%f.....Ang: yaw=%d pitch=%d roll=%d....Ang: bank=%d barrel=%d..Ang Want: yaw=%d pitch=%d roll=%d bank=%d...Idle: roll=%d x=%d y=%d.....Barrel roll: Scale=%f...Mode: INVALID
THE ZLB FILES ARE PROBABLY COMPRESSED USING "RZIP"
There are a few references to RZIP in default.dol:


--FISH HAS REACHED THE END OF IT LIFE--
So what's this about? Well, this string is probably something from a debug menu of Dinosaur Planet. And also, we're talking game code. All code gets compiled, so it's unreadable for a human, but strings stay (obviously) in tact. So when you have a document like default.dol, which contains code, and you see strings in there, especially debug strings while the game strings are located in a serperate file, you know you have code. Now, why am I telling this... I mentioned before that the "out" file seems to specify all Dinosaur Planet source files. Now, the interesting bit, is the file "DLLS.bin". I've been looking through it, and I ran across this one line. "fish has reached the end of it life". It's the SAME line as in the default.dol file! This makes me believe that the DLLS.bin file --IS-- the Dinosaur Planet (compiled) code. In the DLLS.bin are a few other strings, but not NEARLY as much as in default.dol. The DLLS.bin file also has the same sequence as the one mentioned before between Randorn, Sabre and Krystal. So it really is about default.dol and DLLS.bin now. You might say: "No, that's a DEBUG file". Wrong, lemme explain again. It makes sense that the main code only has debug strings in it, as all of the other strings are in GAMETEXT.bin. Every line of code gets compiled, the strings stay intact in the actual file. And those strings are, you guessed it, mostly debug strings. So I'm pretty certain that, also judging from the file size of the DLLS.bin, it's the whole DP code. The DLLS.bin and default.dol file look totally different as well, which is a VERY good sign, as they should be different if one is an N64 main program, and the other a GameCube main program. Also, in the DLLS.bin file is NO mention whatsoever to the words "fox" and "DVD" (which is used a lot in default.dol). I did find code that was similar to default.dol's code but not entirely. Remember the list with popOutOfGround
, burstIntoGroun, biteAttack, etc? It looks like this in DLLS.bin.
New State [%s]
popOutOfGround
New State [%s]
burstIntoGround
New State [%s]
biteAttack
New State [%s]
standStill
New State [%s]
standAndSpit
New State [%s]
hitFightMain
New State [%s]
fight_die
New State [%s]
run to object
New State [%s]
run to object
WARNING : Has No LOCK
New State [%s]
pick up object
New State [%s]
throw egg object
New State [%s]
wait to catch egg object
WARNING : Current Type Not Found
Sending Off to pick up EGG %x
GOING TO CATCH IT .New State [%s
going to catch ball. HAS BALL : %x= %x
I don't have he ball
THROW CHANCE %i -> Going TO Throw
New State [%s]
try to catch
New State [%s]
catching egg
New State [%s]
going to kill
New AI State [%s]
aiTop
New AI State [%s]
aiIveBeenHit
New AI State [%s]
aiIamDying
New AI State [%s]
aiIamDead
New AI State [%s]
aiDormant
New AI State [%s]
aiL2_MainEngageControl
New AI State [%s]
aiL2_MainEngageStackControl
STACK EMPTY SO RESETING
None Of the Object Exists Any More
LOCK is Not of Given Type
None Of the Object Exists Any More
Egg Has Been Picked Up By Someone Else
DBSTEALERWORM: state stack overflow Stack -------------------
This different layout DOES exist in default.dol, though, only parts of it, it was probably used in SFA as reference for the new code, and thus was modified accordingly, and parts were copied and pasted and so on.
Here's a comparison between default.dol and DLLS.bin.
Left = DLLS.bin. Right = default.dol.
 
All of the other GameCube-related strings like
Dolphin OS $Revision: 36 $
Kernel built : %s %s
May 22 2001.01:47:06
Console Type : Retail %d
Mac Emulator
PC Emulator
EPPC Arthur
EPPC Minnow
Development HW%d
Memory %d MB
Arena : 0x%x - 0x%x
NOTE: This part ALSO exists on the GameCube service disc! See http://www.electricpickleonline.com/?p=38&page=3 (note the texture that has been found, on the top of the page!)
It all does NOT exist in DLLS.bin.
My guess is that the N64 didn't have such a lot of debug-related stuff that had to come from the game itself, like the DVD actions and so on, because of the space it would all take. That would also explain why the DLLS.bin file has less strings in comparison to the default.dol file, and would be another reason to believe that the DLLS.bin file is infact Dinosaur Planet's main program / compiled code.
Another find (just for the sake of comparing ).
Here are the credits found in the GAMETEXT.bin file (which only seems to have Dinosaur Planet strings, which also confirms my theory on the accuracy of the "out" file):
SOFTWARE DIRECTOR.PHIL TOSSELL.SOFTWARE ENGINEERS.NIK PALMER.NICK BURTON.PHIL WOODS.RAYMOND KERR.BRENDAN GUNN.ANDREW INNES.RICHARD GALE.ROB HARRISON.ART DIRECTORS.JOHNNI CHRISTENSEN.KEITH RABBETTE.KEVIN BAYLISS.3D ARTISTS.DEAN SMITH.FEARGAL PLANT.GAVIN FLINT.STUART HOGTON.MATTHEW GROVER.ANIMATION.NICK SOUTHAM.MICHAEL CAWOOD.DAVID McDERMOTT.AISLING DUDDY.GAME DESIGN.STEVE BRAND.SHAUN READ.MUSIC.DAVID WISE.SOUND FX.MARTIN PENNY.SPEECH ENGINEER.BEN CULLUM.EXECUTIVE PRODUCERS.JOEL HOCHBERG.CHRIS STAMPER.TIM STAMPER.GAME DIRECTOR.LEE SCHUNEMAN
And what did we find at 0x00303B10 of default.dol? A string referencing to a version from 1998 with the name L. Schuneman on it.
Some more interesting DLLS.bin stuff:
0x002B9391 "Chim Freed" is either a character, or a debug string for freeing Chim (not heard of that character before)
0x002B4001 "HELLO I AM THE PUSHCART" (WTF XD)
0x002B0405 "FInished Is SEt for Some Reason" (they had A LOT of pretty useless debug stuff... geez.)
In fact. After having a look at all the files that are available from the E3 demo and that match up with the "out" file, it seems to me... that it's all... pretty, complete. I mean, everything's there! Models, textures, voice clips, sound FX, instruments, midi data, CODE, levels, animations, fonts, game strings, EVERYTHING! This may sound ridiculous, but we might be able to compile Dinosaur Planet. I have a few concerns though. I heard in a (few) Dinosaur Planet "tribute" videos that the game would have been shipped on a 512 MB cartridge (other sources say 128 MB so it might make more sense). But... all of the files that are located here come to a total of 52 MB. So... yeah. It could be because everything is in a BIN format(!?) and seems to be compressed using LZIP and/or RZIP, however, I can not get them decompressed. Someone needs to hit up Phil Tossell and ask him nicely if he would please tell us how to decompress them (or maybe I will). But maybe, that's not even necessary. Remember how this development team also worked on Diddy Kong Racing? And remember there were files found FROM Diddy Kong Racing, even on the SFA RETAIL disc? What if... Diddy Kong Racing uses the same file formats as Dinosaur Planet? We could then either get some references from it, [stupid idea]or swap out the files with Dinosaur Planet's ones[/stupid idea]. It might all be impossible what I'm saying here, but there's definitely some potential here. And I just. want. to. PLAY. IT.
MAGIC NUMBER FOR ?COMPRESSION?
So, I am currently trying to get some usable data out of some of the bin files that are compressed, probably using ZLIB or, judging from default.dol, RZIP. I accidentally opened the MODELS.bin file in Sublime Text, and the first 2 words read "face feed". I googled it, and it turned out to be a magic number for Mach-O, and it seems to match with what I read on Wikipedia, as after the words face feed there seems to be header data. When you open the MAPS.bin file, it seems to be either compressed and encrypted, or just compressed. But you can definetely see a pattern in the file's encrypted data. But, going back to the "face feed" thingy, on Wikipedia it says: 0xCEFAEDFE ("face feed") is used by Mach-O to identify flat (single architecture) object files. In little endian this reads FEEDFACE, "Feed Face". On another page: "Feed face", Seen in PowerPC Mach-O binaries on Apple Inc.'s Mac OS X platform. Would make sense, as the GameCube runs on a PowerPC, so developing a game for it on a PowerPC Mac would make sense (though there are references to Windows in default.dol !!), especially debugging / emulating the game (note that Mac Emulator string from the default.dol file). Binaries match as well, they're bin files with what seems to be a correct header, juding from other Mach-O files. But... I don't think they're supposed to be executable. There's a possibility though that the devs used this file format but not for what it's supposed to be used for? Instead of using it for execution they used it for archiving... The BLOCKS.bin does not have "face feed" in its header.
That's all for now! I will post more if I find more.
EDIT: The "fish has reached the end of it life" string does NOT exist in the retail default.dol!! So only in the E3 default.dol, and in the DLLS.bin file, just like the sequence between Krystal, Randorn and Sabre, exists in both DLLS.bin and E3 default.dol, but not in the retail default.dol. Seems to even more confirm my theory. |