Minty Ramblings

From Pikmin Technical Knowledge Base
Revision as of 04:45, 11 November 2018 by Minty Meeo (talk | contribs)
Jump to navigation Jump to search

The ramblings and ravings of a madman

Cutscenes

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 onlt observed the numcameras argument actually functioning at all. Removing everything else is fine.

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

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

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

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

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

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


H4M Files

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

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

.H files

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

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.