map_expand: optimize the C in ORCA (runs about 10x faster due to reduced multiplies etc)

This commit is contained in:
dwsJason 2018-12-01 22:00:40 -05:00
parent a0debf876e
commit 541fe9990c
1 changed files with 27 additions and 17 deletions

View File

@ -68,26 +68,36 @@ static void map_eflg_expand(U8);
void void
map_expand(void) map_expand(void)
{ {
U8 i, j, k, l; U16 i, j, k, l;
U8 row, col; U16 col;
U16 pbnum; U16 pbnum;
pbnum = map_submaps[game_submap].bnum + ((2 * map_frow) & 0xfff8); U8* pMap_map = &map_map[0][0];
row = col = 0;
for (i = 0; i < 0x0b; i++) { /* 0x0b rows of blocks */ U8* pBlock;
for (j = 0; j < 0x08; j++) { /* 0x08 blocks per row */
for (k = 0, l = 0; k < 0x04; k++) { /* expand one block */ pbnum = map_submaps[game_submap].bnum + ((2 * map_frow) & 0xfff8);
map_map[row][col++] = map_blocks[map_bnums[pbnum]][l++]; col = 0;
map_map[row][col++] = map_blocks[map_bnums[pbnum]][l++];
map_map[row][col++] = map_blocks[map_bnums[pbnum]][l++]; for (i = 0; i < 0x0b; i++)
map_map[row][col] = map_blocks[map_bnums[pbnum]][l++]; { /* 0x0b rows of blocks */
row += 1; col -= 3; for (j = 0; j < 0x08; j++)
} { /* 0x08 blocks per row */
row -= 4; col += 4;
pbnum++; pBlock = &map_blocks[map_bnums[pbnum]][0];
}
row += 4; col = 0; for (k = 0, l = 0; k < 0x04; k++)
{ /* expand one block */
pMap_map[col++] = pBlock[l++];
pMap_map[col++] = pBlock[l++];
pMap_map[col++] = pBlock[l++];
pMap_map[col] = pBlock[l++];
pMap_map+=32; col -= 3;
}
pMap_map -= (128); col += 4;
pbnum++;
}
pMap_map += 128; col = 0;
} }
} }