diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/decoration.c | 659 | ||||
-rw-r--r-- | src/field_player_avatar.c | 12 | ||||
-rw-r--r-- | src/field_tasks.c | 126 | ||||
-rw-r--r-- | src/fieldmap.c | 2 |
4 files changed, 47 insertions, 752 deletions
diff --git a/src/decoration.c b/src/decoration.c index 8dde2834d..f2a1cf4b9 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2403,8 +2403,6 @@ bool8 sub_80FFBDC(u16 metatileBehavior, const struct Decoration *decoration) return FALSE; } -// When behaviorBy is set, it is masked by 0xf000. This is the step that fails to match when built. -#ifdef NONMATCHING bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) { u8 i; @@ -2536,540 +2534,6 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) } return TRUE; } -#else -NAKED -bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) -{ - asm(".syntax unified\n" - "\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x24\n" - "\tstr r1, [sp]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r10, r0\n" - "\tldr r1, _080FFC60 @ =gTasks\n" - "\tlsls r0, 2\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r1\n" - "\tldrb r2, [r0, 0x14]\n" - "\tstr r2, [sp, 0x4]\n" - "\tldrb r0, [r0, 0x12]\n" - "\tstr r0, [sp, 0x8]\n" - "\tldr r3, [sp]\n" - "\tldrb r0, [r3, 0x11]\n" - "\tadds r2, r1, 0\n" - "\tcmp r0, 0x4\n" - "\tbls _080FFC56\n" - "\tb _08100024\n" - "_080FFC56:\n" - "\tlsls r0, 2\n" - "\tldr r1, _080FFC64 @ =_080FFC68\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_080FFC60: .4byte gTasks\n" - "_080FFC64: .4byte _080FFC68\n" - "\t.align 2, 0\n" - "_080FFC68:\n" - "\t.4byte _080FFC7C\n" - "\t.4byte _080FFC7C\n" - "\t.4byte _080FFD68\n" - "\t.4byte _080FFF1C\n" - "\t.4byte _080FFFA0\n" - "_080FFC7C:\n" - "\tmovs r6, 0\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFC86\n" - "\tb _08100024\n" - "_080FFC86:\n" - "\tmov r1, r10\n" - "\tlsls r1, 2\n" - "\tstr r1, [sp, 0x1C]\n" - "_080FFC8C:\n" - "\tmov r2, r10\n" - "\tlsls r0, r2, 2\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r3, _080FFD64 @ =gTasks\n" - "\tadds r0, r3\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tadds r6, 0x1\n" - "\tstr r6, [sp, 0x14]\n" - "\tldr r0, [sp, 0x8]\n" - "\tcmp r7, r0\n" - "\tbcs _080FFD56\n" - "\tmov r1, r9\n" - "\tlsls r1, 16\n" - "\tstr r1, [sp, 0xC]\n" - "\tasrs r1, 16\n" - "\tmov r9, r1\n" - "_080FFCB8:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r2, _080FFD64 @ =gTasks\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tadds r0, r6, 0\n" - "\tmov r1, r9\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r1, [sp, 0x14]\n" - "\tsubs r0, r3, r1\n" - "\tldr r2, [sp, 0x8]\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r2\n" - "\tadds r1, r7\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tldr r1, [sp]\n" - "\tbl sub_80FFBDC\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFD1A\n" - "\tb _080FFFF4\n" - "_080FFD1A:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tmov r2, r9\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFD2E\n" - "\tb _080FFFF4\n" - "_080FFD2E:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0xC]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetObjectEventIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _080FFD4A\n" - "\tcmp r4, 0x10\n" - "\tbeq _080FFD4A\n" - "\tb _080FFFF4\n" - "_080FFD4A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFCB8\n" - "_080FFD56:\n" - "\tldr r1, [sp, 0x14]\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r2, [sp, 0x4]\n" - "\tcmp r6, r2\n" - "\tbcc _080FFC8C\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFD64: .4byte gTasks\n" - "_080FFD68:\n" - "\tmovs r6, 0\n" - "\tmov r3, r10\n" - "\tlsls r3, 2\n" - "\tstr r3, [sp, 0x1C]\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x1\n" - "\tstr r0, [sp, 0x18]\n" - "\tcmp r6, r0\n" - "\tbge _080FFE54\n" - "\tadds r0, r3, 0\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tstr r0, [sp, 0x10]\n" - "_080FFD82:\n" - "\tldr r1, [sp, 0x10]\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tadds r6, 0x1\n" - "\tstr r6, [sp, 0x14]\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcs _080FFE48\n" - "\tlsls r0, 16\n" - "\tstr r0, [sp, 0x20]\n" - "_080FFDA0:\n" - "\tldr r1, [sp, 0x10]\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tadds r0, r6, 0\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r1, [sp, 0x14]\n" - "\tsubs r0, r3, r1\n" - "\tldr r2, [sp, 0x8]\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r2\n" - "\tadds r1, r7\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tbl MetatileBehavior_IsNormal\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE0C\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0\n" - "\tbl sub_80FFB6C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE0C\n" - "\tb _080FFFF4\n" - "_080FFE0C:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tldr r3, [sp, 0x20]\n" - "\tasrs r2, r3, 16\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE22\n" - "\tb _080FFFF4\n" - "_080FFE22:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetObjectEventIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x10\n" - "\tbeq _080FFE3A\n" - "\tb _080FFFF4\n" - "_080FFE3A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r2, _080FFF18 @ =gTasks\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFDA0\n" - "_080FFE48:\n" - "\tldr r1, [sp, 0x14]\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r3, [sp, 0x18]\n" - "\tcmp r6, r3\n" - "\tblt _080FFD82\n" - "_080FFE54:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tldr r1, [sp, 0x4]\n" - "\tsubs r0, r1\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFE74\n" - "\tb _08100024\n" - "_080FFE74:\n" - "\tlsls r0, 16\n" - "\tstr r0, [sp, 0x20]\n" - "_080FFE78:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r1, _080FFF18 @ =gTasks\n" - "\tadds r0, r1\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tadds r0, r6, 0\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, r7, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tbl MetatileBehavior_IsNormal\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEDA\n" - "\tadds r0, r4, 0\n" - "\tbl MetatileBehavior_IsSecretBaseNorthWall\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEDA\n" - "\tb _080FFFF4\n" - "_080FFEDA:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tldr r3, [sp, 0x20]\n" - "\tasrs r2, r3, 16\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEF0\n" - "\tb _080FFFF4\n" - "_080FFEF0:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetObjectEventIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _080FFF0A\n" - "\tcmp r4, 0x10\n" - "\tbne _080FFFF4\n" - "_080FFF0A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFE78\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFF18: .4byte gTasks\n" - "_080FFF1C:\n" - "\tmovs r6, 0\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFF26\n" - "\tb _08100024\n" - "_080FFF26:\n" - "\tmov r1, r10\n" - "\tlsls r0, r1, 2\n" - "\tadd r0, r10\n" - "\tlsls r1, r0, 3\n" - "\tldr r2, _080FFF9C @ =gTasks\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcs _080FFF8C\n" - "\tadds r0, r2, 0\n" - "\tadds r1, r0\n" - "\tmov r8, r1\n" - "\tmov r1, r9\n" - "\tlsls r0, r1, 16\n" - "\tasrs r5, r0, 16\n" - "_080FFF50:\n" - "\tmov r2, r8\n" - "\tldrh r0, [r2, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tasrs r4, r0, 16\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tbl MetatileBehavior_IsSecretBaseNorthWall\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080FFFF4\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0x1\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r1, 0xA3\n" - "\tlsls r1, 2\n" - "\tcmp r0, r1\n" - "\tbeq _080FFFF4\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFF50\n" - "_080FFF8C:\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFF26\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFF9C: .4byte gTasks\n" - "_080FFFA0:\n" - "\tmov r3, r10\n" - "\tlsls r1, r3, 2\n" - "\tadds r0, r1, r3\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tstr r1, [sp, 0x1C]\n" - "\tldr r0, [sp, 0x8]\n" - "\tcmp r7, r0\n" - "\tbcs _08100024\n" - "\tadds r6, r2, 0\n" - "\tmov r1, r9\n" - "\tlsls r1, 16\n" - "\tstr r1, [sp, 0x20]\n" - "_080FFFC0:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tasrs r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp]\n" - "\tldrb r0, [r3, 0x12]\n" - "\tcmp r0, 0x5\n" - "\tbne _080FFFF8\n" - "_080FFFE8:\n" - "\tadds r0, r4, 0\n" - "\tbl MetatileBehavior_IsLargeMatCenter\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _08100004\n" - "_080FFFF4:\n" - "\tmovs r0, 0\n" - "\tb _08100026\n" - "_080FFFF8:\n" - "\tadds r0, r4, 0\n" - "\tbl MetatileBehavior_IsSecretBaseLargeMatEdge\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080FFFE8\n" - "_08100004:\n" - "\tadds r0, r5, 0\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetObjectEventIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x10\n" - "\tbne _080FFFF4\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFFC0\n" - "_08100024:\n" - "\tmovs r0, 0x1\n" - "_08100026:\n" - "\tadd sp, 0x24\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1\n" - ".syntax divided\n"); -} -#endif void sub_8100038(u8 taskId) { @@ -3967,131 +3431,42 @@ void sub_81013B8(u8 a0, u8 a1, u8 a2, u8 a3) } } -#ifdef NONMATCHING void sub_8101460(u8 taskId) { u8 i; u8 xOff; u8 yOff; + u8 var1; + u32 var2; + gUnknown_02039234 = 0; if (sub_8101340(taskId) != TRUE) { - for (i=0; i<ewram_1f000.size; i++) + for (i = 0; i < ewram_1f000.size; i++) { - if (ewram_1f000.items[i] == 0) // This is using the wrong register! - { - continue; - } - sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); - if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) + var1 = ewram_1f000.items[i]; + if (var1 != 0) { - gUnknown_020391B4[0].decorId = i; - gUnknown_02039234++; - break; + sub_8101118(var1, gUnknown_020391B4); + if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) + { + gUnknown_020391B4[0].decorId = i; + gUnknown_02039234++; + break; + } } } if (gUnknown_02039234 != 0) { xOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] >> 4; yOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] & 0xf; - sub_81013B8(xOff, yOff - gUnknown_020391B4[0].height + 1, xOff + gUnknown_020391B4[0].width - 1, yOff); + var1 = yOff - gUnknown_020391B4[0].height + 1; + var2 = gUnknown_020391B4[0].width + xOff - 1; + + sub_81013B8(xOff, var1, var2, yOff); } } } -#else -NAKED -void sub_8101460(u8 taskId) -{ - asm(".syntax unified\n" - "\tpush {r4-r7,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r4, _081014B8 @ =gUnknown_02039234\n" - "\tmovs r0, 0\n" - "\tstrb r0, [r4]\n" - "\tadds r0, r6, 0\n" - "\tbl sub_8101340\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbeq _08101504\n" - "\tmovs r5, 0\n" - "\tldr r0, _081014BC @ =ewram_1f000\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcs _081014D2\n" - "\tadds r7, r4, 0\n" - "_08101486:\n" - "\tldr r0, [r0]\n" - "\tadds r0, r5\n" - "\tldrb r1, [r0] @ compiler incorrectly uses r0 for this and the next instruction\n" - "\tcmp r1, 0\n" - "\tbeq _081014C4\n" - "\tldr r4, _081014C0 @ =gUnknown_020391B4\n" - "\tadds r0, r1, 0\n" - "\tadds r1, r4, 0\n" - "\tbl sub_8101118\n" - "\tadds r0, r6, 0\n" - "\tadds r1, r5, 0\n" - "\tadds r2, r4, 0\n" - "\tbl sub_8101200\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbne _081014C4\n" - "\tstrb r5, [r4]\n" - "\tldrb r0, [r7]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r7]\n" - "\tb _081014D2\n" - "\t.align 2, 0\n" - "_081014B8: .4byte gUnknown_02039234\n" - "_081014BC: .4byte 0x201f000\n" - "_081014C0: .4byte gUnknown_020391B4\n" - "_081014C4:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tldr r0, _0810150C @ =ewram_1f000\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcc _08101486\n" - "_081014D2:\n" - "\tldr r0, _08101510 @ =gUnknown_02039234\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbeq _08101504\n" - "\tldr r0, _0810150C @ =ewram_1f000\n" - "\tldr r2, _08101514 @ =gUnknown_020391B4\n" - "\tldrb r1, [r2]\n" - "\tldr r0, [r0, 0x4]\n" - "\tadds r0, r1\n" - "\tldrb r1, [r0]\n" - "\tlsrs r0, r1, 4\n" - "\tmovs r3, 0xF\n" - "\tands r3, r1\n" - "\tldrb r1, [r2, 0x2]\n" - "\tsubs r1, r3, r1\n" - "\tadds r1, 0x1\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tldrb r2, [r2, 0x1]\n" - "\tadds r2, r0\n" - "\tsubs r2, 0x1\n" - "\tlsls r2, 24\n" - "\tlsrs r2, 24\n" - "\tbl sub_81013B8\n" - "_08101504:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0810150C: .4byte 0x201f000\n" - "_08101510: .4byte gUnknown_02039234\n" - "_08101514: .4byte gUnknown_020391B4\n" - ".syntax divided\n"); -} -#endif void sub_8101518(u8 taskId) { diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index cd6e67c8c..cb0bf760f 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -681,24 +681,16 @@ void SetPlayerAvatarTransitionFlags(u16 a) static void DoPlayerAvatarTransition(void) { u8 i; - u32 flags = gPlayerAvatar.unk1; + u8 flags = gPlayerAvatar.unk1; if (flags != 0) { - for (i = 0; i < 8; i++, flags >>= 1) + for (i = 0; i < ARRAY_COUNT(gUnknown_0830FC14); i++, flags >>= 1) { -#ifdef NONMATCHING if (flags & 1) { gUnknown_0830FC14[i](&gObjectEvents[gPlayerAvatar.objectEventId]); } -#else - if (flags & 1) - { - register void (*const *funcs)(struct ObjectEvent *) asm("r0") = gUnknown_0830FC14; - funcs[i](&gObjectEvents[gPlayerAvatar.objectEventId]); - } -#endif } gPlayerAvatar.unk1 = 0; } diff --git a/src/field_tasks.c b/src/field_tasks.c index a56de5746..abc4e1505 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -147,46 +147,46 @@ void ResetFieldTasksArgs(void) } } -const struct MetatileOffset gUnknown_08376384[][2] = { - {{ 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, { 0, 1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)}}, - {{ 0, -1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)}}, - {{ 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, { 1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)}}, - {{ -1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)}} +const struct MetatileOffset gUnknown_08376384[] = { + { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)}, + { 0, -1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)}, + { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)}, + {-1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)} }; -const struct MetatileOffset gUnknown_083763A4[][2] = { - {{ 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, { 0, 1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)}}, - {{ 0, -1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)}}, - {{ 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, { 1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)}}, - {{ -1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)}} +const struct MetatileOffset gUnknown_083763A4[] = { + { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)}, + { 0, -1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)}, + { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)}, + {-1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)} }; -const struct MetatileOffset gUnknown_083763C4[][2] = { - {{ 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, { 0, 1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)}}, - {{ 0, -1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)}}, - {{ 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, { 1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)}}, - {{ -1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)}} +const struct MetatileOffset gUnknown_083763C4[] = { + { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)}, + { 0, -1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)}, + { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)}, + {-1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)} }; void DummyPerStepCallback(u8 taskId) {} -const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 a1) +const struct MetatileOffset *sub_80695E0(const struct MetatileOffset *a0, u16 a1) { if (MetatileBehavior_IsPacifidlogVerticalLog1(a1)) { - return a0[0]; + return &a0[0 * 2]; } else if (MetatileBehavior_IsPacifidlogVerticalLog2(a1)) { - return a0[1]; + return &a0[1 * 2]; } else if (MetatileBehavior_IsPacifidlogHorizontalLog1(a1)) { - return a0[2]; + return &a0[2 * 2]; } else if (MetatileBehavior_IsPacifidlogHorizontalLog2(a1)) { - return a0[3]; + return &a0[3 * 2]; } else { @@ -194,95 +194,23 @@ const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 } } -#ifdef NONMATCHING -void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) +void sub_8069638(const struct MetatileOffset *offsets, s16 x, s16 y, bool32 flag) { - const struct MetatileOffset *offsetData = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y)); - const struct MetatileOffset *offsetdata2 = offsetData; - if (offsetData != NULL) + offsets = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y)); + if (offsets) { - MapGridSetMetatileIdAt(x + offsetData[0].x, y + offsetData[0].y, offsetData[0].tileId); + MapGridSetMetatileIdAt(x + offsets[0].x, y + offsets[0].y, offsets[0].tileId); if (flag) { - CurrentMapDrawMetatileAt(x + offsetData[0].x, y + offsetData[0].y); + CurrentMapDrawMetatileAt(x + offsets[0].x, y + offsets[0].y); } - MapGridSetMetatileIdAt(x + offsetdata2[1].x, y + offsetdata2[1].y, offsetdata2[1].tileId); + MapGridSetMetatileIdAt(x + offsets[1].x, y + offsets[1].y, offsets[1].tileId); if (flag) { - CurrentMapDrawMetatileAt(x + offsetdata2[1].x, y + offsetdata2[1].y); + CurrentMapDrawMetatileAt(x + offsets[1].x, y + offsets[1].y); } } } -#else -NAKED -void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tadds r5, r0, 0\n" - "\tmov r8, r3\n" - "\tlsls r1, 16\n" - "\tasrs r6, r1, 16\n" - "\tlsls r2, 16\n" - "\tasrs r7, r2, 16\n" - "\tadds r0, r6, 0\n" - "\tadds r1, r7, 0\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tadds r1, r0, 0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tadds r0, r5, 0\n" - "\tbl sub_80695E0\n" - "\tadds r4, r0, 0\n" - "\tadds r5, r4, 0\n" - "\tcmp r4, 0\n" - "\tbeq _080696B6\n" - "\tmovs r0, 0\n" - "\tldrsb r0, [r4, r0]\n" - "\tadds r0, r6, r0\n" - "\tmovs r1, 0x1\n" - "\tldrsb r1, [r4, r1]\n" - "\tadds r1, r7, r1\n" - "\tldrh r2, [r4, 0x2]\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tmov r0, r8\n" - "\tcmp r0, 0\n" - "\tbeq _0806968E\n" - "\tmovs r0, 0\n" - "\tldrsb r0, [r4, r0]\n" - "\tadds r0, r6, r0\n" - "\tmovs r1, 0x1\n" - "\tldrsb r1, [r4, r1]\n" - "\tadds r1, r7, r1\n" - "\tbl CurrentMapDrawMetatileAt\n" - "_0806968E:\n" - "\tmovs r0, 0x4\n" - "\tldrsb r0, [r5, r0]\n" - "\tadds r0, r6, r0\n" - "\tmovs r1, 0x5\n" - "\tldrsb r1, [r5, r1]\n" - "\tadds r1, r7, r1\n" - "\tldrh r2, [r5, 0x6]\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tmov r0, r8\n" - "\tcmp r0, 0\n" - "\tbeq _080696B6\n" - "\tmovs r0, 0x4\n" - "\tldrsb r0, [r5, r0]\n" - "\tadds r0, r6, r0\n" - "\tmovs r1, 0x5\n" - "\tldrsb r1, [r5, r1]\n" - "\tadds r1, r7, r1\n" - "\tbl CurrentMapDrawMetatileAt\n" - "_080696B6:\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif void sub_80696C0(s16 x, s16 y, bool32 flag) { diff --git a/src/fieldmap.c b/src/fieldmap.c index f9b81a173..1241f85c9 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -460,7 +460,7 @@ void MapGridSetMetatileEntryAt(int x, int y, u16 metatile) } } -u32 GetBehaviorByMetatileId(u16 metatile) +u16 GetBehaviorByMetatileId(u16 metatile) { u16 *attributes; if (metatile < NUM_METATILES_IN_PRIMARY) |