The Shooting Range stage in Wii Play bears the identifier "RPDucScene".
The scene's common archive contains the following ExcelBin (ver. 1) files:
DucBalloonParam.binDucCanParam.binDucCircleMatoParam.binDucClayParam.binDucDuckParam.binDucUfoParam.binThis file contains parameters for the balloon objects. The file begins with a set of parameters common across all balloons, and is followed by parameters unique to each balloon group.
Lastly, the file contains parameters for the balloon strings.
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | velocityDecay | Scale repeatedly applied to all balloons' velocity. |
| 0x0004 | uint32 | value | Point value of all balloons. |
| 0x0008 | float | baseSize | Base size of all balloons. |
| 0x000C | float | Some string rope physics constant. | |
| 0x0010 | float | Some string rope physics constant. | |
| 0x0014 | float | stringCullLen | Estimated length of the string for culling balloons which leave the top of the screen. |
| 0x0018 | float | Some string rope physics constant. | |
| 0x001C | float | stringOffset | Y offset of the string (relative to the center of the balloon). |
| 0x0020 | uint32 | tiltSpeed | Tilt speed of the balloons. Binary angle (0-65535). |
| 0x0024 | float | tiltAngle | Tilt angle of the balloons (in degrees). |
| 0x0028 | N/A | Total size | N/A |
C++ data structure:
struct RPDucBalloonCommonParam {
/* 0x00 */ f32 velocityDecay;
/* 0x04 */ u32 value;
/* 0x08 */ f32 baseSize;
/* 0x0C */ f32 _0C;
/* 0x10 */ f32 _10;
/* 0x14 */ f32 stringCullLen;
/* 0x18 */ f32 _18;
/* 0x1C */ f32 stringOffset;
/* 0x20 */ u32 tiltSpeed;
/* 0x24 */ f32 tiltAngle;
};
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | hitboxSize | Size of the balloons' hitboxes. Calculated as (hitboxSize / baseSize). |
| 0x0004 | float | velocityY | Vertical velocity of the balloons. |
| 0x0008 | float | velocityX | Horizontal velocity of the balloons. |
| 0x000C | float | modelSize | Visual size of the balloons. Calculated as (modelSize / baseSize). |
| 0x0010 | N/A | Total size | N/A |
C++ data structure:
struct RPDucBalloonGroupParam {
/* 0x00 */ f32 hitboxSize;
/* 0x04 */ f32 velocityY;
/* 0x08 */ f32 velocityX;
/* 0x0C */ f32 modelSize;
};
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | segment1Len | Length of the first string segment. |
| 0x0004 | float | segment2Len | Length of the second string segment. |
| 0x0008 | float | segment3Len | Length of the third string segment. |
| 0x000C | float | segment4Len | Length of the fourth string segment. |
| 0x0010 | float | Purpose unknown. | |
| 0x0014 | N/A | Total size | N/A |
C++ data structure:
struct RPDucBalloonStringParam {
/* 0x00 */ f32 segment1Len;
/* 0x04 */ f32 segment2Len;
/* 0x08 */ f32 segment3Len;
/* 0x0C */ f32 segment4Len;
/* 0x10 */ f32 _10;
};
C++ data structure:
struct RPDucBalloonParam {
/* 0x00 */ RPDucBalloonCommonParam commonParam;
/* 0x28 */ RPDucBalloonGroupParam groupParam[8];
/* 0xA8 */ RPDucBalloonStringParam stringParam;
}; /* sizeof(RPDucBalloonParam) == 0xBC */
The file is assumed to contain exactly eight balloon groups, and therefore cannot be resized.
This file contains
| Offset | Type | Name | Notes |
|---|---|---|---|
| dummy | N/A | Total size | N/A |
C++ data structure:
struct RPDucCanParam {
};
This file contains parameters for the circular target objects. The file begins with a set of parameters common across all targets, and is followed by parameters unique to each target group.
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | Purpose unknown. | |
| 0x0004 | float | Purpose unknown. | |
| 0x0008 | float | Purpose unknown. | |
| 0x000C | float | Purpose unknown. | |
| 0x0010 | float | Purpose unknown. | |
| 0x0014 | uint32 | bonusValue1 | Point value of the bonus targets in 1P mode. |
| 0x0018 | uint32 | bonusValue2 | Point value of the bonus targets in 2P mode. |
| 0x001C | uint32 | regularValue1 | Point value of the regular targets in 1P mode. |
| 0x0020 | uint32 | regularValue2 | Point value of the regular targets in 2P mode. |
| 0x0024 | uint32 | faceGoodValue1 | Point value of the good face targets in 1P mode. |
| 0x0028 | uint32 | faceGoodValue2 | Point value of the good face targets in 2P mode. |
| 0x002C | uint32 | faceBadValue1 | Point value of the bad face targets in 1P mode. |
| 0x0030 | uint32 | faceBadValue2 | Point value of the bad face targets in 2P mode. |
| 0x0034 | float | baseSize | Base size of all targets. |
| 0x0038 | float | posXScaleWide | Scale applied to target X-coordinates (16:9). |
| 0x003C | float | posYScaleWide | Scale applied to target Y-coordinates (16:9). |
| 0x0040 | float | posZWide | Z-coordinate of all targets (16:9). |
| 0x0044 | float | posXBaseWide | Base X-coordinate of all targets (16:9). |
| 0x0048 | float | posYBaseWide | Base Y-coordinate of all targets (16:9). |
| 0x004C | float | posXScaleStd | Scale applied to target X-coordinates (4:3). |
| 0x0050 | float | posYScaleStd | Scale applied to target Y-coordinates (4:3). |
| 0x0054 | float | posZStd | Z-coordinate of all targets (4:3). |
| 0x0058 | float | posXBaseStd | Base X-coordinate of all targets (4:3). |
| 0x005C | float | posYBaseStd | Base Y-coordinate of all targets (4:3). |
| 0x0060 | N/A | Total size | N/A |
C++ data structure:
struct RPDucCircleMatoCommonParam {
/* 0x00 */ f32 _00;
/* 0x04 */ f32 _04;
/* 0x08 */ f32 _08;
/* 0x0C */ f32 _0C;
/* 0x10 */ f32 _10;
/* 0x14 */ u32 bonusValue1;
/* 0x18 */ u32 bonusValue2;
/* 0x1C */ u32 regularValue1;
/* 0x20 */ u32 regularValue2;
/* 0x24 */ u32 faceGoodValue1;
/* 0x28 */ u32 faceGoodValue2;
/* 0x2C */ u32 faceBadValue1;
/* 0x30 */ u32 faceBadValue2;
/* 0x34 */ f32 baseSize;
/* 0x38 */ f32 posXScaleWide;
/* 0x3C */ f32 posYScaleWide;
/* 0x40 */ f32 posZWide;
/* 0x44 */ f32 posXBaseWide;
/* 0x48 */ f32 posYBaseWide;
/* 0x4C */ f32 posXScaleStd;
/* 0x50 */ f32 posYScaleStd;
/* 0x54 */ f32 posZStd;
/* 0x58 */ f32 posXBaseStd;
/* 0x5C */ f32 posYBaseStd;
};
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | hitboxSizeWide | Size of the targets' hitboxes (16:9). Calculated as (hitboxSizeWide / baseSize). |
| 0x0004 | float | hitboxSizeStd | Size of the targets' hitboxes (4:3). Calculated as (hitboxSizeStd / baseSize). |
| 0x0008 | float | modelSizeWide | Visual size of the targets (16:9). Calculated as (modelSizeWide / baseSize). |
| 0x000C | float | modelSizeStd | Visual size of the targets (4:3). Calculated as (modelSizeStd / baseSize). |
| 0x0010 | uint32 | spinTime | Duration of spinning in/out animation (in frames). |
| 0x0014 | uint32 | waitTime1 | Duration of waiting period in 1P mode (in frames). |
| 0x0018 | uint32 | waitTime2 | Duration of waiting period in 2P mode (in frames). |
| 0x001C | N/A | Total size | N/A |
C++ data structure:
struct RPDucCircleMatoGroupParam {
/* 0x00 */ f32 hitboxSizeWide;
/* 0x04 */ f32 hitboxSizeStd;
/* 0x08 */ f32 modelSizeWide;
/* 0x0C */ f32 modelSizeStd;
/* 0x10 */ u32 spinTime;
/* 0x14 */ u32 waitTime1;
/* 0x18 */ u32 waitTime2;
};
C++ data structure:
struct RPDucCircleMatoParam {
/* 0x00 */ RPDucCircleMatoCommonParam commonParam;
/* 0x60 */ RPDucCircleMatoGroupParam groupParam[8];
}; /* sizeof(RPDucCircleMatoParam) == 0x140 */
The file is assumed to contain exactly eight target groups, and therefore cannot be resized.
This file contains
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | velocityDecay | Scale repeatedly applied to all clays' velocity. |
| 0x0004 | float | maxSpinZ | Z-coordinate where clays reach their maximum spin rate. |
| 0x0008 | float | spinUpZ | Z-coordinate where clays begin to spin faster. |
| 0x000C | float | earlyZ | Minimum Z-coordinate where clays can be shot down early. |
| 0x0010 | uint32 | earlyValue | Point value of clays shot down early. |
| 0x0014 | uint32 | lateValue | Point value of clays shot down late. |
| 0x0018 | float | baseSize | Base size of all clays. |
| 0x001C | float | rotateDecay | Scale repeatedly applied to all clays' angular velocity. |
| 0x0020 | float | rotateVelocity | Initial angular velocity of all clays. |
| 0x0024 | N/A | Total size | N/A |
C++ data structure:
struct RPDucClayCommonParam {
/* 0x00 */ f32 velocityDecay;
/* 0x04 */ f32 maxSpinZ;
/* 0x08 */ f32 spinUpZ;
/* 0x0C */ f32 earlyZ;
/* 0x10 */ u32 earlyValue;
/* 0x14 */ u32 lateValue;
/* 0x18 */ f32 baseSize;
/* 0x1C */ f32 rotateDecay;
/* 0x20 */ f32 rotateVelocity;
};
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0000 | float | wide | |
| 0x0004 | float | std | |
| 0x0008 | float | ||
| 0x000C | float | v1y | |
| 0x0010 | float | v1z | |
| 0x0014 | float | ||
| 0x0018 | float | ||
| 0x001C | float | ||
| 0x0020 | float | ||
| 0x0024 | float | ||
| 0x0028 | float | maxDropVel | Maximum reachable velocity when the clay is falling down. |
| 0x002C | float | dropAccel | Acceleration when the clay is falling down. |
| 0x0030 | float | modelSize | Visual size of the clay. |
| 0x0034 | float | velocity | Launch velocity of the clay. |
| 0x0038 | N/A | Total size | N/A |
C++ data structure:
struct RPDucClayGroupParam {
};
C++ data structure:
struct RPDucClayParam {
/* 0x00 */ RPDucClayCommonParam commonParam;
/* 0x24 */ RPDucClayGroupParam groupParam[8];
}; /* sizeof(RPDucClayParam) == 0x1E4 */
The file is assumed to contain exactly eight clay groups, and therefore cannot be resized.
This file contains
| Offset | Type | Name | Notes |
|---|---|---|---|
| dummy | N/A | Total size | N/A |
C++ data structure:
struct RPDucDuckParam {
};
This file contains
| Offset | Type | Name | Notes |
|---|---|---|---|
| dummy | N/A | Total size | N/A |
C++ data structure:
struct RPDucUfoParam {
};