diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-10 12:44:12 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-10 12:44:12 +0800 |
commit | 35c14911478ce0b963376fc4c82cedfb5b5614a4 (patch) | |
tree | f36fc86abc901186396cde7583cb52a5a3e49b1c /src | |
parent | b9dd482ec957ea0a1ee73d1b22354fc10a143789 (diff) |
sub_815C0D4 finished
Diffstat (limited to 'src')
-rw-r--r-- | src/teachy_tv.c | 225 |
1 files changed, 28 insertions, 197 deletions
diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 609c470bc..6c0df1edc 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -472,7 +472,7 @@ void TeachyTvClusFuncTransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId) if (++data[2] > 63) { CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_203F450->buffer4, 0, 0, 0x20, 0x20, 0x11); - TeachyTvSetSpriteCoordsAndSwitchFrame(((u8*)data)[2], 8, 0x38, 7); + TeachyTvSetSpriteCoordsAndSwitchFrame(((u8 *)data)[2], 8, 0x38, 7); schedule_bg_copy_tilemap_to_vram(2); data[2] = 0; ++data[3]; @@ -513,7 +513,7 @@ void TeachyTvClusFuncNpcMoveAndSetupTextPrinter(u8 taskId) void TeachyTvClusFuncIdleIfTextPrinterIsActive(u8 taskId) { - s16* data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; if (!sub_80BF518(0)) ++data[3]; } @@ -560,7 +560,7 @@ void TeachyTvClusFuncTextPrinterSwitchStringByOptionChosen2(u8 taskId) void TeachyTvClusFuncIdleIfTextPrinterIsActive2(u8 taskId) { - s16* data = (u16 *)gTasks[taskId].data; + s16 *data = (u16 *)gTasks[taskId].data; if (!sub_80BF518(0)) ++data[3]; } @@ -732,7 +732,7 @@ void TeachyTvPostBattleFadeControl(u8 taskId) s16 *data = gTasks[taskId].data; if (!(gPaletteFade.active)) { - const u8* funcIdx = gUnknown_8479390; + const u8 *funcIdx = gUnknown_8479390; int arg = funcIdx[gTeachyTV_StaticResources.optionChosen]; data[3] = arg; gTasks[taskId].func = TeachyTvRenderMsgAndSwitchClusterFuncs; @@ -751,7 +751,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m if (gUnknown_203F450->var_4006 != 1) { res = TeachyTvGrassAnimationCheckIfNeedsToGenerateGrassObj(x - 0x10, y); - if (res << 24) + if (res) { objTemAddr = gUnknown_83A0010; objId = CreateSprite(*(objTemAddr+4), 0, 0, subprio); @@ -777,8 +777,7 @@ void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 m void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite) { - u32 diff1, diff2; - s16 *data = gTasks[sprite->data[0]].data; + s16 diff1, diff2, *data = gTasks[sprite->data[0]].data; struct Sprite *objAddr = &gSprites[data[1]]; if (gUnknown_203F450->var_4006 == 1) DestroySprite(sprite); @@ -794,12 +793,12 @@ void TeachyTvGrassAnimationObjCallback(struct Sprite *sprite) sprite->subpriority = 0; diff1 = (u16)(sprite->pos2.x - objAddr->pos2.x); diff2 = (u16)(sprite->pos2.y - objAddr->pos2.y); - diff1 = ((diff1 << 0x10) + 0xF0000) >> 0x10; - if (diff1 <= 0x1E) + diff1 += 0xF; + if ((u16)diff1 <= 0x1E) { - if ((s16)diff2 > -0x10) + if (diff2 > -0x10) { - if ((s16)diff2 <= 0x17) + if (diff2 <= 0x17) return; } } @@ -850,7 +849,7 @@ void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId) ++data[7]; break; case 1: - if (sub_80D08F8() << 24) + if (sub_80D08F8()) { SetMainCallback2(sub_800FD9C); DestroyTask(taskId); @@ -1317,205 +1316,40 @@ void TeachyTvComputeMapTilesFromTilesetAndMetaTiles(u16 *metaTilesArray, u8 *blo TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(blockBuf, &tileset[0x20 * (metaTilesArray[7] & 0x3FF)], (metaTilesArray[7] >> 10) & 3); } -#ifdef NONMATCHING void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile) { - u32 i; - u32 j; - vu32 src; - u8* buffer = (u8 *)AllocZeroed(0x20); - src = ((u32)AllocZeroed(0x20)); + u8 i, j, * src, *buffer = (u8 *)AllocZeroed(0x20); + src = AllocZeroed(0x20); CpuFastSet(tileset, buffer, 8); if (metaTile & 1) { - for (i=0; i<8; ++i) + for (i = 0; i < 8; ++i) { - for (j=0; j<4; ++j) + for (j = 0; j < 4; ++j) { - u32 offset1 = i << 2; u32 offset2 = j - 3; - u32 offset = offset1 - offset2; - u32 value = buffer[offset]; - u32 dstOffset = offset1 + j; - *(u8*)(src + dstOffset) = ((value & 0xF) << 4) + ((value & 0xF0) >> 4); + u8 value = buffer[(i << 2) - offset2]; + src[(i << 2) + j] = ((value & 0xF) << 4) + ((value & 0xF0) >> 4); } } - CpuFastSet((u8*)src, buffer, 8); + CpuFastSet(src, buffer, 8); } if (metaTile & 2) { - j = 0; - do - { - memcpy(&((u8*)src)[4 * j], &buffer[4 * (7 - j)], 4); - j = (u8)(j + 1); - } - while (j <= 7); - CpuFastSet((u8*)src, buffer, 8); + for (i = 0; i < 8; ++i) + memcpy(&src[4 * i], &buffer[4 * (7 - i)], 4); + CpuFastSet(src, buffer, 8); } - j = 0; - do + for (i = 0; i < 32; ++i) { - if (buffer[j] & 0xF0) - blockBuf[j] = (blockBuf[j] & 0xF) + (buffer[j] & 0xF0); - if (buffer[j] & 0xF) - blockBuf[j] = (blockBuf[j] & 0xF0) + (buffer[j] & 0xF); - j = (u8)(j + 1); + if (buffer[i] & 0xF0) + blockBuf[i] = (blockBuf[i] & 0xF) + (buffer[i] & 0xF0); + if (buffer[i] & 0xF) + blockBuf[i] = (blockBuf[i] & 0xF0) + (buffer[i] & 0xF); } - while (j <= 0x1F); - Free((u8*)src); + Free(src); Free(buffer); } -#else -NAKED -void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBuf, u8 *tileset, u8 metaTile) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - mov r9, r0\n\ - adds r4, r1, 0\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r10, r2\n\ - movs r0, 0x20\n\ - bl AllocZeroed\n\ - adds r6, r0, 0\n\ - movs r0, 0x20\n\ - bl AllocZeroed\n\ - str r0, [sp]\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - movs r2, 0x8\n\ - bl CpuFastSet\n\ - movs r0, 0x1\n\ - mov r1, r10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0815C15A\n\ - movs r5, 0\n\ - movs r7, 0xF\n\ - mov r12, r7\n\ - movs r0, 0xF0\n\ - mov r8, r0\n\ - _0815C118:\n\ - movs r3, 0\n\ - lsls r4, r5, 2\n\ - _0815C11C:\n\ - subs r0, r3, 0x3\n\ - subs r0, r4, r0\n\ - adds r0, r6, r0\n\ - ldrb r1, [r0]\n\ - adds r2, r4, r3\n\ - ldr r7, [sp]\n\ - adds r2, r7, r2\n\ - adds r0, r1, 0\n\ - mov r7, r12\n\ - ands r0, r7\n\ - lsls r0, 4\n\ - mov r7, r8\n\ - ands r1, r7\n\ - lsrs r1, 4\n\ - adds r0, r1\n\ - strb r0, [r2]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - cmp r3, 0x3\n\ - bls _0815C11C\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x7\n\ - bls _0815C118\n\ - ldr r0, [sp]\n\ - adds r1, r6, 0\n\ - movs r2, 0x8\n\ - bl CpuFastSet\n\ - _0815C15A:\n\ - movs r0, 0x2\n\ - mov r1, r10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0815C18E\n\ - movs r5, 0\n\ - _0815C166:\n\ - lsls r0, r5, 2\n\ - ldr r7, [sp]\n\ - adds r0, r7\n\ - movs r1, 0x7\n\ - subs r1, r5\n\ - lsls r1, 2\n\ - adds r1, r6\n\ - movs r2, 0x4\n\ - bl memcpy\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x7\n\ - bls _0815C166\n\ - ldr r0, [sp]\n\ - adds r1, r6, 0\n\ - movs r2, 0x8\n\ - bl CpuFastSet\n\ - _0815C18E:\n\ - movs r5, 0\n\ - movs r0, 0xF0\n\ - mov r8, r0\n\ - movs r1, 0xF\n\ - mov r12, r1\n\ - _0815C198:\n\ - adds r4, r6, r5\n\ - ldrb r0, [r4]\n\ - mov r3, r8\n\ - ands r3, r0\n\ - cmp r3, 0\n\ - beq _0815C1B2\n\ - mov r7, r9\n\ - adds r2, r7, r5\n\ - ldrb r1, [r2]\n\ - mov r0, r12\n\ - ands r0, r1\n\ - adds r0, r3\n\ - strb r0, [r2]\n\ - _0815C1B2:\n\ - ldrb r0, [r4]\n\ - mov r3, r12\n\ - ands r3, r0\n\ - cmp r3, 0\n\ - beq _0815C1CA\n\ - mov r0, r9\n\ - adds r2, r0, r5\n\ - ldrb r1, [r2]\n\ - mov r0, r8\n\ - ands r0, r1\n\ - adds r0, r3\n\ - strb r0, [r2]\n\ - _0815C1CA:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x1F\n\ - bls _0815C198\n\ - ldr r0, [sp]\n\ - bl Free\n\ - adds r0, r6, 0\n\ - bl Free\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - "); -} -#endif u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTile) { @@ -1533,11 +1367,8 @@ u16 TeachyTvComputePalIndexArrayEntryByMetaTile(u8 *palIndexArrayBuf, u16 metaTi } else { - while (1) + while (++i < 16) { - ++i; - if (i > 0xF) - break; temp = palIndexArrayBuf[i]; if (temp == pal) break; |