summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp')
-rw-r--r--c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp160
1 files changed, 0 insertions, 160 deletions
diff --git a/c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp b/c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp
deleted file mode 100644
index 58572cd366..0000000000
--- a/c/src/lib/libbsp/arm/nds/tools/ndstool/source/logo.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-costs per 4 pixels: (# = black)
-
-1 bit:
-----
-
-4 bits:
-#---
-##--
---##
-####
-
-5 bits:
----#
-#-##
--###
--#--
---#-
-
-6 bits:
-#-#-
--##-
-###-
-#--#
--#-#
-##-#
-*/
-
-#include <stdio.h>
-
-void LogoPackBits(unsigned char *srcp, unsigned char *destp)
-{
- unsigned int destbit = 0;
- unsigned int destvalue = 0;
- unsigned int d = 0;
- for (unsigned int s=0; s<1664; s++)
- {
- if (srcp[s]) destvalue |= 1<<destbit;
- if (++destbit == 8)
- {
- destp[d++] = destvalue;
- destbit = 0;
- destvalue = 0;
- }
- }
-}
-
-struct LogoPattern
-{
- unsigned int value;
- unsigned int bits;
-} logoPatterns[16] =
-{
- {0x01, 1}, {0x06, 4}, {0x0A, 5}, {0x04, 4},
- {0x02, 5}, {0x1E, 6}, {0x16, 6}, {0x06, 6},
- {0x06, 5}, {0x1F, 6}, {0x17, 6}, {0x07, 6},
- {0x02, 4}, {0x0E, 5}, {0x07, 5}, {0x00, 4},
-};
-
-int LogoCompress(unsigned char *src, unsigned char *dst)
-{
- unsigned int data_out = 0;
- unsigned int outbit = 31;
- unsigned int outbitcnt = 0;
-
- for (int i=0; i<212; i++)
- {
- unsigned int data = *src++;
- for (int j=0; j<8; j+=4)
- {
- LogoPattern &lh = logoPatterns[data >> j & 0xF];
- outbitcnt += lh.bits;
- for (int b=lh.bits-1; b>=0; b--)
- {
- data_out |= (lh.value >> b & 1) << outbit;
- if (outbit == 0)
- {
- if (outbitcnt <= 156*8)
- {
- *dst++ = data_out >> 0;
- *dst++ = data_out >> 8;
- *dst++ = data_out >> 16;
- *dst++ = data_out >> 24;
- }
- outbit = 31;
- data_out = 0;
- }
- else
- {
- outbit--;
- }
- }
- }
- }
-
- if (outbit != 31)
- {
- if (outbitcnt <= 156*8)
- {
- *dst++ = data_out >> 0;
- *dst++ = data_out >> 8;
- *dst++ = data_out >> 16;
- *dst++ = data_out >> 24;
- }
- }
-
- return 156*8 - outbitcnt;
-};
-
-void LogoDiff(unsigned char *srcp, unsigned char *dstp)
-{
- unsigned int *intp_dst = (unsigned int *)dstp;
- *intp_dst++ = 0xD0 << 8 | 0x80 | 2; // header
-
- unsigned short *shortp_dst = (unsigned short *)intp_dst;
- unsigned short *shortp_src = (unsigned short *)srcp;
- unsigned short prev = 0;
- for (unsigned int i=0; i<0xD0; i+=2)
- {
- *shortp_dst++ = *shortp_src - prev;
- prev = *shortp_src++;
- }
-}
-
-int LogoConvert(unsigned char *srcp, unsigned char *dstp, unsigned char white)
-{
- // convert to tiles
- unsigned char tiles[1664];
- for (int ty=0; ty<2; ty++)
- {
- for (int y=0; y<8; y++)
- {
- for (int tx=0; tx<13; tx++)
- {
- for (int x=0; x<8; x++)
- {
- tiles[(ty*13 + tx)*64 + y*8 + x] = (*srcp++ == white) ? 0 : 1;
- }
- }
- }
- }
-
- // bitpack
- unsigned char bitpacked[1664/8];
- LogoPackBits(tiles, bitpacked);
-
- // diff
- unsigned char diffed[4 + 1664/8];
- LogoDiff(bitpacked, diffed);
-
- // compress
- int r = LogoCompress(diffed, dstp);
- if (r < 0)
- {
- fprintf(stderr, "Compressed logo is %u bit(s) too big. Please simplify.\n", -r);
- return -1;
- }
-
- return 0;
-}