Popover Menu get started
f.a.q discord
Menu
supported games setup guides f.a.q. generate game host game user content discord
Kirby & The Amazing Mirror Guide

# Kirby & The Amazing Mirror

Where is the options page?

What does randomization do to this game?

What items and locations get randomized?

Locations in which items can be found:

Common Item/Location Options

KirbyAM supports the standard Archipelago common options for item and location control:

Use exact item/location names from this world (or the item groups listed above) when configuring these fields.

What other changes are made to the game?

Using Archipelago's built-in random choice

configured_area_boss and starting_kirby_color are normal Archipelago Choice options. You can replace the entire generated weight mapping for either option with the scalar value random:

configured_area_boss: random
starting_kirby_color: random

Archipelago resolves each random value to one concrete choice during option parsing. The generated weighted template lists only concrete choices, so random is documented in comments rather than appearing as another weighted sub-option.

Custom health

minimum_health sets Kirby's starting HP capacity and maximum_health sets the capacity after every Vitality Counter. Both accept whole numbers from 1 to 10. The defaults are 6 and 10. Set both values together, for example:

minimum_health: 8
maximum_health: 10

This starts with 8 HP and places two unique Vitality Counters, each adding 1 HP. Equal values give a fixed capacity with no counters. The maximum must be at least the minimum and at most 9 HP higher: there are nine unique counters. Unsupported pairs fail generation with an explanation; they are not silently changed. If using weighted/random values, every possible pair must satisfy these constraints.

Minimum Health is a starting capacity, not a damage floor. Kirby can still lose HP and die. Minimum/Maximum Health are now the only public health controls. The old one_hit_mode selector is hidden from templates and option groups.

Older YAML files still work: exclude_vitality_counters (or 1) converts to minimum_health: 1 / maximum_health: 1; include_vitality_counters (or 2) converts to 1 / 5. Generation prints a migration warning and preserves the old preset's precedence if custom bounds are also present. Replace that legacy key with the displayed bounds. off leaves the custom bounds unchanged. New seeds store only the resolved min/max values; existing seeds retain their legacy client behavior. No item IDs or native save fields change.

Starting at 1 HP excludes Health Down Trap from the pool and suppresses its native effect. Fixed 1/1 health also excludes healing filler. Other health ranges retain their normal filler/trap policy. Newly generated ROMs embed the resolved bounds for native health initialization; the connected client still reconciles AP ownership after the tutorial. Fresh emulator acceptance remains separate from generation and host-function tests.

What does another world's item look like in Kirby & The Amazing Mirror?

When you find an item that is not your own, you will be able to see what it was and who it was sent to in both Bizhawk and the Archipelago Bizhawk client. The sprite for the item will still appear, but you will need to receive it via Archipelago before it's usable. When collecting a mirror shard check, the cutscene will still play as if you've received the mirror shard, however it will not be given until you receive it properly via Archipelago.

If an item sends to your own slot, BizHawk shows one local confirmation line (You found your <item>.) instead of separate send and receive popups.

When the player receives an item, what happens?

You will not see an indicator in the game, instead you'll see you received an item from the client window.

Trackers

Currently a tracker is not available. Goal logic depends on the selected mode: either defeat Dark Mind, defeat any one area boss in defeat_any_area_boss mode, or defeat the selected configured_area_boss in defeat_area_boss mode.

# Can I play offline?

Yes, the client and connector are only necessary for sending and receiving items. If you're playing a solo game, you don't need to play online unless you want the rest of Archipelago's functionality (like hints). If you're playing a multiworld game, the client will sync your game with the server the next time you connect.

Acknowledgements

[jiangzhengwenjz](https://github.com/jiangzhengwenjz) and other contributors — creators of the [Kirby & The Amazing Mirror disassembly](https://github.com/jiangzhengwenjz/katam), which was instrumental in understanding ROM internals for this integration.

Starting ability unlocks

Beam, Burning, Cutter, Mini, Stone and Wheel are a fixed starting set. New seeds precollect their AP unlock items, so they appear in starting inventory, received history and trackers. An unlock grants permission to acquire the ability through normal gameplay; it does not equip an ability. These six remain usable before connecting to the server or receiving mailbox deliveries.

This fixed set is precollected with ability_gating both on and off. When gating is off, all abilities remain usable and no ability unlocks enter the shuffled pool. With gating on, the other unlocks retain their existing pool and gate rules. The six starting items never consume location slots.

If start_inventory explicitly includes one of these six, its requested positive count is retained and no automatic copy is added. Counts above one are redundant ownership grants and never equip or stack an effect. Other explicit starting items retain their usual behavior. There is no new starting-ability selection option.

Use a matching updated APWorld/client for new seeds. Existing seeds retain their original inventory and gate policy; the client does not insert starting packets into old histories. Reconnect/reset recovery rebuilds ownership from server history, while the native bootstrap keeps the fixed starting permissions available offline. The six useful items are tracked in CollectionState without adding traversal gates.

The unchanged native unlock handler and gate bootstrap are covered by host tests; these tests are not emulator save/load acceptance. Fresh live acceptance of this inventory representation remains pending.