nonacc mode removal, function return value audit
[picodrive.git] / Pico / Misc.c
index 38c381d..944e4c8 100644 (file)
@@ -85,48 +85,6 @@ const unsigned char hcounts_32[] = {
 0x0a,0x0b,0x0b,0x0b,0x0c,0x0c,0x0c,0x0d,\r
 };\r
 \r
-// vcounter values for PicoFrameSimple\r
-const unsigned short vcounts[] = {\r
-  0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,\r
-  8,  8,  9,  9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16,\r
- 16, 17, 17, 18, 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, 24, 24,\r
- 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 31, 31, 32, 32, 33,\r
- 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41,\r
- 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49,\r
- 50, 50, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58,\r
- 58, 59, 59, 60, 60, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66,\r
- 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 73, 73, 74, 74, 75,\r
- 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 83, 83,\r
- 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91,\r
- 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99,100,\r
-100,101,101,102,102,103,104,104,105,105,106,106,107,107,108,108,\r
-109,109,110,110,111,111,112,112,113,114,114,115,115,116,116,117,\r
-117,118,118,119,119,120,120,121,121,122,122,123,124,124,125,125,\r
-126,126,127,127,128,128,129,129,130,130,131,131,132,132,133,133,\r
-134,135,135,136,136,137,137,138,138,139,139,140,140,141,141,142,\r
-142,143,143,144,145,145,146,146,147,147,148,148,149,149,150,150,\r
-151,151,152,152,153,153,154,155,155,156,156,157,157,158,158,159,\r
-159,160,160,161,161,162,162,163,163,164,164,165,166,166,167,167,\r
-168,168,169,169,170,170,171,171,172,172,173,173,174,174,175,176,\r
-176,177,177,178,178,179,179,180,180,181,181,182,182,183,183,184,\r
-184,185,186,186,187,187,188,188,189,189,190,190,191,191,192,192,\r
-193,193,194,194,195,195,196,197,197,198,198,199,199,200,200,201,\r
-201,202,202,203,203,204,204,205,205,206,207,207,208,208,209,209,\r
-210,210,211,211,212,212,213,213,214,214,215,215,216,217,217,218,\r
-218,219,219,220,220,221,221,222,222,223,223,224,224,225,225,226,\r
-226,227,228,228,229,229,230,230,231,231,232,232,233,233,234,234,\r
-235,235,236,236,237,238,238,239,239,240,240,241,241,242,242,243,\r
-243,244,244,245,245,246,246,247,248,248,249,249,250,250,251,251,\r
-252,252,253,253,254,254,255,255,256,256,257,257,258,259,259,260,\r
-260,261,261,262,262,263,263,264,264,265,265,266,266,267,267,268,\r
-269,269,270,270,271,271,272,272,273,273,274,274,275,275,276,276,\r
-277,277,278,279,279,280,280,281,281,282,282,283,283,284,284,285,\r
-285,286,286,287,287,288,288,289,290,290,291,291,292,292,293,293,\r
-294,294,295,295,296,296,297,297,298,298,299,300,300,301,301,302,\r
-302,303,303,304,304,305,305,306,306,307,307,308,308,309,310,310,\r
-311,311,311,311,\r
-};\r
-\r
 \r
 // rarely used EEPROM SRAM code\r
 // known games which use this:\r
@@ -316,8 +274,30 @@ PICO_INTERNAL void SRAMUpdPending(unsigned int a, unsigned int d)
 \r
 \r
 #ifndef _ASM_MISC_C\r
+typedef struct\r
+{\r
+       int b0;\r
+       int b1;\r
+       int b2;\r
+       int b3;\r
+       int b4;\r
+       int b5;\r
+       int b6;\r
+       int b7;\r
+} intblock;\r
+\r
 PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count)\r
 {\r
+       if ((((int)dest | (int)src) & 3) == 0)\r
+       {\r
+               if (count >= 32) {\r
+                       memcpy32((int *)dest, (int *)src, count/2);\r
+                       count&=1;\r
+               } else {\r
+                       for (; count >= 2; count -= 2, dest+=2, src+=2)\r
+                               *(int *)dest = *(int *)src;\r
+               }\r
+       }\r
        while (count--)\r
                *dest++ = *src++;\r
 }\r
@@ -331,9 +311,15 @@ PICO_INTERNAL_ASM void memcpy16bswap(unsigned short *dest, void *src, int count)
                *dest++ = (src_[0] << 8) | src_[1];\r
 }\r
 \r
-\r
+#ifndef _ASM_MISC_C_AMIPS\r
 PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count)\r
 {\r
+       intblock *bd = (intblock *) dest, *bs = (intblock *) src;\r
+\r
+       for (; count >= sizeof(*bd)/4; count -= sizeof(*bd)/4)\r
+               *bd++ = *bs++;\r
+\r
+       dest = (int *)bd; src = (int *)bs;\r
        while (count--)\r
                *dest++ = *src++;\r
 }\r
@@ -341,8 +327,14 @@ PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count)
 \r
 PICO_INTERNAL_ASM void memset32(int *dest, int c, int count)\r
 {\r
+       for (; count >= 8; count -= 8, dest += 8)\r
+               dest[0] = dest[1] = dest[2] = dest[3] =\r
+               dest[4] = dest[5] = dest[6] = dest[7] = c;\r
+\r
        while (count--)\r
                *dest++ = c;\r
 }\r
+void memset32_uncached(int *dest, int c, int count) { memset32(dest, c, count); }\r
+#endif\r
 #endif\r
 \r