summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2023-12-28 15:07:11 +0100
committeroctorock <79596758+octorock@users.noreply.github.com>2023-12-28 15:07:11 +0100
commit957da774e4c34100e0bd352b1570af02bb7f7521 (patch)
tree58590967211a5c8263d5e701d330f31c98691c8c
parent768efa50b308be03737d7eae2a1069627ea48b79 (diff)
parent5fb324d54a4f05ed72334938a658c94f6517cddc (diff)
Merge branch 'master' into tilemap-docs
-rw-r--r--src/color.c2
-rw-r--r--src/scroll.c85
2 files changed, 33 insertions, 54 deletions
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;
- }
+ }
+ }
+ 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;
}
- topMapDataPtr++;
- topMapDataClonePtr++;
- bottomMapDataPtr++;
- bottomMapDataClonePtr++;
- indexX++;
}
}
- iVar10 += 0x80;
- indexY += 0x40;
- } while (indexY < height);
+ }
}
return result;
}