On this page
  1. Related
  2. Games
  3. References
  4. Sources

Kinstone fusion pairs a piece Link carries with a character’s matching piece. In The Minish Cap, each fuser has its own percent chance to offer, rolled in the one call read when the Blade Brothers are set up, and some offers are drawn from a shared pool of 181.

Games

GameYearHowNote
The Legend of Zelda: The Minish Cap2004Chance offereach fuser offers with its own percent chance, rolled on each call
Every claim about this mechanic, by game (1)

References

  1. ^ abEach Kinstone fuser in The Minish Cap has a data entry whose second byte, which the decompilers call its stability, is the percent chance it offers a fusion: GetFusionToOffer returns no fusion when that byte is at most Random() % 100, none before Link has the Kinstone Bag, and none before the story's progress reaches the entry's first byte. The one call the atlas read is in the Blade Brothers' first action, which sets them up. An entry of 0xFF in a fuser's list stands for a shared fusion: from a random start among 18, the first not yet fused. In the US ROM's table, of the 119 fusers after entry 0, 77 have 100, 20 have 50, 21 have 30, and one has 60 (computed).Codezeldaret/tmc · “Legend of Zelda, The - The Minish Cap (USA)”revised
    How we know
    1235    fuserId = GetFuserId(entity);
    1236    fuserData = gUnk_08001DCC[fuserId];
    1237    if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) {
    1238        return KINSTONE_NONE;
    
    src/common.c lines 1235–1239 at 6fb6dfb · upstream ↗
    1257        if (offeredFusion == KINSTONE_RANDOM) { // random shared fusion
    1258            offeredFusion = GetRandomSharedFusion(fuserData);
    
    src/common.c lines 1257–1259 at 6fb6dfb · upstream ↗
    1274    randomMood = Random();
    1275    fuserStability = fuserData[1];
    1276    if (fuserStability <= randomMood % 100) {
    1277        return KINSTONE_NONE; // fickleness
    
    src/common.c lines 1274–1278 at 6fb6dfb · upstream ↗
    1943const u8 SharedFusions[] = {
    ⋮
    1948u32 GetRandomSharedFusion(u8* fuserData) {
    1949    s32 r = (s32)Random() % 18;
    1950    u32 i;
    1951    for (i = 0; i < 18; ++i) {
    1952        u32 kinstoneId = SharedFusions[r];
    1953        if (!CheckKinstoneFused(kinstoneId))
    1954            return kinstoneId;
    1955        r = (r + 1) % 18;
    ⋮
    1957    return KINSTONE_JUST_FUSED;
    
    src/common.c lines 1943–1958 at 6fb6dfb · upstream ↗
    154    KINSTONE_RANDOM = 0xFF,
    
    include/kinstone.h line 154 at 6fb6dfb · upstream ↗
    314void sub_08068AFC(BladeBrothersEntity* this) {
    315    super->action = 1;
    316    super->spriteSettings.draw = 1;
    317    this->fusionOffer = GetFusionToOffer(super);
    
    src/npc/bladeBrothers.c lines 314–317 at 6fb6dfb · upstream ↗
    307gUnk_08001DCC:: @ 08001DCC
    308	.4byte gUnk_08001FAC
    309	.4byte gUnk_08001FB4
    
    asm/src/code_08001A7C.s lines 307–309 at 6fb6dfb · upstream ↗

    In the cartridge (“Legend of Zelda, The - The Minish Cap (USA)”): the fusers' pointer table, 120 words, the first pointing at 0x08001FAC where the table ends; the fusers' entries, every pointer landing in this range; second bytes counted: entry 0 (first byte 99) has 0, and of entries 1–119, 77 have 100, 20 have 50, 21 have 30, one has 60. We don't reproduce the bytes.

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code