Adrien Destugues | 1180ce9 | 2013-03-17 07:49:36 +0000 | [diff] [blame^] | 1 | #include "effect.h" |
| 2 | |
| 3 | #include "../libdemo/trig.h" |
| 4 | |
| 5 | uint8_t backbuffer[256]; |
| 6 | const uint8_t colors[] __attribute__((section("hibyte"))) = { |
| 7 | // ICE |
| 8 | 0x00, 0x04, 0x44, 0x4C, 0xCC, 0xC6, 0x66, 0x6E, |
| 9 | 0xEE, 0xE7, 0x77, 0x7D, 0xDD, 0xD5, 0x55, /*0x50,*/ |
| 10 | |
| 11 | // RAINBOW |
| 12 | /*0x55,*/ 0x54, 0x44, 0x46, 0x66, 0x62, 0x22, 0x20, |
| 13 | 0x00, 0x01, 0x11, 0x13, 0x33, 0x37, 0x77, /*0x75,*/ |
| 14 | |
| 15 | // WHITE |
| 16 | /*0x77,*/ 0x7D, 0xDD, 0xDC, 0xCC, 0xCE, 0xEE, 0xEA, |
| 17 | 0xAA, 0xA8, 0x88, 0x89, 0x99, 0x9B, 0xBB, /*0xB7,*/ |
| 18 | |
| 19 | // APPLES |
| 20 | /*0xBB,*/ 0xB7, 0x77, 0x79, 0x99, 0x91, 0x11, 0x10, |
| 21 | 0x00, 0x02, 0x22, 0x23, 0x33, 0x3A, 0xAA, 0xAB, |
| 22 | |
| 23 | 0xBB, 0xB3, 0x33, 0x32, 0x22, 0x20, |
| 24 | // FIRE |
| 25 | /* |
| 26 | 0x11, 0x1F, 0xFF, 0xFD, 0xDD, 0xD9, 0x99, 0x9B, |
| 27 | 0xBB, 0xB3, 0x33, 0x39, 0x99, 0x9F, 0xFF, 0xF1,*/ |
| 28 | |
| 29 | 0x00, 0x04, 0x44, 0x4C, 0xCC, 0xC6, 0x66, 0x6E, |
| 30 | 0xEE, 0xE7, 0x77, 0x7D, 0xDD, 0xD5, 0x55, 0x54, |
| 31 | 0x44, 0x46, 0x66, 0x62, 0x22, 0x20, 0x00, 0x01, |
| 32 | 0x11, 0x13, 0x33, 0x37, 0x77, 0x7D, 0xDD, 0xDC, |
| 33 | 0xCC, 0xCE, 0xEE, 0xEA, 0xAA, 0xA8, 0x88, 0x89, |
| 34 | 0x99, 0x9B, 0xBB, 0xB7, 0x77, 0x79, 0x99, 0x91, |
| 35 | 0x11, 0x10, 0x00, 0x02, 0x22, 0x23, 0x33, 0x3A, |
| 36 | 0xAA, 0xAB, 0xBB, 0xB3, 0x33, 0x32, 0x22, 0x20, |
| 37 | 0x00, 0x04, 0x44, 0x4C, 0xCC, 0xC6, 0x66, 0x6E, |
| 38 | 0xEE, 0xE7, 0x77, 0x7D, 0xDD, 0xD5, 0x55, 0x54, |
| 39 | 0x44, 0x46, 0x66, 0x62, 0x22, 0x20, 0x00, 0x01, |
| 40 | 0x11, 0x13, 0x33, 0x37, 0x77, 0x7D, 0xDD, 0xDC, |
| 41 | 0xCC, 0xCE, 0xEE, 0xEA, 0xAA, 0xA8, 0x88, 0x89, |
| 42 | 0x99, 0x9B, 0xBB, 0xB7, 0x77, 0x79, 0x99, 0x91, |
| 43 | 0x11, 0x10, 0x00, 0x02, 0x22, 0x23, 0x33, 0x3A, |
| 44 | 0xAA, 0xAB, 0xBB, 0xB3, 0x33, 0x32, 0x22, 0x20, |
| 45 | 0x00, 0x04, 0x44, 0x4C, 0xCC, 0xC6, 0x66, 0x6E, |
| 46 | 0xEE, 0xE7, 0x77, 0x7D, 0xDD, 0xD5, 0x55, 0x54, |
| 47 | 0x44, 0x46, 0x66, 0x62, 0x22, 0x20, 0x00, 0x01, |
| 48 | 0x11, 0x13, 0x33, 0x37, 0x77, 0x7D, 0xDD, 0xDC, |
| 49 | 0xCC, 0xCE, 0xEE, 0xEA, 0xAA, 0xA8, 0x88, 0x89, |
| 50 | 0x99, 0x9B, 0xBB, 0xB7, 0x77, 0x79, 0x99, 0x91, |
| 51 | 0x11, 0x10, 0x00, 0x02, 0x22, 0x23, 0x33, 0x3A, |
| 52 | 0xAA, 0xAB, 0xBB, 0xB3, 0x33, 0x32, 0x22, 0x20, |
| 53 | |
| 54 | 0x00, 0x04, 0x44, 0x4C, 0xCC, 0xC6, 0x66, 0x6E, |
| 55 | 0xEE, 0xE7, 0x77, 0x7D, 0xDD, 0xD5, 0x55, 0x50 |
| 56 | }; |
| 57 | |
| 58 | extern unsigned char SIN[256]; |
| 59 | |
| 60 | static void decrunch() |
| 61 | { |
| 62 | asm( |
| 63 | " LDX #color_plasma-1 \n" |
| 64 | " LDU #forme_plasma-1 \n" |
| 65 | " LBSR decrunchpic \n" |
| 66 | :::"x","u", "y"); |
| 67 | } |
| 68 | |
| 69 | void init() |
| 70 | { |
| 71 | int x,y,v; |
| 72 | |
| 73 | // INIT ONCE |
| 74 | for(y = 0; y < 256; y++) |
| 75 | { |
| 76 | backbuffer[y] = (SIN[y] / 32); |
| 77 | } |
| 78 | |
| 79 | polysine(); |
| 80 | |
| 81 | // EACHTIME |
| 82 | |
| 83 | decrunch(); |
| 84 | forme(); |
| 85 | v = 0x55; |
| 86 | for(y = 40 * 40; y < 139 * 40; y+=40) |
| 87 | { |
| 88 | for(x = 10; x < 30; x++) |
| 89 | screen[y + x] = v; |
| 90 | v ^= 0xFF; // or rotate |
| 91 | } |
| 92 | couleur(); |
| 93 | |
| 94 | asm(" LDA #_draw/256 \n" |
| 95 | " TFR A,DP \n" |
| 96 | ::: "a" |
| 97 | ); |
| 98 | } |
| 99 | |