kiwis.dev

Overview

The Find Mii stage in Wii Play bears the identifier "RPWlyScene".

ExcelBin

The scene's common archive contains the following ExcelBin (ver. 1) files:

wanted_1p_leveltable.bin

This file contains configurations for each Find Mii level in 1-player mode. Each level consists of the following structure:

Offset Type Name Notes
0x0000 uint32 miiNum The number of Miis to place around the level.
0x0004 uint32 behavior How the Miis will act. See the RPWlyBehavior enum to see a list of the expected values.
0x0008 uint32 goal The goal/objective of the level. See the RPWlyGoal enum to see a list of the expected values.
0x000C uint32 field The field model to use for the level. See the RPWlyField enum to see a list of the expected values.
0x0010 float zoomMin The minimum zoom Z-coordinate for the level. The zoom control is mapped from a [0, 1] range to the specified minimum/maximum values.

If both zoom values are the same, zoom is disabled.
0x0014 float zoomMax The maximum zoom Z-coordinate for the level. The zoom control is mapped from a [0, 1] range to the specified minimum/maximum values.

If both zoom values are the same, zoom is disabled.
0x0018 float baseZ The base Z-coordinate at which the Miis will spawn.
0x001C float width The width (X-axis) of the level boundaries. Behaviors that cause Miis to move will snap to these boundaries.

This value is automatically scaled for widescreen displays.
0x0020 float height The height (Z-axis) of the level boundaries. Behaviors that cause Miis to move will snap to these boundaries.

This value is locked to 6.25 on the Tennis field.
0x0024 float darkZ The Z-coordinate at which the darkness plane for spotlight levels will be placed.

If zero, the spotlight is disabled.
0x0028 float hoverScale The scale to apply to the Mii head currently being hovered over.
0x002C Vector3f spotLightScale The scale to apply to the ground spotlight.
0x0038 Vector2f spotLightOffset The offset from the cursor to apply to the ground spotlight.
0x0040 N/A Total size N/A

C++ data structure:

struct RPWlyLevelInfo {
    /* 0x00 */ u32 miiNum;
    /* 0x04 */ u32 behavior;
    /* 0x08 */ u32 goal;
    /* 0x0C */ u32 field;
    /* 0x10 */ f32 zoomMin;
    /* 0x14 */ f32 zoomMax;
    /* 0x18 */ f32 baseZ;
    /* 0x1C */ f32 width;
    /* 0x20 */ f32 height;
    /* 0x24 */ f32 darkZ;
    /* 0x28 */ f32 hoverScale;
    /* 0x2C */ EGG::Vector3f spotLightScale;
    /* 0x38 */ EGG::Vector2f spotLightOffset;
};

The number of levels is calculated dynamically by dividing the file size by the size of one RPWlyLevelInfo, so in theory it may be extended well beyond the original size.

wanted_2p_leveltable.bin

This file contains configurations for each Find Mii level in 2-player mode. This file uses the same structure as the 1-player variant.

RPWlyBehavior

Value Name Notes
0x0000 RP_WLY_BHV_IDLE All Miis stand idle.
0x0001 RP_WLY_BHV_LOOK All Miis randomly turn their heads to look around.
0x0002 RP_WLY_BHV_WALK All Miis walk towards the camera.
0x0003 RP_WLY_BHV_RNDLOOK All Miis spawn in random positions, and randomly turn their heads to look around.
0x0004 RP_WLY_BHV_RNDWALK All Miis spawn in random positions, and walk in random directions.
0x0005 RP_WLY_BHV_SPACE All Miis float in the air.
0x0006 RP_WLY_BHV_GROUPWALK All Miis walk together as a group, with some Mii(s) taking steps in a different order.
0x0007 RP_WLY_BHV_GROUPJOG All Miis jog together as a group, with some Mii(s) taking steps in a different order.

C++ enumeration:

enum RPWlyBehavior {
    /* 0x0000 */ RP_WLY_BHV_IDLE,
    /* 0x0001 */ RP_WLY_BHV_LOOK,
    /* 0x0002 */ RP_WLY_BHV_WALK,
    /* 0x0003 */ RP_WLY_BHV_RNDLOOK,
    /* 0x0004 */ RP_WLY_BHV_RNDWALK,
    /* 0x0005 */ RP_WLY_BHV_SPACE,
    /* 0x0006 */ RP_WLY_BHV_GROUPWALK,
    /* 0x0007 */ RP_WLY_BHV_GROUPJOG,
    /* 0x0008 */ RP_WLY_BHV_MAX
};

RPWlyGoal

Value Name Notes
0x0000 RP_WLY_GOAL_THISMII_NODB The player must find a randomly chosen Mii.

This value replaces instances of RP_WLY_GOAL_THISMII at runtime to signal that the official DB (Mii Plaza) is empty, causing the target Mii to instead be created from random parts.
0x0001 RP_WLY_GOAL_ALIKE_2 The player must find two look-alikes.
0x0002 RP_WLY_GOAL_ALIKE_3 The player must find three look-alikes.
0x0003 RP_WLY_GOAL_ALIKE_4 The player must find four look-alikes.
0x0004 RP_WLY_GOAL_ALIKE_5 The player must find five look-alikes.
0x0005 RP_WLY_GOAL_ODDFACE The player must find the odd Mii out, who will face the wrong direction.

This goal is unused and has a blank text entry in the BMG.
0x0006 RP_WLY_GOAL_PICKFAVORITE The player must pick their favorite Mii.
0x0007 RP_WLY_GOAL_FINDFAVORITE The player must find their previously chosen favorite Mii.
0x0008 RP_WLY_GOAL_THISMII The player must find a randomly chosen Mii.
0x0009 RP_WLY_GOAL_ODDLOOK_1 The player must find the odd Mii out, who will turn to look in the wrong direction.
0x000A RP_WLY_GOAL_ODDLOOK_2 The player must find the two odd Miis out, who will turn to look in the wrong direction.
0x000B RP_WLY_GOAL_ODDLOOK_3 The player must find the three odd Miis out, who will turn to look in the wrong direction.
0x000C RP_WLY_GOAL_FASTEST_EASY The player must find the fastest Mii (slow speed).
0x000D RP_WLY_GOAL_FASTEST_HARD The player must find the fastest Mii (high speed).
0x000E RP_WLY_GOAL_SLEEPYHEAD_1 The player must find the sleeping Mii.
0x000F RP_WLY_GOAL_SLEEPYHEAD_2 The player must find the two sleeping Miis.
0x0010 RP_WLY_GOAL_SLEEPYHEAD_3 The player must find the three sleeping Miis.
0x0011 RP_WLY_GOAL_INSOMNIAC_1 The player must find the awake Mii.
0x0012 RP_WLY_GOAL_INSOMNIAC_2 The player must find the two awake Miis.
0x0013 RP_WLY_GOAL_INSOMNIAC_3 The player must find the three awake Miis.
0x0014 RP_WLY_GOAL_ODDWALK The player must find the odd Mii out, who will take steps in the wrong order.
0x0015 RP_WLY_GOAL_YOURMII The player must find their own Mii.
0x0016 RP_WLY_GOAL_YOURMIIS Both players must find their own Miis.

C++ enumeration:

enum RPWlyGoal {
    /* 0x0000 */ RP_WLY_GOAL_THISMII_NODB,
    /* 0x0001 */ RP_WLY_GOAL_ALIKE_2,
    /* 0x0002 */ RP_WLY_GOAL_ALIKE_3,
    /* 0x0003 */ RP_WLY_GOAL_ALIKE_4,
    /* 0x0004 */ RP_WLY_GOAL_ALIKE_5,
    /* 0x0005 */ RP_WLY_GOAL_ODDFACE,
    /* 0x0006 */ RP_WLY_GOAL_PICKFAVORITE,
    /* 0x0007 */ RP_WLY_GOAL_FINDFAVORITE,
    /* 0x0008 */ RP_WLY_GOAL_THISMII,
    /* 0x0009 */ RP_WLY_GOAL_ODDLOOK_1,
    /* 0x000A */ RP_WLY_GOAL_ODDLOOK_2,
    /* 0x000B */ RP_WLY_GOAL_ODDLOOK_3,
    /* 0x000C */ RP_WLY_GOAL_FASTEST_EASY,
    /* 0x000D */ RP_WLY_GOAL_FASTEST_HARD,
    /* 0x000E */ RP_WLY_GOAL_SLEEPYHEAD_1,
    /* 0x000F */ RP_WLY_GOAL_SLEEPYHEAD_2,
    /* 0x0010 */ RP_WLY_GOAL_SLEEPYHEAD_3,
    /* 0x0011 */ RP_WLY_GOAL_INSOMNIAC_1,
    /* 0x0012 */ RP_WLY_GOAL_INSOMNIAC_2,
    /* 0x0013 */ RP_WLY_GOAL_INSOMNIAC_3,
    /* 0x0014 */ RP_WLY_GOAL_ODDWALK,
    /* 0x0015 */ RP_WLY_GOAL_YOURMII,
    /* 0x0016 */ RP_WLY_GOAL_YOURMIIS,
    /* 0x0017 */ RP_WLY_GOAL_MAX
};

RPWlyField

Value Name Notes
0x0000 RP_WLY_FLD_CROSSROAD wtd_field01 (crossroads)
0x0001 RP_WLY_FLD_WATER wtd_field02 (water)
0x0002 RP_WLY_FLD_SPACE wtd_field03 (space)
0x0003 RP_WLY_FLD_TENNIS wtd_field04 (tennis court)
0x0004 RP_WLY_FLD_ESCALATOR wtd_field05 (escalators)

C++ enumeration:

enum RPWlyField {
    /* 0x0000 */ RP_WLY_FLD_CROSSROAD,
    /* 0x0001 */ RP_WLY_FLD_WATER,
    /* 0x0002 */ RP_WLY_FLD_SPACE,
    /* 0x0003 */ RP_WLY_FLD_TENNIS,
    /* 0x0004 */ RP_WLY_FLD_ESCALATOR,
    /* 0x0005 */ RP_WLY_FLD_MAX
};