|
|
| version 1.4, 2005/02/07 14:46:14 | version 1.5, 2005/02/16 09:31:55 |
|---|---|
| Line 28 static const UINT8 clockchr1[11][16] = { | Line 28 static const UINT8 clockchr1[11][16] = { |
| {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70,}}; | {0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70,}}; |
| static const DCPOS 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 46 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; |
| } | } |
| } | } |
| Line 71 static const UINT8 clockchr2[11][16] = { | Line 71 static const UINT8 clockchr2[11][16] = { |
| {0x18, 0x24, 0x40, 0x44, 0x48, 0x38, 0x10, 0x20, 0x20,}}; | {0x18, 0x24, 0x40, 0x44, 0x48, 0x38, 0x10, 0x20, 0x20,}}; |
| static const DCPOS 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 89 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; |
| } | } |
| } | } |
| Line 115 static const UINT8 clockchr3[11][16] = { | Line 115 static const UINT8 clockchr3[11][16] = { |
| {0x60, 0x90, 0x90, 0x90, 0x70, 0x10, 0x90, 0x90, 0x60,}}; | {0x60, 0x90, 0x90, 0x90, 0x70, 0x10, 0x90, 0x90, 0x60,}}; |
| static const DCPOS 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 133 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; |
| } | } |
| } | } |
| Line 159 static const UINT8 clockchr4[11][16] = { | Line 159 static const UINT8 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 168 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; |
| } | } |
| } | } |
| Line 192 static const UINT8 clockchr5[11][16] = { | Line 192 static const UINT8 clockchr5[11][16] = { |
| {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x78, 0x10, 0x60,}}; | {0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x78, 0x10, 0x60,}}; |
| static const DCPOS 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 210 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; |
| } | } |
| } | } |
| Line 235 static const UINT8 clockchr6[11][16] = { | Line 235 static const UINT8 clockchr6[11][16] = { |
| {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x70, 0x20, 0x40,}}; | {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x70, 0x20, 0x40,}}; |
| static const DCPOS 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 253 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; |
| } | } |
| } | } |
| Line 284 void dclock_init(void) { | Line 284 void dclock_init(void) { |
| np2oscfg.clk_color1, np2oscfg.clk_color2); | np2oscfg.clk_color1, np2oscfg.clk_color2); |
| } | } |
| void dclock_init8(void) { | static void dclock_palset8(void) { |
| UINT8 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 302 void dclock_init8(void) { | Line 303 void dclock_init8(void) { |
| } | } |
| } | } |
| void dclock_init16(void) { | static void dclock_palset16(void) { |
| UINT i; | UINT i; |
| Line 311 void dclock_init16(void) { | Line 312 void dclock_init16(void) { |
| } | } |
| } | } |
| 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; | const DCLOCKFNT *fnt; |
| Line 377 void dclock_redraw(void) { | Line 394 void dclock_redraw(void) { |
| BOOL dclock_disp(void) { | BOOL dclock_disp(void) { |
| return((dclock.drawing != 0) || | return((dclock.drawing != 0) || |
| (*(DWORD *)(dclock.flm + 0) != 0) || | (*(UINT32 *)(dclock.flm + 0) != 0) || |
| (*(DWORD *)(dclock.flm + 4) != 0)); | (*(UINT32 *)(dclock.flm + 4) != 0)); |
| } | |
| #if 0 | |
| LABEL void __fastcall dclock_cntdown(UINT8 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 | |
| } | |
| } | } |
| #endif | |