mirror of
https://github.com/pret/pokered.git
synced 2024-10-22 22:55:31 +00:00
Rewrite transpose_tiles
to be in-place (#475)
This commit is contained in:
parent
a8f26148e3
commit
a6715ef164
1 changed files with 10 additions and 7 deletions
|
@ -44,15 +44,18 @@ int read_bit(uint8_t *data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void transpose_tiles(uint8_t *data, int width) {
|
void transpose_tiles(uint8_t *data, int width) {
|
||||||
int size = width * width * 0x10;
|
int size = width * width;
|
||||||
uint8_t *transposed = xmalloc(size);
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
int j = (i / 0x10) * width * 0x10;
|
int j = (i * width + i / width) % size;
|
||||||
j = (j % size) + 0x10 * (j / size) + (i % 0x10);
|
if (i < j) {
|
||||||
transposed[j] = data[i];
|
uint8_t tmp[0x10];
|
||||||
|
uint8_t *p = data + i * COUNTOF(tmp);
|
||||||
|
uint8_t *q = data + j * COUNTOF(tmp);
|
||||||
|
memcpy(tmp, p, COUNTOF(tmp));
|
||||||
|
memcpy(p, q, COUNTOF(tmp));
|
||||||
|
memcpy(q, tmp, COUNTOF(tmp));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
memcpy(data, transposed, size);
|
|
||||||
free(transposed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void compress_plane(uint8_t *plane, int width) {
|
void compress_plane(uint8_t *plane, int width) {
|
||||||
|
|
Loading…
Reference in a new issue