Minty Ramblings

From Pikmin Technical Knowledge Base
Revision as of 17:09, 9 January 2019 by Minty Meeo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The ramblings and ravings of a madman

Cutscenes[edit]

Despite CIN files requiring an Animation Manager to be loaded alongside an Animation Bundle, they are not actually used.

Cutscenes will always load the first DCA or DCK file in an Animation Bundle. They use the File Content Indicator to tell what type of animation is being loaded. An improper File Content Indicator results in a crash. This is the only observed usage of the File Content Indicator.

Models can load without animations and animation managers in a CIN file.


DSK files are pretty easy to understand

There are "ANM" sections, and "TABLE" sections

"ANM" sections contain really finnicky float declarations that often don't cooperate when added to or removed from.

"TABLE" sections point specific parameters to indexes of the ANM section

  • The first value has an unknown purpose
  • The second value is the index value
  • The third value has an unknown purpose
cam_pos_y	4	1	0

In the <SCENE_KEY_ANM_INFO> section, I've only observed the numcameras argument actually functioning at all. Removing everything else is fine.

In the <KEY_CAMERA_TABLE> section, cam_pos values are the position of the camera in a scene, and the cam_lat values are the point in space that the camera is focusing on.

pb_wait1.dsk
<SCENE_KEY_ANM_INFO>
{
	version	1.00
	filename	d:/data/デモシーン/demo9/p_wait1
	toolname	soft3D
	source	'SOFTIMAGE3D_SDKv1.93.0 / 3Dv3.93.0'
	date	2001/08/28
	time	13:52:00
	host	MAKITAS-ZPRO
	magnify	1.000000
	numframes	210
	numcameras	1
	numAmbLights	0
	numDifLights	0
	numfogs		0
	numLayerFogs	0
	playmode	loop
	si_key		nouse
}

<KEY_CAMERA_ANM>
{
	size	42
	float	0.020000 0.000000 32.000000 -1.431141 181.000000 22.114449 -0.329876 209.000000
	float	22.000000 0.000000 210.000000 32.000000 0.000000 0.000000 170.464081 -9.969177
	float	170.000000 102.745132 -3.994102 209.000000 100.807358 0.000000 210.000000 170.464081
	float	0.000000 0.000000 8.000000 -1.660000 0.000000 21.340012 0.742654 161.000000
	float	26.721846 0.592940 209.000000 27.139997 0.012388 210.000000 27.139997 0.000000
	float	0.100000 32768.000000 
}


<KEY_CAMERA_TABLE>
{
	index	0
	name	cam_int1
	cam_pos_x	1	0	0
	cam_pos_y	4	1	0
	cam_pos_z	4	13	0
	cam_lat_x	1	25	0
	cam_lat_y	1	26	0
	cam_lat_z	1	27	0
	cam_twist	1	25	0
	cam_fovy	4	28	0
	cam_near	1	40	0
	cam_far		1	41	0
}

<EX_SI_KEY_CAMERA_ANM>
{
	size	0
}


<EX_SI_KEY_CAMERA_TABLE>
{
	index	0
	name	cam_int1
	si_cam_aspect_ratio	1.333300
	si_cam_auto_fovy	false

	si_cam_dof_type		off
}

Cutscene Translation Index[edit]

There's a table inside the game somewhere that controls how cutscenes are loaded based on a few factors. The debugger, specifically JPN v1.01, details it a bunch. Notable examples include how every landing cutscene has the same "cutscene ID", but the Cutscene Translation Index takes that ID and the current stage ID, then loads a files form a specific demo folder in the cinemas folder.

record.gst and test.card[edit]

I have no bloody clue what this thing does. It is loaded from the filesystem every time you land in a stage. I think it has something to do with cutscenes, but it's beyond me. I've tried deleting it. I've tried filling it with garbage data. Nothing. It does bloody nothing every time. WHAT ARE YOU??? -Note by Ambrosia- The first 6 bytes spell out pikmin. If you jump 26 bytes ahead it then says `A game by EAD (c) 2001`

Everything I just said for record.gst mostly applies to test.card. The only difference being I've literally never seen test.card used. I can't find any strings to load it in the DOL, so it's probably unused. The weird thing is, I thought it would look similar to the savedata for Pikmin 1. However, I've looked at it and they're just about nothing alike. Could this be an old version of the save data?? :thinking:

Parameters[edit]

The function of parameters is to replace default values. As such, there are default values stored somewhere in the primordial soup of values stored in the DOL. It's much easier to find them in RAM during gameplay. If a parameter file is loaded, it's filepath is found near its values in RAM. If not, the filepath is gone. :thinking:

prefs.bin and wave.bin are more than likely unused parameter files.

I think prefs.bin might be an early version of either key.bin or aiconst.bin

wave.bin I have no clue.

Courses vs Stages[edit]

A COURSE is a 3D model with routes and collision.

A STAGE is a combination of a course, GEN Files, and a Stage INI file which contains dynamic GEN definitions, lighting, and navi start positions.

STAGES are defined in the stages.ini file in the stages folder.


PCR files[edit]

Ask the Luigi's Mansion dudes I dunno about these yet. Apparently they're parameters for particle effects.


H4M Files[edit]

Hudson Soft made this. Frick you Hudson Soft.

"Yet Another Gamecube Documentation" has this to say about it

"a proprietary Movie Format found on some Gamecube Game DVDs. Probably related to the HVQ (Hirarchical Vector Quantization) format developed by Hudson. "

I looked at H4M files once and regretted it. Here's my guess at the header

H4M Header
	0x10	Data	File Magic (HVQM4 1.3       )
	0x04	Int	?
	0x04	String	?
	0x04	Int	Video length in seconds
	0x04	Int	?
	0x04	Int	One less than Video Length?
</div>

There's a tool online that can apparently decode the audio of H4M files.

Cool Animations[edit]

All Pikmin and Olimar use the same animation bundle called bluModel.anm.anm

.H files[edit]

There are a few .H files left around the disc. All of them are leftovers from development. Half of them are plaintext BTI files, while the other half are enumerated bone joints for MOD files.

Finding things in RAM[edit]

If you ever need to find a file opened in RAM, just search for the filename. It's usually right next to the data. When parameter files are not opened to replace parameter values, the memory address with the parameters stays roughly the same, minus the string with the filepath. This is how I determined the DOL embedded parameter values.

Summary of DataDir folders[edit]

I found this old post of mine in the Hocotate Hacker chat history, and thought it'd be good to preserve it.

2d_data     Contains several unused image files.  TXE files are very rare.
archives    Contains Paired ARC+DIR Files archives.  It's best to disable them
bosses      Contains parameters, models, animations, and animation managers for every boss
camera      Contains three versions of the camera parameters.  camepara.bin is used.
cinemas     Contains resources used in in-game cutscenes, from models, to animations, to file pointers.
courses     Contains the 3D models for every area of the game.  Some testing maps, too.
effects     Contains particle effects, Onion stuff, and mysterious PCR files
ghost       Contains a file we don't understand, but the game frequently loads
intro       Contains Nintendo logo image and course name images
MovieData   Contains pre-rendered video in a format we can't really decompile.  Maybe someday.
objects     Contains models, animations, animation managers for miscellaneous objects.  Pellets, weeds, ship parts, etc.
parms       Contains general parameter files.  Largely understood and documented in The Spreadsheet
pikis       Contains models, animations, and animation managers for pikmin, olimar, and stages of maturity of pikmin.
savedata    Contains a file we don't understand.  Suspected to be unused.  Editing gives no results.
screen      Contains textures and layouts for 2D menus.  Available in many languages.
Shapes      Contains miscellaneous 3D models like the cursor and some stuff used in debugger
SndData     Contains both sequenced and streamed audio.
Stages      Contains GEN files, lighting files, stage resource pointers, and the all important "stages.ini"
tekikeys    Contains animation managers for all enemies
tekipara    Contains parameters for all enemies.  Mostly understood and documented in The Spreadsheet
tekis       Contains animations and models for all enemies
testdata    Contains some leftover files.  Early models for a few ship parts/enemies, along with a mysterious "1.act" file.

Pikmin Entities in Pikmin 2[edit]

When located in RAM, the entities for the Pikmin are 0x2C8 bytes long. You can find stuff like the Pikmin color, happa level, and lots of pointers presumably to stuff like the model, animations, n' stuff.