Pikmin camera parameters

From Pikmin Technical Knowledge Base
Revision as of 20:04, 28 December 2019 by Patrick Anton (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

To do: There are some undiscovered parameters. Let's try to figure them out! See the Extra Information section for more details.

Located in /dataDir/camera/, there are three BIN files for camera parameters.

  • camepara.bin - Used in the final game.
  • _camepara.bin - Features a different set of [Far : Flat] parameters and a different value in the header[unsure]. It likely is a backup file left there by the developers while fine-tuning the camera.
  • 撮影camepara.bin - The camera settings used in the Creature Montage and many pre-release trailers. 撮影 translates to "shoothing" in regards to photography, likely referencing its role in recording gameplay.

Unlike many other parameter files, the camera parameter files do not feature labels preceding the values. Instead, the values are presented one after another. Note: because there are no labels to denote the positions of values, they will be henceforth referred to by their hexadecimal offset and/or purpose in the file.

Like many other parameter files, the values are IEEE-754 floating point decimals with a few 32-bit integers thrown in here and there.

Vocabulary

Toggled with the R trigger:

  • Near = The first zoom level, nearest in the vanilla game.
  • Mid = The second zoom level, middle in the vanilla game.
  • Far = The third zoom level, furthest in the vanilla game.

Toggled with the Z trigger:

  • Flat = The normal viewing angle.
  • Bird = The aerial viewing angle.

Other:

  • Plucking = The camera setting when Olimar is plucking Pikmin (this feature gets disabled after 100 plucks).

Table

In this table, camepara.bin is used as a baseline. The other, unused camera parameter files have values omitted if they are identical to the final file's values.

Offset Data Type Group Description camepara.bin _camepara.bin 撮影camepara.bin
0x00 u32[unsure] Header Data[unsure] 00000007 00000004 00000004
0x04 u32[unsure] Header Data[unsure] Camera Switch 00000000
0x08 IEEE-754 float [Near : Flat] Distance from leader 600.0 130.0
0x0C IEEE-754 float [Near : Flat] Angle above horizontal 20.0 10.0
0x10 IEEE-754 float [Near : Flat] FOV 10.0 30.0
0x14 IEEE-754 float [Near : Flat] Vertical offset 25.0 20.0
0x18 IEEE-754 float [Near : Flat] 1000.0
0x1C IEEE-754 float [Near : Flat] Motion blur 50.0
0x20 IEEE-754 float [Mid : Flat] Distance from leader 600.0 400.0
0x24 IEEE-754 float [Mid : Flat] Angle above horizontal 21.0 13.0
0x28 IEEE-754 float [Mid : Flat] FOV 23.0 30.0
0x2C IEEE-754 float [Mid : Flat] Verical offset 38.0 40.0
0x30 IEEE-754 float [Mid : Flat] 500.0
0x34 IEEE-754 float [Mid : Flat] Motion blur 95.0
0x38 IEEE-754 float [Far : Flat] Distance from leader 900.0 1200.0 800.0
0x3C IEEE-754 float [Far : Flat] Angle above horizontal 25.0 24.0 15.0
0x40 IEEE-754 float [Far : Flat] FOV 26.0 25.0 30.0
0x44 IEEE-754 float [Far : Flat] Vertical offset 33.0 100.0 70.0
0x48 IEEE-754 float [Far : Flat] 400.0 200.0 200.0
0x4C IEEE-754 float [Far : Flat] Motion blur 110.0
0x50 IEEE-754 float [Near : Bird] Distance from leader 900.0 150.0
0x54 IEEE-754 float [Near : Bird] Angle above horizontal 60.0 25.0
0x58 IEEE-754 float [Near : Bird] FOV 10.0 55.0
0x5C IEEE-754 float [Near : Bird] Vertical offset 40.0 45.0
0x60 IEEE-754 float [Near : Bird] 1000.0
0x64 IEEE-754 float [Near : Bird] Motion blur 50.0
0x68 IEEE-754 float [Mid : Bird] Distance from leader 900.0 200.0
0x6C IEEE-754 float [Mid : Bird] Angle above horizontal 60.0 35.0
0x70 IEEE-754 float [Mid : Bird] FOV 20.0 70.0
0x74 IEEE-754 float [Mid : Bird] Vertical offset 70.0 100.0
0x78 IEEE-754 float [Mid : Bird] 500.0
0x7C IEEE-754 float [Mid : Bird] Motion blur 95.0
0x80 IEEE-754 float [Far : Bird] Distance from leader 1200.0 250.0
0x84 IEEE-754 float [Far : Bird] Angle above horizontal 60.0 50.0
0x88 IEEE-754 float [Far : Bird] FOV 30.0 90.0
0x8C IEEE-754 float [Far : Bird] Vertical offset 100.0 200.0
0x90 IEEE-754 float [Far : Bird] 200.0
0x94 IEEE-754 float [Far : Bird] Motion blur 110.0
0x98 IEEE-754 float [Plucking] Distance from leader 600.0 130.0
0x9C IEEE-754 float [Plucking] Angle above horizontal 20.0 10.0
0xA0 IEEE-754 float [Plucking] FOV 10.0 30.0
0xA4 IEEE-754 float [Plucking] Vertical offset 25.0 20.0
0xA8 IEEE-754 float [Plucking] 1000.0
0xAC IEEE-754 float [Plucking] Motion blur 110.0
0xB0 IEEE-754 float Other Camera homing speed 0.15 0.45
0xB4 IEEE-754 float Other FOV change speed 0.15
0xB8 IEEE-754 float Other Rotation speed 1.0
0xBC IEEE-754 float Other Translation speed 2.0
0xC0 IEEE-754 float Other L camera center rate 0.3
0xC4 IEEE-754 float Other Automatic camera turn rate 0.6
0xC8 IEEE-754 float Other Camera zoom time 0.5
0xCC IEEE-754 float Other Rotation button threshold 0.1
0xD0 IEEE-754 float Other Camera reserved 0 0.1
0xD4 IEEE-754 float Other Camera reserved 1 0.9
0xD8 IEEE-754 float Other Ignoring Piki distance 0.0
0xDC IEEE-754 float Other Vibration distance 0.0
0xE0 IEEE-754 float Other Attention angle max speed 0.3927 N/A N/A

Extra information

By default on day 1 (the tutorial), the camera is set to [Near : Flat] before immediately switching and locking to [Plucking].

  • Though you were probably already aware, the camera usually defaults to [Mid : Flat] whenever one lands in a stage.

The fifth parameter in each camera setting grouping has produced observable effects. However, they only occur in the OpenGL / Dolphin System.

  • Setting [Mid : Flat] to an extremely large value (0x7F7FFFFF is the largest) and landing in any area causes a nlibgeometry: !normalize:zero:-1.#IND00 error to be thrown, crasing the application.
  • Setting [Mid : Flat] to 0x7A04B1E4, landing in the Forest of Hope, and moving at all causes a nlibgeometry: !normalize:zero:-1.#IND00 error to be thrown, crashing the application. This value is the largest this parameter can be set before the game crashes on its own from the same error.

Presumably, there are parameters for both pressing the L trigger all the way down and just partially (or holding the L trigger all the way down for a certain length of time). Figure those out.

For an unknown reason, the OpenGL / Dolphin System is able to function without any camera parameter files. The parameters it pulls out of seemingly nowhere are unlike any file available. It most closely resembles _camepara.bin, though that might be a coincidence.

  • To add to the mystery, I have in my notes that attempting to input data the engine determined "invalid" resulted in these parameters instead[unsure]

Parameter 0xE0 is only present in the final camera parameters file. It does not seem necessary for the function of the camera, so it could be vestigial or a mistake.[unsure]

There are no version differences for the camera parameters.

Credits: Minty_Meeo