idk i broke lots of things
This commit is contained in:
parent
ff27e662c1
commit
3a5151fed9
@ -35,7 +35,8 @@ int main()
|
||||
std::string path_images = "../assets/out/out_";
|
||||
std::string path_test = "../assets/out/out_3667.bmp";
|
||||
|
||||
std::vector<int> usingRLE = {177, 178, 179, 220, 231, 232, 237, 238, 239, 240, 241, 263, 264, 409, 681, 682, 735, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 770, 771, 772, 773, 774, 775, 776, 777, 779, 780, 783, 784, 785, 786, 787, 788, 789, 790, 791, 798, 799, 800, 801, 802, 803, 804, 805, 807, 808, 809, 811, 812, 813, 814, 815, 816, 817, 818, 819, 821, 822, 823, 824, 825, 826, 827, 828, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 897, 898, 899, 900, 908, 909, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 925, 926, 927, 928, 929, 930, 931, 934, 935, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1154, 1155, 1156, 1157, 1158, 1245, 1247, 1248, 1249, 1250, 1251, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1459, 1460, 1461, 1462, 1463, 1465, 1466, 1467, 1468, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1493, 1494, 1495, 1496, 1501, 1504, 1507, 1510, 1513, 1515, 1516, 1517, 1520, 1521, 1522, 1524, 1525, 1526, 1528, 1529, 1530, 1531, 1532, 1533, 1535, 1536, 1537, 1538, 1539, 1541, 1542, 1547, 1549, 1551, 1552, 1553, 1554, 1555, 1557, 1559, 1560, 1561, 1562, 1563, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1582, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1699, 1701, 1702, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1763, 1764, 1765, 1766, 1787, 1789, 1808, 1809, 1810, 1823, 1834, 1835, 1836, 1837, 1843, 1876, 1892, 1893, 1894, 1897, 1901, 1904, 1905, 1906, 1907, 1908, 1910, 1911, 1969, 2090, 2091, 2092, 2128, 2129, 2180, 2181, 2182, 2195, 2196, 2197, 2199, 2201, 2281, 2282, 2286, 2287, 2295, 2300, 2309, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2343, 2345, 2346, 2347, 2349, 2670, 2727, 2729, 2730, 2812, 2831, 2833, 2850, 2851, 3140, 3141, 3142, 3143, 3144, 3146, 3147, 3148, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3182, 3183, 3184, 3185, 3186, 3187, 3189, 3190, 3255};
|
||||
std::vector<int> usingRLE = {840, 841, 842, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1041, 1459, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1626, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1664, 1666, 1719, 1720, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 3191, 3192, 3193, 3196, 3197, 3198, 3225, 3227, 3228, 3229};
|
||||
// std::vector<int> usingRLE = {177, 178, 179, 236, 237, 238, 239, 240, 265, 754, 755, 756, 757, 758, 759, 760, 761, 765, 767, 778, 781, 785, 786, 788, 789, 806, 820, 839, 840, 841, 842, 853, 854, 855, 856, 857, 858, 859, 860, 915, 918, 924, 932, 933, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 1159, 1246, 1249, 1250, 1251, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1458, 1461, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1502, 1503, 1505, 1506, 1523, 1534, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1636, 1642, 1643, 1645, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1698, 1700, 1703, 1723, 1724, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1755, 1756, 1757, 1758, 1759, 1767, 1834, 1903, 1909, 2090, 2091, 2092, 2196, 2198, 2200, 2281, 2282, 2286, 2295, 2300, 2309, 2348, 2392, 2728, 2832, 2840, 2849, 2973, 3149, 3150, 3151, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3168, 3170, 3173, 3174, 3175, 3176, 3177, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3189, 3255, 177, 178, 179, 220, 231, 232, 237, 238, 239, 240, 241, 263, 264, 409, 681, 682, 735, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 770, 771, 772, 773, 774, 775, 776, 777, 779, 780, 783, 784, 785, 786, 787, 788, 789, 790, 791, 798, 799, 800, 801, 802, 803, 804, 805, 807, 808, 809, 811, 812, 813, 814, 815, 816, 817, 818, 819, 821, 822, 823, 824, 825, 826, 827, 828, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 897, 898, 899, 900, 908, 909, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 925, 926, 927, 928, 929, 930, 931, 934, 935, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1154, 1155, 1156, 1157, 1158, 1245, 1247, 1248, 1249, 1250, 1251, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1459, 1460, 1461, 1462, 1463, 1465, 1466, 1467, 1468, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1493, 1494, 1495, 1496, 1501, 1504, 1507, 1510, 1513, 1515, 1516, 1517, 1520, 1521, 1522, 1524, 1525, 1526, 1528, 1529, 1530, 1531, 1532, 1533, 1535, 1536, 1537, 1538, 1539, 1541, 1542, 1547, 1549, 1551, 1552, 1553, 1554, 1555, 1557, 1559, 1560, 1561, 1562, 1563, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1582, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1699, 1701, 1702, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1763, 1764, 1765, 1766, 1787, 1789, 1808, 1809, 1810, 1823, 1834, 1835, 1836, 1837, 1843, 1876, 1892, 1893, 1894, 1897, 1901, 1904, 1905, 1906, 1907, 1908, 1910, 1911, 1969, 2090, 2091, 2092, 2128, 2129, 2180, 2181, 2182, 2195, 2196, 2197, 2199, 2201, 2281, 2282, 2286, 2287, 2295, 2300, 2309, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2343, 2345, 2346, 2347, 2349, 2670, 2727, 2729, 2730, 2812, 2831, 2833, 2850, 2851, 3140, 3141, 3142, 3143, 3144, 3146, 3147, 3148, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3182, 3183, 3184, 3185, 3186, 3187, 3189, 3190, 3255};
|
||||
|
||||
int frame_total = -1;
|
||||
|
||||
@ -144,12 +145,16 @@ int main()
|
||||
|
||||
if (isRLE)
|
||||
{
|
||||
char *temp = RLE_Code(batch_map, 256*192*4, (int*)&size);
|
||||
size2 = (size << 1) | 0x01;
|
||||
memcpy(batch_map_compress, temp, size);
|
||||
free(temp);
|
||||
// char *temp = RLE_Code(batch_map, 256*192*4, (int*)&size);
|
||||
// size2 = (size << 1) | 0x01;
|
||||
// memcpy(batch_map_compress, temp, size);
|
||||
// free(temp);
|
||||
|
||||
printf("rle > ");
|
||||
// printf("rle > ");
|
||||
size = 256*192*4;
|
||||
size2 = (size << 1) | 0x01;
|
||||
memcpy(batch_map_compress, batch_map, size);
|
||||
printf("raw > ");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
135
src/main.cpp
135
src/main.cpp
@ -8,17 +8,19 @@
|
||||
#include <nds/arm9/cache.h>
|
||||
#include <nds/arm9/decompress.h>
|
||||
#include <nds/bios.h>
|
||||
#include <nds/debug.h>
|
||||
#include <nds/dma.h>
|
||||
#include <nds/system.h>
|
||||
#include <nds/timers.h>
|
||||
#include <stdio.h>
|
||||
#include <maxmod9.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define TIMER_SPEED (BUS_CLOCK/1024)
|
||||
|
||||
void wait_forever(const char* msg);
|
||||
size_t LoadFile(const char* file, unsigned char **buffer);
|
||||
void readNextBatch(FILE *input, void *output);
|
||||
void readNextBatch(int input, void *output);
|
||||
void readNextMusic(FILE *input, void *output);
|
||||
void vbl_handler();
|
||||
|
||||
@ -72,15 +74,14 @@ public:
|
||||
|
||||
|
||||
|
||||
static uint8_t chunk[256*192*4*7];
|
||||
static uint8_t chunk[256*192*4*9];
|
||||
static int chunk_counter = 0;
|
||||
static CircularQueue queue(7);
|
||||
static FILE *in = NULL;
|
||||
static FILE *in_music = NULL;
|
||||
static CircularQueue queue(9);
|
||||
static int in = -1;
|
||||
static int in_music = -1;
|
||||
static int bgp;
|
||||
|
||||
static uint8_t music_buffer[1024*1000];
|
||||
static CircularQueue music_queue(1000);
|
||||
static int framecount = 0;
|
||||
|
||||
mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats format ) {
|
||||
if(in_music){
|
||||
@ -92,23 +93,21 @@ mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats forma
|
||||
case MM_STREAM_16BIT_STEREO: samplesize = 4; break;
|
||||
}
|
||||
|
||||
dmaCopy(&music_buffer[1024*music_queue.front], dest, 1024);
|
||||
music_queue.pop();
|
||||
|
||||
fprintf(stderr, "music %i/%i\n", music_queue.front, music_queue.current);
|
||||
// dmaCopy(&music_buffer[1024*music_queue.front], dest, 1024);
|
||||
// music_queue.pop();
|
||||
|
||||
|
||||
// fprintf(stderr, "%i %p %i\n", length, dest, format);
|
||||
// int res = fread(music_buffer, 1, length, in_music);
|
||||
// dmaCopy(music_buffer, dest, res);
|
||||
// DC_FlushRange(music_buffer, 1024);
|
||||
// if(res){
|
||||
// length = res;
|
||||
// } else {
|
||||
// mmStreamClose();
|
||||
// fclose(in_music);
|
||||
// length = 0;
|
||||
// }
|
||||
// int res = fread(dest, samplesize, length, in_music);
|
||||
int res = read(in_music, dest, length*samplesize);
|
||||
|
||||
if(res){
|
||||
length = res/samplesize;
|
||||
} else {
|
||||
mmStreamClose();
|
||||
close(in_music);
|
||||
length = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return length;
|
||||
@ -128,11 +127,11 @@ int main(void) {
|
||||
|
||||
nitroFSInit(NULL);
|
||||
|
||||
in = fopen("nitro:/image.bin", "rb");
|
||||
if (in == NULL) wait_forever("cannot load image.bin");
|
||||
in = open("nitro:/image.bin", O_RDONLY);
|
||||
if (in == -1) wait_forever("cannot load image.bin");
|
||||
|
||||
// in_music = fopen("nitro:/music.raw", "rb");
|
||||
// if (in_music == NULL) wait_forever("cannot load music.raw");
|
||||
in_music = open("nitro:/music.raw", O_RDONLY);
|
||||
if (in_music == -1) wait_forever("cannot load music.raw");
|
||||
|
||||
unsigned char* pal = NULL;
|
||||
size_t pal_len = LoadFile("nitro:/palette.bin", &pal);
|
||||
@ -143,8 +142,6 @@ int main(void) {
|
||||
|
||||
// DC_FlushAll();
|
||||
|
||||
// timerStart(1, ClockDivider_1024, TIMER_FREQ_1024(30), music);
|
||||
|
||||
// fprintf(stderr, "start debug\n");
|
||||
// int cframe = 0;
|
||||
// int hframe = 0;
|
||||
@ -158,14 +155,14 @@ int main(void) {
|
||||
// ticks = timerStop(0);
|
||||
// int milis = ((ticks%TIMER_SPEED)*1000) /TIMER_SPEED;
|
||||
|
||||
// if (milis > 60) fprintf(stderr, "%i\n", cframe);
|
||||
// if (milis > 50) fprintf(stderr, "%i\n", cframe);
|
||||
// cframe++;
|
||||
// }
|
||||
|
||||
// fprintf(stderr, "%i\n", hframe);
|
||||
|
||||
|
||||
fseek(in, 0, SEEK_SET);
|
||||
// fseek(in, 0, SEEK_SET);
|
||||
|
||||
fprintf(stderr, "read\n");
|
||||
while(!queue.isFull()) {
|
||||
@ -174,10 +171,21 @@ int main(void) {
|
||||
fprintf(stderr, "read %i\n", queue.rear);
|
||||
}
|
||||
|
||||
while(!music_queue.isFull()) {
|
||||
music_queue.push();
|
||||
readNextMusic(in_music, &music_buffer[1024 * music_queue.rear]);
|
||||
}
|
||||
// while(!music_queue.isFull()) {
|
||||
// music_queue.push();
|
||||
// readNextMusic(in_music, &music_buffer[1024 * music_queue.rear]);
|
||||
// }
|
||||
|
||||
// Reset audio buffers
|
||||
// memset(audioL, 0, sampleSize * 2);
|
||||
// memset(audioR, 0, sampleSize * 2);
|
||||
|
||||
// // Preload 12 audio blocks
|
||||
// for (int i = 0; i < 12; i++) {
|
||||
// fread(&audioL[audioBlock * sampleSize], 1, sampleSize * 2, in_music);
|
||||
// fread(&audioR[audioBlock * sampleSize], 1, sampleSize * 2, in_music);
|
||||
// audioBlock++;
|
||||
// }
|
||||
|
||||
DC_FlushAll();
|
||||
|
||||
@ -190,16 +198,17 @@ int main(void) {
|
||||
|
||||
|
||||
mm_stream mystream;
|
||||
mystream.sampling_rate = 1000;
|
||||
mystream.buffer_length = 1024;
|
||||
mystream.sampling_rate = 22050;
|
||||
mystream.buffer_length = 3200*16;
|
||||
mystream.callback = on_stream_request;
|
||||
mystream.format = MM_STREAM_16BIT_MONO;
|
||||
mystream.timer = MM_TIMER2;
|
||||
mystream.manual = true;
|
||||
// mmStreamOpen( &mystream );
|
||||
|
||||
DC_FlushAll();
|
||||
|
||||
mmStreamOpen( &mystream );
|
||||
|
||||
while(1) {
|
||||
|
||||
irqSet(IRQ_VBLANK, vbl_handler);
|
||||
@ -210,11 +219,13 @@ int main(void) {
|
||||
// fprintf(stderr, "read %i\n", queue.rear);
|
||||
}
|
||||
|
||||
if (!music_queue.isFull()) {
|
||||
music_queue.push();
|
||||
readNextMusic(in_music, &music_buffer[1024 * music_queue.rear]);
|
||||
fprintf(stderr, "read music %i\n", music_queue.rear);
|
||||
}
|
||||
// if (!music_queue.isFull()) {
|
||||
// music_queue.push();
|
||||
// readNextMusic(in_music, &music_buffer[1024 * music_queue.rear]);
|
||||
// fprintf(stderr, "read music %i\n", music_queue.rear);
|
||||
// }
|
||||
|
||||
if (!(framecount % 9)) mmStreamUpdate();
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -222,17 +233,18 @@ int main(void) {
|
||||
|
||||
void vbl_handler()
|
||||
{
|
||||
mmStreamUpdate();
|
||||
// if (queue.isEmpty() && chunk_counter == 0) {
|
||||
// return;
|
||||
// fprintf(stderr, "NO QUEUE!!!!!\n");
|
||||
// }
|
||||
|
||||
if (queue.isEmpty() && chunk_counter == 0) {
|
||||
return;
|
||||
fprintf(stderr, "NO QUEUE!!!!!\n");
|
||||
// DC_FlushRange(&chunk[256*192*4 * queue.front + 256*192*chunk_counter], 256*192*4);
|
||||
dmaCopyAsynch(&chunk[256*192*4 * queue.front + 256*192*chunk_counter], bgGetGfxPtr(bgp), 256*192);
|
||||
if (queue.current < queue.size*0.4) {
|
||||
fprintf(stderr, "count: %i, %i\n ", chunk_counter, queue.current);
|
||||
}
|
||||
|
||||
DC_FlushRange(&chunk[256*192*4 * queue.front + 256*192*chunk_counter], 256*192*4);
|
||||
dmaCopy(&chunk[256*192*4 * queue.front + 256*192*chunk_counter], bgGetGfxPtr(bgp), 256*192);
|
||||
// fprintf(stderr, "count: %i, %i\n ", chunk_counter, queue.current);
|
||||
chunk_counter++;
|
||||
framecount++;
|
||||
|
||||
if (chunk_counter >= 4) {
|
||||
if (!queue.isEmpty()) {
|
||||
@ -252,25 +264,36 @@ void readNextMusic(FILE *input, void *output)
|
||||
fread(output, 1024, 1, input);
|
||||
}
|
||||
|
||||
void readNextBatch(FILE *input, void *output)
|
||||
static int chunk_count = 0;
|
||||
void readNextBatch(int input, void *output)
|
||||
{
|
||||
uint32_t chunk_len;
|
||||
fread(&chunk_len, sizeof(uint32_t), 1, input);
|
||||
// fread(&chunk_len, sizeof(uint32_t), 1, input);
|
||||
read(input, &chunk_len, sizeof(uint32_t));
|
||||
|
||||
bool isRLE = chunk_len & 0x01;
|
||||
chunk_len = chunk_len >> 1;
|
||||
|
||||
fread(buffer, 1, chunk_len, input);
|
||||
DC_FlushRange(buffer, 256*192*4);
|
||||
if (queue.current < queue.size*0.4)
|
||||
fprintf(stderr, "%i\n ", chunk_count);
|
||||
|
||||
|
||||
|
||||
|
||||
if (isRLE)
|
||||
{
|
||||
decompress(buffer, output, RLE);
|
||||
read(input, output, chunk_len);
|
||||
// fread(output, 1, chunk_len, input);
|
||||
// decompress(buffer, output, RLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// fread(buffer, 1, chunk_len, input);
|
||||
read(input, buffer, chunk_len);
|
||||
fastlz_decompress(buffer, chunk_len, output, 256*192*4);
|
||||
}
|
||||
chunk_count++;
|
||||
// DC_FlushRange(output, 256*192*4);
|
||||
}
|
||||
|
||||
size_t LoadFile(const char* file, unsigned char **buffer)
|
||||
@ -298,7 +321,7 @@ size_t LoadFile(const char* file, unsigned char **buffer)
|
||||
|
||||
void wait_forever(const char* msg)
|
||||
{
|
||||
fprintf(stdout, "%s\n", msg);
|
||||
fprintf(stderr, "%s\n", msg);
|
||||
fprintf(stderr, "%s\n", msg);
|
||||
while (1) swiWaitForVBlank();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user