diff options
Diffstat (limited to 'src/scene')
-rw-r--r-- | src/scene/cable_car.c | 9 | ||||
-rw-r--r-- | src/scene/intro.c | 206 | ||||
-rw-r--r-- | src/scene/intro_credits_graphics.c | 140 |
3 files changed, 24 insertions, 331 deletions
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 114505e4d..60efee67d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,15 +23,6 @@ // Static type declarations -// Credits to Made (dolphin emoji) -#define S16TOPOSFLOAT(val) \ -({ \ - s16 v = (val); \ - float f = (float)v; \ - if(v < 0) f += 65536.0f; \ - f; \ -}) - struct CableCarEwramStruct1 { u8 unk_0000; u8 unk_0001; diff --git a/src/scene/intro.c b/src/scene/intro.c index 4da341744..3e4bd5bf4 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -1501,7 +1501,6 @@ static void intro_reset_and_hide_bgs(void) REG_BLDY = 0; } -#ifdef NONMATCHING static void sub_813CCE8(u8 taskId) { switch (gTasks[taskId].data[0]) @@ -1513,18 +1512,15 @@ static void sub_813CCE8(u8 taskId) REG_BLDY = 0; gTasks[taskId].data[1] = 0x40; gTasks[taskId].data[0] = 1; - return; + break; case 1: if (gTasks[taskId].data[1] != 0) { - u32 foo; - u32 bar asm("r2"); + u8 foo; gTasks[taskId].data[1]--; - //tail merge at _0813CDC2 - foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0); - bar = 0x1FE; - REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2]; + foo = gTasks[taskId].data[1] / 2; + REG_BLDALPHA = gUnknown_08393E64[foo]; } else { @@ -1532,7 +1528,7 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0x80; gTasks[taskId].data[0]++; } - return; + break; case 2: if (gTasks[taskId].data[1] != 0) { @@ -1544,18 +1540,15 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0; //redundant? gTasks[taskId].data[0]++; } - return; + break; case 3: if (gTasks[taskId].data[1] <= 0x3D) { - u32 foo; - u32 bar asm("r2"); + u8 foo; gTasks[taskId].data[1]++; - //_0813CDC2 - foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0); - bar = 0x1FE; - REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2]; + foo = gTasks[taskId].data[1] / 2; + REG_BLDALPHA = gUnknown_08393E64[foo]; } else { @@ -1564,7 +1557,7 @@ static void sub_813CCE8(u8 taskId) gTasks[taskId].data[1] = 0x10; gTasks[taskId].data[0]++; } - return; + break; case 4: if (gTasks[taskId].data[1] != 0) { @@ -1577,186 +1570,9 @@ static void sub_813CCE8(u8 taskId) REG_BLDY = 0; DestroyTask(taskId); } - return; + break; } } -#else -__attribute__((naked)) -static void sub_813CCE8(u8 taskId) -{ - asm("\n\ - .equ REG_BLDCNT, 0x4000050\n\ - .equ REG_BLDALPHA, 0x4000052\n\ - .syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - ldr r1, _0813CD0C @ =gTasks\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r2, r1, 0\n\ - cmp r0, 0x4\n\ - bhi _0813CD28\n\ - lsls r0, 2\n\ - ldr r1, _0813CD10 @ =_0813CD14\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0813CD0C: .4byte gTasks\n\ -_0813CD10: .4byte _0813CD14\n\ - .align 2, 0\n\ -_0813CD14:\n\ - .4byte _0813CD28\n\ - .4byte _0813CD5C\n\ - .4byte _0813CD8C\n\ - .4byte _0813CDA8\n\ - .4byte _0813CDFC\n\ -_0813CD28:\n\ - ldr r1, _0813CD54 @ =REG_BLDCNT\n\ - ldr r4, _0813CD58 @ =0x00003f50\n\ - adds r0, r4, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r4, 0x80\n\ - lsls r4, 5\n\ - adds r0, r4, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - movs r1, 0x40\n\ - strh r1, [r0, 0xA]\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CD54: .4byte REG_BLDCNT\n\ -_0813CD58: .4byte 0x00003f50\n\ -_0813CD5C:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r2, r0, r2\n\ - ldrh r1, [r2, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r0, [r2, r3]\n\ - cmp r0, 0\n\ - beq _0813CD78\n\ - subs r0, r1, 0x1\n\ - strh r0, [r2, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - b _0813CDC2\n\ -_0813CD78:\n\ - ldr r1, _0813CD84 @ =REG_BLDALPHA\n\ - ldr r0, _0813CD88 @ =gUnknown_08393E64\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - movs r0, 0x80\n\ - b _0813CDEA\n\ - .align 2, 0\n\ -_0813CD84: .4byte REG_BLDALPHA\n\ -_0813CD88: .4byte gUnknown_08393E64\n\ -_0813CD8C:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r2, [r1, r3]\n\ - cmp r2, 0\n\ - bne _0813CE0E\n\ - strh r2, [r1, 0xA]\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - b _0813CE26\n\ -_0813CDA8:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r2, r0, r2\n\ - ldrh r1, [r2, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - cmp r0, 0x3D\n\ - bgt _0813CDE0\n\ - adds r0, r1, 0x1\n\ - strh r0, [r2, 0xA]\n\ - movs r1, 0xA\n\ - ldrsh r0, [r2, r1]\n\ -_0813CDC2:\n\ - lsrs r1, r0, 31\n\ - adds r0, r1\n\ - movs r2, 0xFF\n\ - lsls r2, 1\n\ - ldr r3, _0813CDD8 @ =REG_BLDALPHA\n\ - ldr r1, _0813CDDC @ =gUnknown_08393E64\n\ - ands r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - strh r0, [r3]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CDD8: .4byte REG_BLDALPHA\n\ -_0813CDDC: .4byte gUnknown_08393E64\n\ -_0813CDE0:\n\ - ldr r1, _0813CDF4 @ =REG_BLDALPHA\n\ - ldr r0, _0813CDF8 @ =gUnknown_08393E64\n\ - ldrh r0, [r0, 0x3E]\n\ - strh r0, [r1]\n\ - movs r0, 0x10\n\ -_0813CDEA:\n\ - strh r0, [r2, 0xA]\n\ - ldrh r0, [r2, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x8]\n\ - b _0813CE26\n\ - .align 2, 0\n\ -_0813CDF4: .4byte REG_BLDALPHA\n\ -_0813CDF8: .4byte gUnknown_08393E64\n\ -_0813CDFC:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 3\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r2, [r1, r4]\n\ - cmp r2, 0\n\ - beq _0813CE14\n\ -_0813CE0E:\n\ - subs r0, 0x1\n\ - strh r0, [r1, 0xA]\n\ - b _0813CE26\n\ -_0813CE14:\n\ - ldr r0, _0813CE2C @ =REG_BLDCNT\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, r3, 0\n\ - bl DestroyTask\n\ -_0813CE26:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0813CE2C: .4byte REG_BLDCNT\n\ - .syntax divided\n"); -} -#endif void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha) { diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index 7f6765ef6..6aadafc58 100644 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -436,161 +436,47 @@ u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d) return taskId; } -#ifdef NONMATCHING void sub_8148F3C(u8 taskId) { - register u32 r4 asm("r4"); + s16 r4; s32 r2; - r4 = (u16)gTasks[taskId].data[1] << 16; + r4 = gTasks[taskId].data[1]; if (r4 != 0) { - r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12); + r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[2] = r2 >> 16; gTasks[taskId].data[3] = r2; REG_BG1HOFS = gTasks[taskId].data[2]; - REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358; + REG_BG1VOFS = gUnknown_02039358 + gUnknown_0203935A; } - r4 = (u16)gTasks[taskId].data[4] << 16; + r4 = gTasks[taskId].data[4]; if (r4 != 0) { - r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12); + r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[5] = r2 >> 16; - gTasks[taskId].data[3] = r2; + gTasks[taskId].data[6] = r2; REG_BG2HOFS = gTasks[taskId].data[5]; if (gTasks[taskId].data[0] != 0) - REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358; + REG_BG2VOFS = gUnknown_02039358 + gUnknown_0203935A; else REG_BG2VOFS = gUnknown_02039358; } - r4 = (u16)gTasks[taskId].data[7] << 16; + r4 = gTasks[taskId].data[7]; if (r4 != 0) { - r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);; + r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9]; + r2 -= 16 * (u16)r4; gTasks[taskId].data[8] = r2 >> 16; gTasks[taskId].data[9] = r2; REG_BG3HOFS = gTasks[taskId].data[8]; REG_BG3VOFS = gUnknown_02039358; } } -#else -__attribute__((naked)) -void sub_8148F3C(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r1, _08148FB4 @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0xA]\n\ - lsls r4, r0, 16\n\ - adds r6, r1, 0\n\ - cmp r4, 0\n\ - beq _08148F7C\n\ - movs r1, 0xC\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0xE]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0xC]\n\ - strh r2, [r3, 0xE]\n\ - ldr r0, _08148FB8 @ =REG_BG1HOFS\n\ - strh r1, [r0]\n\ - ldr r2, _08148FBC @ =REG_BG1VOFS\n\ - ldr r1, _08148FC0 @ =gUnknown_02039358\n\ - ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ -_08148F7C:\n\ - ldrh r0, [r3, 0x10]\n\ - lsls r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08148FD8\n\ - movs r1, 0x12\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0x14]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0x12]\n\ - strh r2, [r3, 0x14]\n\ - ldr r0, _08148FC8 @ =REG_BG2HOFS\n\ - strh r1, [r0]\n\ - movs r1, 0x8\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0\n\ - beq _08148FD0\n\ - ldr r2, _08148FCC @ =REG_BG2VOFS\n\ - ldr r1, _08148FC0 @ =gUnknown_02039358\n\ - ldr r0, _08148FC4 @ =gUnknown_0203935A\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ - b _08148FD8\n\ - .align 2, 0\n\ -_08148FB4: .4byte gTasks\n\ -_08148FB8: .4byte REG_BG1HOFS\n\ -_08148FBC: .4byte REG_BG1VOFS\n\ -_08148FC0: .4byte gUnknown_02039358\n\ -_08148FC4: .4byte gUnknown_0203935A\n\ -_08148FC8: .4byte REG_BG2HOFS\n\ -_08148FCC: .4byte REG_BG2VOFS\n\ -_08148FD0:\n\ - ldr r0, _08149010 @ =REG_BG2VOFS\n\ - ldr r1, _08149014 @ =gUnknown_02039358\n\ - ldrh r1, [r1]\n\ - strh r1, [r0]\n\ -_08148FD8:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r6\n\ - ldrh r0, [r3, 0x16]\n\ - lsls r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08149008\n\ - movs r1, 0x18\n\ - ldrsh r0, [r3, r1]\n\ - lsls r0, 16\n\ - ldrh r1, [r3, 0x1A]\n\ - adds r2, r0, r1\n\ - lsrs r0, r4, 12\n\ - subs r2, r0\n\ - asrs r1, r2, 16\n\ - strh r1, [r3, 0x18]\n\ - strh r2, [r3, 0x1A]\n\ - ldr r0, _08149018 @ =REG_BG3HOFS\n\ - strh r1, [r0]\n\ - ldr r1, _0814901C @ =REG_BG3VOFS\n\ - ldr r0, _08149014 @ =gUnknown_02039358\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ -_08149008:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08149010: .4byte REG_BG2VOFS\n\ -_08149014: .4byte gUnknown_02039358\n\ -_08149018: .4byte REG_BG3HOFS\n\ -_0814901C: .4byte REG_BG3VOFS\n\ - .syntax divided\n"); -} -#endif void sub_8149020(u8 mode) { |