diff --git a/src/color.c b/src/color.c index d82e57de..26afadf3 100644 --- a/src/color.c +++ b/src/color.c @@ -162,7 +162,7 @@ u32 FindFreeObjPalette(u32 paletteCount) { void SetEntityObjPalette(Entity* entity, s32 palette) { u32 uVar1; u32 mask; - FORCE_REGISTER(u32 tmp, r1); + u32 tmp; Palette2* pPVar1; if (palette < 0) { diff --git a/src/scroll.c b/src/scroll.c index 97843104..47f0ae33 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -419,64 +419,43 @@ void Scroll5Sub5(RoomControls* controls) { } u32 sub_08080278(void) { - u32 width; - u32 height; - u32 tilePos; - u16* bottomMapDataPtr; - u16* topMapDataPtr; - u32 result; - u16* bottomMapDataClonePtr; - u16* topMapDataClonePtr; - u32 indexX; - FORCE_REGISTER(u32 indexY, r10); - int iVar10; - u16* ptr1; - u32 tmp; + u16* ptr1 = (u16*)gUnk_02022830; + u16* mapBottomData = gMapBottom.mapData; + u16* mapTopData = gMapTop.mapData; + u16* mapBottomDataClone = gMapBottom.mapDataClone; + u16* mapTopDataClone = gMapTop.mapDataClone; + u32 width = gRoomControls.width >> 4; + u32 height = (gRoomControls.height >> 4) << 6; - ptr1 = gUnk_02022830; - width = gRoomControls.width >> 4; - height = (gRoomControls.height >> 4) << 6; - result = 0; - indexY = 0; - if (result < height) { - iVar10 = 0; - do { - indexX = 0; - if (indexX < width) { - topMapDataPtr = (u16*)((int)gMapTop.mapData + iVar10); - topMapDataClonePtr = (u16*)((int)gMapTop.mapDataClone + iVar10); - bottomMapDataPtr = (u16*)((int)gMapBottom.mapData + iVar10); - bottomMapDataClonePtr = (u16*)((int)gMapBottom.mapDataClone + iVar10); - while (indexX < width) { - tilePos = indexY + indexX; - if ((bottomMapDataClonePtr[0] != bottomMapDataPtr[0]) && (bottomMapDataPtr[0] < 0x4000)) { - ptr1[0] = tilePos | 0x4000; - ptr1[1] = bottomMapDataPtr[0]; - ptr1 += 2; - result++; - if (result >= 0x600) { - return result; - } + u32 result; + u32 y, x; + + for (result = 0, y = 0; y < height; y += 0x40) { + for (x = 0; x < width; x++) { + u32 tilePos = y + x; + if (mapBottomDataClone[tilePos] != mapBottomData[tilePos]) { + if (mapBottomData[tilePos] < 0x4000) { + ptr1[0] = tilePos | 0x4000; + ptr1[1] = mapBottomData[tilePos]; + ptr1 += 2; + result++; + if (result >= 0x600) { + return result; } - if ((topMapDataClonePtr[0] != topMapDataPtr[0]) && (topMapDataPtr[0] < 0x4000)) { - ptr1[0] = tilePos | 0x8000; - ptr1[1] = topMapDataPtr[0]; - ptr1 += 2; - result++; - if (result >= 0x800) { - return result; - } - } - topMapDataPtr++; - topMapDataClonePtr++; - bottomMapDataPtr++; - bottomMapDataClonePtr++; - indexX++; } } - iVar10 += 0x80; - indexY += 0x40; - } while (indexY < height); + if (mapTopDataClone[tilePos] != mapTopData[tilePos]) { + if (mapTopData[tilePos] < 0x4000) { + ptr1[0] = tilePos | 0x8000; + ptr1[1] = mapTopData[tilePos]; + ptr1 += 2; + result++; + if (result >= 0x800) { + return result; + } + } + } + } } return result; }