|
|
| version 1.1.1.1, 2003/10/16 17:58:52 | version 1.5, 2005/02/16 09:31:55 |
|---|---|
| Line 8 | Line 8 |
| #include "palettes.h" | #include "palettes.h" |
| DCLOCK_T dclock; | _DCLOCK dclock; |
| BYTE dclock_dat[(DCLOCK_X * DCLOCK_Y / 8) + 4]; | DCLOCKPAL dclockpal; |
| RGB32 dclock_pal[4]; | |
| static BYTE dclocky[13] = {0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3}; | |
| #define DCLOCKY_MAX 13 | |
| static DWORD outcolors[4][16]; | |
| static UINT16 outcolors16[4]; | |
| // ------------------------------------------------------------------ font1 | // ------------------------------------------------------------------ font1 |
| static BYTE clockchr1[11][16] = { | static const UINT8 clockchr1[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78,}, | {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78,}, |
| {0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,}, | {0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,}, |
| Line 34 static BYTE clockchr1[11][16] = { | Line 27 static BYTE clockchr1[11][16] = { |
| {0x78, 0xcc, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0xcc, 0x78,}, | {0x78, 0xcc, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0xcc, 0x78,}, |
| {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70,}}; | {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70,}}; |
| static DCLOCK_POS dclockpos1[6] = { | static const DCPOS dclockpos1[6] = { |
| {&dclock_dat[0], (WORD)(~0x00fc), 0, 0}, | {dclock.dat + 0, (UINT16)(~0x00fc), 0, 0}, |
| {&dclock_dat[0], (WORD)(~0xf801), 7, 0}, | {dclock.dat + 0, (UINT16)(~0xf801), 7, 0}, |
| {&dclock_dat[2], (WORD)(~0x801f), 3, 0}, | {dclock.dat + 2, (UINT16)(~0x801f), 3, 0}, |
| {&dclock_dat[3], (WORD)(~0x003f), 2, 0}, | {dclock.dat + 3, (UINT16)(~0x003f), 2, 0}, |
| {&dclock_dat[4], (WORD)(~0xf003), 6, 0}, | {dclock.dat + 4, (UINT16)(~0xf003), 6, 0}, |
| {&dclock_dat[5], (WORD)(~0xe007), 5, 0}}; | {dclock.dat + 5, (UINT16)(~0xe007), 5, 0}}; |
| static void resetfont1(void) { | static void resetfont1(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 53 static void resetfont1(void) { | Line 46 static void resetfont1(void) { |
| else { | else { |
| pat = 0x30008001; | pat = 0x30008001; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*4+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 4 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*5+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 5 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*9+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 9 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------ font2 | // ------------------------------------------------------------------ font2 |
| // 5x9 | // 5x9 |
| static BYTE clockchr2[11][16] = { | static const UINT8 clockchr2[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x00, 0x00, 0x30, 0x48, 0x88, 0x88, 0x88, 0x88, 0x70,}, | {0x00, 0x00, 0x30, 0x48, 0x88, 0x88, 0x88, 0x88, 0x70,}, |
| {0x10, 0x30, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20,}, | {0x10, 0x30, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20,}, |
| Line 76 static BYTE clockchr2[11][16] = { | Line 70 static BYTE clockchr2[11][16] = { |
| {0x38, 0x44, 0x44, 0x48, 0x30, 0x48, 0x88, 0x88, 0x70,}, | {0x38, 0x44, 0x44, 0x48, 0x30, 0x48, 0x88, 0x88, 0x70,}, |
| {0x18, 0x24, 0x40, 0x44, 0x48, 0x38, 0x10, 0x20, 0x20,}}; | {0x18, 0x24, 0x40, 0x44, 0x48, 0x38, 0x10, 0x20, 0x20,}}; |
| static DCLOCK_POS dclockpos2[6] = { | static const DCPOS dclockpos2[6] = { |
| {&dclock_dat[0], (WORD)(~0x00fc), 0, 0}, | {dclock.dat + 0, (UINT16)(~0x00fc), 0, 0}, |
| {&dclock_dat[0], (WORD)(~0xf003), 6, 0}, | {dclock.dat + 0, (UINT16)(~0xf003), 6, 0}, |
| {&dclock_dat[2], (WORD)(~0x00fc), 0, 0}, | {dclock.dat + 2, (UINT16)(~0x00fc), 0, 0}, |
| {&dclock_dat[2], (WORD)(~0xf003), 6, 0}, | {dclock.dat + 2, (UINT16)(~0xf003), 6, 0}, |
| {&dclock_dat[4], (WORD)(~0x00fc), 0, 0}, | {dclock.dat + 4, (UINT16)(~0x00fc), 0, 0}, |
| {&dclock_dat[4], (WORD)(~0xf003), 6, 0}}; | {dclock.dat + 4, (UINT16)(~0xf003), 6, 0}}; |
| static void resetfont2(void) { | static void resetfont2(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 95 static void resetfont2(void) { | Line 89 static void resetfont2(void) { |
| else { | else { |
| pat = 0x00020002; | pat = 0x00020002; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*4+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 4 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*5+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 5 * DCLOCK_YALIGN)) = pat; |
| pat <<= 1; | pat <<= 1; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*9+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 9 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------ font3 | // ------------------------------------------------------------------ font3 |
| // 4x9 | // 4x9 |
| static BYTE clockchr3[11][16] = { | static const UINT8 clockchr3[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60,}, | {0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60,}, |
| {0x20, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,}, | {0x20, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,}, |
| Line 119 static BYTE clockchr3[11][16] = { | Line 114 static BYTE clockchr3[11][16] = { |
| {0x60, 0x90, 0x90, 0x90, 0x60, 0x90, 0x90, 0x90, 0x60,}, | {0x60, 0x90, 0x90, 0x90, 0x60, 0x90, 0x90, 0x90, 0x60,}, |
| {0x60, 0x90, 0x90, 0x90, 0x70, 0x10, 0x90, 0x90, 0x60,}}; | {0x60, 0x90, 0x90, 0x90, 0x70, 0x10, 0x90, 0x90, 0x60,}}; |
| static DCLOCK_POS dclockpos3[6] = { | static const DCPOS dclockpos3[6] = { |
| {&dclock_dat[0], (WORD)(~0x00f0), 0, 0}, | {dclock.dat + 0, (UINT16)(~0x00f0), 0, 0}, |
| {&dclock_dat[0], (WORD)(~0x8007), 5, 0}, | {dclock.dat + 0, (UINT16)(~0x8007), 5, 0}, |
| {&dclock_dat[1], (WORD)(~0xc003), 6, 0}, | {dclock.dat + 1, (UINT16)(~0xc003), 6, 0}, |
| {&dclock_dat[2], (WORD)(~0x001e), 3, 0}, | {dclock.dat + 2, (UINT16)(~0x001e), 3, 0}, |
| {&dclock_dat[3], (WORD)(~0x000f), 4, 0}, | {dclock.dat + 3, (UINT16)(~0x000f), 4, 0}, |
| {&dclock_dat[4], (WORD)(~0x0078), 1, 0}}; | {dclock.dat + 4, (UINT16)(~0x0078), 1, 0}}; |
| static void resetfont3(void) { | static void resetfont3(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 138 static void resetfont3(void) { | Line 133 static void resetfont3(void) { |
| else { | else { |
| pat = 0x00400010; | pat = 0x00400010; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*4+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 4 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*5+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 5 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*9+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 9 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------ font4 | // ------------------------------------------------------------------ font4 |
| // 5x8 | // 5x8 |
| static BYTE clockchr4[11][16] = { | static const UINT8 clockchr4[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70,}, | {0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70,}, |
| {0x00, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70,}, | {0x00, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70,}, |
| Line 163 static BYTE clockchr4[11][16] = { | Line 159 static BYTE clockchr4[11][16] = { |
| static void resetfont4(void) { | static void resetfont4(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 172 static void resetfont4(void) { | Line 168 static void resetfont4(void) { |
| else { | else { |
| pat = 0x00040004; | pat = 0x00040004; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*5+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 5 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*6+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 6 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*9+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 9 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------ font5 | // ------------------------------------------------------------------ font5 |
| static BYTE clockchr5[11][16] = { | static const UINT8 clockchr5[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70,}, | {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70,}, |
| {0x00, 0x00, 0x20, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20,}, | {0x00, 0x00, 0x20, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20,}, |
| Line 194 static BYTE clockchr5[11][16] = { | Line 191 static BYTE clockchr5[11][16] = { |
| {0x00, 0x00, 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70,}, | {0x00, 0x00, 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70,}, |
| {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x78, 0x10, 0x60,}}; | {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x78, 0x10, 0x60,}}; |
| static DCLOCK_POS dclockpos5[6] = { | static const DCPOS dclockpos5[6] = { |
| {&dclock_dat[0], (WORD)(~0x00f8), 0, 0}, | {dclock.dat + 0, (UINT16)(~0x00f8), 0, 0}, |
| {&dclock_dat[0], (WORD)(~0xe003), 6, 0}, | {dclock.dat + 0, (UINT16)(~0xe003), 6, 0}, |
| {&dclock_dat[2], (WORD)(~0x007c), 1, 0}, | {dclock.dat + 2, (UINT16)(~0x007c), 1, 0}, |
| {&dclock_dat[2], (WORD)(~0xf001), 7, 0}, | {dclock.dat + 2, (UINT16)(~0xf001), 7, 0}, |
| {&dclock_dat[4], (WORD)(~0x003e), 2, 0}, | {dclock.dat + 4, (UINT16)(~0x003e), 2, 0}, |
| {&dclock_dat[5], (WORD)(~0x00f8), 0, 0}}; | {dclock.dat + 5, (UINT16)(~0x00f8), 0, 0}}; |
| static void resetfont5(void) { | static void resetfont5(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 213 static void resetfont5(void) { | Line 210 static void resetfont5(void) { |
| else { | else { |
| pat = 0x00030006; | pat = 0x00030006; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*6+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 6 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*7+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 7 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*9+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 9 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------ font6 | // ------------------------------------------------------------------ font6 |
| // 4x6 | // 4x6 |
| static BYTE clockchr6[11][16] = { | static const UINT8 clockchr6[11][16] = { |
| {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, |
| {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x90, 0x60,}, | {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x90, 0x60,}, |
| {0x00, 0x00, 0x00, 0x20, 0x60, 0x20, 0x20, 0x20, 0x20,}, | {0x00, 0x00, 0x00, 0x20, 0x60, 0x20, 0x20, 0x20, 0x20,}, |
| Line 236 static BYTE clockchr6[11][16] = { | Line 234 static BYTE clockchr6[11][16] = { |
| {0x00, 0x00, 0x00, 0x60, 0x90, 0x60, 0x90, 0x90, 0x60,}, | {0x00, 0x00, 0x00, 0x60, 0x90, 0x60, 0x90, 0x90, 0x60,}, |
| {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x70, 0x20, 0x40,}}; | {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x70, 0x20, 0x40,}}; |
| static DCLOCK_POS dclockpos6[6] = { | static const DCPOS dclockpos6[6] = { |
| {&dclock_dat[0], (WORD)(~0x00f0), 0, 0}, | {dclock.dat + 0, (UINT16)(~0x00f0), 0, 0}, |
| {&dclock_dat[0], (WORD)(~0x8007), 5, 0}, | {dclock.dat + 0, (UINT16)(~0x8007), 5, 0}, |
| {&dclock_dat[1], (WORD)(~0x000f), 4, 0}, | {dclock.dat + 1, (UINT16)(~0x000f), 4, 0}, |
| {&dclock_dat[2], (WORD)(~0x0078), 1, 0}, | {dclock.dat + 2, (UINT16)(~0x0078), 1, 0}, |
| {&dclock_dat[3], (WORD)(~0x00f0), 0, 0}, | {dclock.dat + 3, (UINT16)(~0x00f0), 0, 0}, |
| {&dclock_dat[3], (WORD)(~0x8007), 5, 0}}; | {dclock.dat + 3, (UINT16)(~0x8007), 5, 0}}; |
| static void resetfont6(void) { | static void resetfont6(void) { |
| DWORD pat; | UINT32 pat; |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 255 static void resetfont6(void) { | Line 253 static void resetfont6(void) { |
| else { | else { |
| pat = 0x00000220; | pat = 0x00000220; |
| } | } |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*8+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + ( 8 * DCLOCK_YALIGN)) = pat; |
| *(DWORD *)(&dclock_dat[(DCLOCK_X/8)*10+1]) = pat; | *(UINT32 *)(dclock.dat + 1 + (10 * DCLOCK_YALIGN)) = pat; |
| } | } |
| } | } |
| // ------------------------------------------------------------------------ | // ------------------------------------------------------------------------ |
| static DCLOCK_FNT dclock_font = {clockchr1[0], dclockpos1, resetfont1}; | typedef struct { |
| static DCLOCK_FNT fonttype[] = | const UINT8 *fnt; |
| const DCPOS *pos; | |
| void (*init)(void); | |
| } DCLOCKFNT; | |
| static const DCLOCKFNT fonttype[] = | |
| {{clockchr1[0], dclockpos1, resetfont1}, | {{clockchr1[0], dclockpos1, resetfont1}, |
| {clockchr2[0], dclockpos2, resetfont2}, | {clockchr2[0], dclockpos2, resetfont2}, |
| {clockchr3[0], dclockpos3, resetfont3}, | {clockchr3[0], dclockpos3, resetfont3}, |
| Line 271 static DCLOCK_FNT fonttype[] = | Line 275 static DCLOCK_FNT fonttype[] = |
| {clockchr5[0], dclockpos5, resetfont5}, | {clockchr5[0], dclockpos5, resetfont5}, |
| {clockchr6[0], dclockpos6, resetfont6}}; | {clockchr6[0], dclockpos6, resetfont6}}; |
| // ------------------------------------------------------------------------ | // ------------------------------------------------------------------------ |
| void dclock_init(void) { | void dclock_init(void) { |
| pal_makegrad(dclock_pal, 4, np2oscfg.clk_color1, np2oscfg.clk_color2); | pal_makegrad(dclockpal.pal32, 4, |
| np2oscfg.clk_color1, np2oscfg.clk_color2); | |
| } | } |
| void dclock_init8(void) { | static void dclock_palset8(void) { |
| BYTE i, j; | UINT8 i; |
| DWORD work = 0; // vc++4.2 | UINT8 j; |
| UINT32 work = 0; // vc++4.2 | |
| for (i=0; i<16; i++) { | for (i=0; i<16; i++) { |
| for (j=1; j<0x10; j<<=1) { | for (j=1; j<0x10; j<<=1) { |
| Line 291 void dclock_init8(void) { | Line 298 void dclock_init8(void) { |
| } | } |
| } | } |
| for (j=0; j<4; j++) { | for (j=0; j<4; j++) { |
| outcolors[j][i] = work * (START_PALORG + j); | dclockpal.pal8[j][i] = work * (START_PALORG + j); |
| } | } |
| } | } |
| } | } |
| void dclock_init16(void) { | static void dclock_palset16(void) { |
| UINT i; | UINT i; |
| for (i=0; i<4; i++) { | for (i=0; i<4; i++) { |
| outcolors16[i] = scrnmng_makepal16(dclock_pal[i]); | dclockpal.pal16[i] = scrnmng_makepal16(dclockpal.pal32[i]); |
| } | } |
| } | } |
| void dclock_palset(UINT bpp) { | |
| switch(bpp) { | |
| case 8: | |
| dclock_palset8(); | |
| break; | |
| case 16: | |
| dclock_palset16(); | |
| break; | |
| } | |
| } | |
| void dclock_reset(void) { | void dclock_reset(void) { |
| const DCLOCKFNT *fnt; | |
| ZeroMemory(&dclock, sizeof(dclock)); | ZeroMemory(&dclock, sizeof(dclock)); |
| ZeroMemory(&dclock_dat, sizeof(dclock_dat)); | |
| if (np2oscfg.clk_x) { | if (np2oscfg.clk_x) { |
| if (np2oscfg.clk_x <= 4) { | if (np2oscfg.clk_x <= 4) { |
| Line 322 void dclock_reset(void) { | Line 345 void dclock_reset(void) { |
| np2oscfg.clk_x = 0; | np2oscfg.clk_x = 0; |
| } | } |
| } | } |
| if (np2oscfg.clk_fnt >= (sizeof(fonttype) / sizeof(DCLOCK_FNT))) { | if (np2oscfg.clk_fnt >= NELEMENTS(fonttype)) { |
| np2oscfg.clk_fnt = 0; | np2oscfg.clk_fnt = 0; |
| } | } |
| dclock_font = fonttype[np2oscfg.clk_fnt]; | |
| dclock_font.init(); | dclock.clk_x = np2oscfg.clk_x; |
| fnt = fonttype + np2oscfg.clk_fnt; | |
| dclock.fnt = fnt->fnt; | |
| dclock.pos = fnt->pos; | |
| fnt->init(); | |
| dclock_callback(); | dclock_callback(); |
| dclock_redraw(); | dclock_redraw(); |
| } | } |
| Line 335 void dclock_reset(void) { | Line 361 void dclock_reset(void) { |
| void dclock_callback(void) { | void dclock_callback(void) { |
| int i; | int i; |
| BYTE count = 13; | UINT8 count = 13; |
| BYTE buf[8]; | UINT8 buf[8]; |
| _SYSTIME st; | _SYSTIME st; |
| if ((scrnmng_isfullscreen()) && (np2oscfg.clk_x)) { | if ((scrnmng_isfullscreen()) && (dclock.clk_x)) { |
| timemng_gettime(&st); | timemng_gettime(&st); |
| buf[0] = (st.hour / 10) + 1; | buf[0] = (st.hour / 10) + 1; |
| buf[1] = (st.hour % 10) + 1; | buf[1] = (st.hour % 10) + 1; |
| buf[2] = (st.minute / 10) + 1; | buf[2] = (st.minute / 10) + 1; |
| buf[3] = (st.minute % 10) + 1; | buf[3] = (st.minute % 10) + 1; |
| if (np2oscfg.clk_x > 4) { | if (dclock.clk_x > 4) { |
| buf[4] = (st.second / 10) + 1; | buf[4] = (st.second / 10) + 1; |
| buf[5] = (st.second % 10) + 1; | buf[5] = (st.second % 10) + 1; |
| } | } |
| for (i=np2oscfg.clk_x; i--;) { | for (i=dclock.clk_x; i--;) { |
| if (dclock.dclock_now[i] != buf[i]) { | if (dclock.now[i] != buf[i]) { |
| dclock.dclock_now[i] = buf[i]; | dclock.now[i] = buf[i]; |
| dclock.dclock_flm[i] = count; | dclock.flm[i] = count; |
| dclock.dclock_drawing |= (1 << i); | dclock.drawing |= (1 << i); |
| count += 4; | count += 4; |
| } | } |
| } | } |
| Line 362 void dclock_callback(void) { | Line 388 void dclock_callback(void) { |
| void dclock_redraw(void) { | void dclock_redraw(void) { |
| dclock.dclock_drawing = 0x3f; | dclock.drawing = 0x3f; |
| } | } |
| BOOL dclock_disp(void) { | BOOL dclock_disp(void) { |
| return((dclock.dclock_drawing != 0) || | return((dclock.drawing != 0) || |
| (*(DWORD *)(&dclock.dclock_flm[0]) != 0) || | (*(UINT32 *)(dclock.flm + 0) != 0) || |
| (*(DWORD *)(&dclock.dclock_flm[4]) != 0)); | (*(UINT32 *)(dclock.flm + 4) != 0)); |
| } | |
| LABEL void __fastcall dclock_cntdown(BYTE value) { | |
| __asm { | |
| cmp np2oscfg.clk_x, 0 | |
| je dclock_cdn | |
| cmp dword ptr (dclock.dclock_flm), 0 | |
| jne dclock_cdn | |
| cmp dword ptr (dclock.dclock_flm + 4), 0 | |
| jne dclock_cdn | |
| ret | |
| dclock_cdn: push ecx | |
| xor edx, edx | |
| cmp cl, 0 | |
| jne dclock_cdnlp | |
| inc cl | |
| dclock_cdnlp: movzx eax, dclock[edx].dclock_flm | |
| cmp eax, 0 | |
| je dclock_cdned | |
| cmp eax, DCLOCKY_MAX | |
| jae dclock_upabove | |
| mov ch, dclocky[eax] | |
| sub al, cl | |
| jc dclock_set0 | |
| cmp ch, dclocky[eax] | |
| je dclock_outflm | |
| jmp dclock_setdraw | |
| dclock_upabove: sub al, cl | |
| jc dclock_set0 | |
| cmp al, DCLOCKY_MAX | |
| jae dclock_outflm | |
| jmp dclock_setdraw | |
| dclock_set0: xor eax, eax | |
| dclock_setdraw: bts dclock.dclock_drawing, dx | |
| dclock_outflm: mov dclock[edx].dclock_flm, al | |
| dclock_cdned: inc edx | |
| cmp dl, np2oscfg.clk_x | |
| jc dclock_cdnlp | |
| pop ecx | |
| ret | |
| } | |
| } | |
| LABEL void dclock_make(void) { | |
| __asm { | |
| cmp np2oscfg.clk_x, 0 | |
| je dclockmakeend | |
| pushad | |
| xor ebx, ebx | |
| makedclock_lp: btr dclock.dclock_drawing, bx | |
| jc makedclock_1 | |
| makedclock_ed: inc ebx | |
| cmp bl, np2oscfg.clk_x | |
| jc makedclock_lp | |
| popad | |
| dclockmakeend: ret | |
| makedclock_1: mov eax, dclock_font.dclock_put | |
| lea eax, [eax + ebx*8] | |
| mov edi, [eax]DCLOCK_POS.dclock_pos | |
| mov dx, [eax]DCLOCK_POS.dclock_mask | |
| mov cl, [eax]DCLOCK_POS.dclock_rolbit | |
| movzx eax, dclock[ebx].dclock_flm | |
| cmp eax, 0 | |
| je makedclock_y0 | |
| cmp eax, DCLOCKY_MAX | |
| jb makedclock_ani | |
| movzx eax, dclock[ebx].dclock_bak | |
| jmp makedclock0put | |
| makedclock_y0: movzx eax, dclock[ebx].dclock_now | |
| mov dclock[ebx].dclock_bak, al | |
| makedclock0put: mov ch, 3 | |
| makedclock0_up: and [edi], dx | |
| add edi, (DCLOCK_X / 8) | |
| dec ch | |
| jne makedclock0_up | |
| shl eax, 4 | |
| add eax, dclock_font.dclock_fnt | |
| mov esi, eax | |
| mov ch, 9 | |
| makedclock0_dn: movzx eax, byte ptr [esi] | |
| ror ax, cl | |
| and [edi], dx | |
| or [edi], ax | |
| inc esi | |
| add edi, (DCLOCK_X / 8) | |
| dec ch | |
| jne makedclock0_dn | |
| jmp makedclock_ed | |
| makedclock_ani: movzx eax, dclocky[eax] | |
| push eax | |
| mov ch, 3 | |
| sub ch, al | |
| je makedclock_an2 | |
| makedclkani_up: and [edi], dx | |
| add edi, (DCLOCK_X / 8) | |
| dec ch | |
| jne makedclkani_up | |
| makedclock_an2: movzx esi, dclock[ebx].dclock_now | |
| shl esi, 4 | |
| add esi, dclock_font.dclock_fnt | |
| mov ch, 9 | |
| makedclkani_md: movzx eax, byte ptr [esi] | |
| ror ax, cl | |
| and [edi], dx | |
| or [edi], ax | |
| inc esi | |
| add edi, (DCLOCK_X / 8) | |
| dec ch | |
| jne makedclkani_md | |
| pop eax | |
| mov ch, al | |
| movzx esi, dclock[ebx].dclock_bak | |
| shl esi, 4 | |
| sub esi, eax | |
| add esi, 9 | |
| add esi, dclock_font.dclock_fnt | |
| makedclkani_dn: movzx eax, byte ptr [esi] | |
| ror ax, cl | |
| and [edi], dx | |
| or [edi], ax | |
| inc esi | |
| add edi, (DCLOCK_X / 8) | |
| dec ch | |
| jne makedclkani_dn | |
| jmp makedclock_ed | |
| } | |
| } | |
| LABEL void __fastcall dclock_out8(void *ptr, DWORD width) { | |
| __asm { | |
| pushad | |
| mov esi, offset dclock_dat | |
| mov edi, offset outcolors | |
| mov bh, 4 | |
| dclockout_lp1: mov bl, 3 | |
| dclockout_lp2: mov ebp, (DCLOCK_X/8) | |
| dclockout_lp3: movzx eax, byte ptr [esi] | |
| shr eax, 4 | |
| mov eax, [eax*4 + edi] | |
| mov [ecx], eax | |
| movzx eax, byte ptr [esi] | |
| and eax, 15 | |
| mov eax, [eax*4 + edi] | |
| mov [ecx+4], eax | |
| inc esi | |
| add ecx, 8 | |
| dec ebp | |
| jne dclockout_lp3 | |
| lea ecx, [ecx + edx - DCLOCK_X] | |
| dec bl | |
| jne dclockout_lp2 | |
| add edi, 4*16 | |
| dec bh | |
| jne dclockout_lp1 | |
| popad | |
| ret | |
| } | |
| } | |
| LABEL void __fastcall dclock_out16(void *ptr, DWORD width) { | |
| __asm { | |
| pushad | |
| mov esi, offset dclock_dat | |
| mov edi, offset outcolors16 | |
| mov bh, 4 | |
| dclockout_lp1: mov bl, 3 | |
| dclockout_lp2: push ebx | |
| mov ebp, (DCLOCK_X/8) | |
| dclockout_lp3: mov bl, [esi] | |
| mov bh, 8 | |
| dclockout_lp4: rcl bl, 1 | |
| sbb ax, ax | |
| and ax, [edi] | |
| mov [ecx], ax | |
| add ecx, 2 | |
| dec bh | |
| jne dclockout_lp4 | |
| inc esi | |
| dec ebp | |
| jne dclockout_lp3 | |
| pop ebx | |
| lea ecx, [ecx + edx - DCLOCK_X*2] | |
| dec bl | |
| jne dclockout_lp2 | |
| add edi, 2 | |
| dec bh | |
| jne dclockout_lp1 | |
| popad | |
| ret | |
| } | |
| } | } |