Document vars in TeachyTvLoadBg3Map

This commit is contained in:
PikalaxALT
2019-06-11 07:00:08 -04:00
parent aa49880006
commit c68d497288
+39 -43
View File
@@ -1218,71 +1218,67 @@ void TeachyTvRestorePlayerPartyCallback(void)
void TeachyTvLoadBg3Map(u16 *buffer) void TeachyTvLoadBg3Map(u16 *buffer)
{ {
u16 * r7; u16 * bgTilesBuffer;
u8 * r5; u8 * mapTilesRowBuffer;
u16 r4, r2, r3; u16 i, j, k;
u16 r4_1; u16 currentBlockIdx;
void * sp08; void * tilesetsBuffer;
void * sp0C; void * palIndicesBuffer;
u16 sp10 = 0; u16 numMapTilesRows = 0;
const struct MapData *layout = &Route1_Layout; // r8 const struct MapData *layout = &Route1_Layout;
u16 * r6 = AllocZeroed(0x800); u16 * blockIndicesBuffer = AllocZeroed(0x800);
sp08 = AllocZeroed(0x8000); tilesetsBuffer = AllocZeroed(0x8000);
sp0C = Alloc(16); palIndicesBuffer = Alloc(16);
memset(sp0C, 0xFF, 16); memset(palIndicesBuffer, 0xFF, 16);
TeachyTvLoadMapTilesetToBuffer(layout->primaryTileset, sp08, 0x280); TeachyTvLoadMapTilesetToBuffer(layout->primaryTileset, tilesetsBuffer, 0x280);
TeachyTvLoadMapTilesetToBuffer(layout->secondaryTileset, sp08 + 0x5000, 0x180); TeachyTvLoadMapTilesetToBuffer(layout->secondaryTileset, tilesetsBuffer + 0x5000, 0x180);
for (r4 = 0; r4 < 9; r4++) for (i = 0; i < 9; i++)
{ {
// sp+18 = r4 + 6 for (j = 0; j < 16; j++)
// r10 = r4 << 4
// r9 = r4 << 6
// sp14 <- r4++
for (r2 = 0; r2 < 16; r2++)
{ {
r4_1 = layout->map[8 + (r4 + 6) * layout->width + r2] & 0x3FF; currentBlockIdx = layout->map[8 + (i + 6) * layout->width + j] & 0x3FF;
for (r3 = 0; r3 < (r4 << 4) + r2; r3++) for (k = 0; k < (i << 4) + j; k++)
{ {
if (r6[r3] == 0) if (blockIndicesBuffer[k] == 0)
break; break;
if (r6[r3] == r4_1) if (blockIndicesBuffer[k] == currentBlockIdx)
break; break;
} }
if (r6[r3] == 0) if (blockIndicesBuffer[k] == 0)
{ {
r6[r3] = r4_1; blockIndicesBuffer[k] = currentBlockIdx;
sp10++; numMapTilesRows++;
} }
TeachyTvPushBackNewMapPalIndexArrayEntry(layout, &buffer[64 * r4 + 2 * r2], sp0C, r4_1, r3); TeachyTvPushBackNewMapPalIndexArrayEntry(layout, &buffer[64 * i + 2 * j], palIndicesBuffer, currentBlockIdx, k);
} }
} }
r7 = Alloc(sp10 * 0x80); bgTilesBuffer = Alloc(numMapTilesRows * 0x80);
r5 = Alloc(0x80); mapTilesRowBuffer = Alloc(0x80);
for (r4 = 0; r4 < sp10; r4++) for (i = 0; i < numMapTilesRows; i++)
{ {
memset(r5, 0, 0x80); memset(mapTilesRowBuffer, 0, 0x80);
if (r6[r4] < 0x280) if (blockIndicesBuffer[i] < 0x280)
{ {
TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->primaryTileset->metatiles + r6[r4] * 16, r5, sp08); TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->primaryTileset->metatiles + blockIndicesBuffer[i] * 16, mapTilesRowBuffer, tilesetsBuffer);
} }
else else
{ {
TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->secondaryTileset->metatiles + (r6[r4] - 0x280) * 16, r5, sp08); TeachyTvComputeMapTilesFromTilesetAndMetaTiles(layout->secondaryTileset->metatiles + (blockIndicesBuffer[i] - 0x280) * 16, mapTilesRowBuffer, tilesetsBuffer);
} }
CpuFastCopy(r5, r7 + r4 * 0x40, 0x80); CpuFastCopy(mapTilesRowBuffer, bgTilesBuffer + i * 0x40, 0x80);
} }
LoadBgTiles(3, r7, sp10 * 0x80, 0); LoadBgTiles(3, bgTilesBuffer, numMapTilesRows * 0x80, 0);
TeachyTvLoadMapPalette(layout, sp0C); TeachyTvLoadMapPalette(layout, palIndicesBuffer);
Free(r5); Free(mapTilesRowBuffer);
Free(r7); Free(bgTilesBuffer);
Free(sp0C); Free(palIndicesBuffer);
Free(sp08); Free(tilesetsBuffer);
Free(r6); Free(blockIndicesBuffer);
} }
void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u16 size) void TeachyTvLoadMapTilesetToBuffer(struct Tileset *ts, u8 *dstBuffer, u16 size)