?? gamegraph.lst
字號:
C51 COMPILER V8.05a GAMEGRAPH 11/13/2007 09:15:29 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE GAMEGRAPH
OBJECT MODULE PLACED IN .\Target\GameGraph.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\GameGraph.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LST
-\GameGraph.lst) OBJECT(.\Target\GameGraph.obj)
line level source
1 //*************************************************************************************************
2 //* *
3 //* ******************************游戲圖像處理程序************************** *
4 //* *
5 //*************************************************************************************************
6 #include "includes.h"
7
8 #define FRAMELEFT 38 //邊框范圍:ucLine:36~127。
9 #define BLOCKLEFT 40
10
11
12 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<格子狀態數組>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13 unsigned char uca_BlockMap[]=
14 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
15 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
16 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
17 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
18 0x00,0x00};
19
20 unsigned char code uca_BitSelect[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
21 //用于按位置零。
22
23 unsigned char code uca_BlockDisMap[4][4]={
24 {0x00,0x00,0x00,0x00},{0x0F,0x0B,0x0D,0x0F},
25 {0xF0,0xB0,0xD0,0xF0},{0xFF,0xBB,0xDD,0xFF}};
26
27 //*************************************************************************************************
28 //* *
29 //* **********************************讀格子狀態************************** *
30 //* *
31 //*************************************************************************************************
32 unsigned char ucReadBlock(unsigned char ucRow,unsigned char ucLine)
33 {
34 1 unsigned char ucResult;
35 1
36 1 if(ucLine<8)
37 1 ucResult=uca_BlockMap[ucRow*2]>>(ucLine);
38 1 else
39 1 ucResult=uca_BlockMap[ucRow*2+1]>>(ucLine-8);
40 1
41 1 if(ucResult&0x01)
42 1 return 1;
43 1 else
44 1 return 0;
45 1 }
46
47 //*************************************************************************************************
48 //* *
49 //* **********************************寫格子狀態************************** *
50 //* *
51 //*************************************************************************************************
52 void vWriteBlock(unsigned char ucRow,unsigned char ucLine ,unsigned char ucValue)
53 {
54 1 if(ucValue==1)
C51 COMPILER V8.05a GAMEGRAPH 11/13/2007 09:15:29 PAGE 2
55 1 {
56 2 if(ucLine<8)
57 2 uca_BlockMap[ucRow*2]|=(ucValue<<ucLine);
58 2 else
59 2 uca_BlockMap[ucRow*2+1]|=(ucValue<<(ucLine-8));
60 2 }
61 1 else
62 1 {
63 2 if(ucLine<8)
64 2 uca_BlockMap[ucRow*2]&=uca_BitSelect[ucLine];
65 2 else
66 2 uca_BlockMap[ucRow*2+1]&=uca_BitSelect[ucLine-8];
67 2 }
68 1
69 1 }
70 //*************************************************************************************************
71 //* *
72 //* **********************************顯示一個方塊**************************** *
73 //* *
74 //*************************************************************************************************
75 void vShowBlock(unsigned char ucRow,unsigned char ucLine)
76 {
77 1 vWriteBlock(ucRow,ucLine,1);
78 1 if(ucLine%2)
79 1 vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[ucReadBlock(ucRow,ucLine-1)+2]);
80 1 else
81 1 vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[ucReadBlock(ucRow,ucLine+1)*2+1]);
82 1
83 1 }
84
85 //*************************************************************************************************
86 //* *
87 //* **********************************清除一個方塊**************************** *
88 //* *
89 //*************************************************************************************************
90 void vCleanBlock(unsigned char ucRow,unsigned char ucLine)
91 {
92 1 vWriteBlock(ucRow,ucLine,0);
93 1 if(ucLine%2)
94 1 vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[ucReadBlock(ucRow,ucLine-1)]);
95 1 else
96 1 {
97 2 if(ucReadBlock(ucRow,ucLine+1))
98 2 vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[2]);
99 2 else
100 2 vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[0]);
101 2 // vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockDisMap[ucReadBlock(ucRow,ucLine+1)*2]);
102 2
103 2 }
104 1 }
105 //*************************************************************************************************
106 //* *
107 //* **********************************清空游戲區域************************ *
108 //* *
109 //*************************************************************************************************
110 void vCleanAllBlock()
111 {
112 1 unsigned char ucCountOne,ucCountTwo;
113 1 for(ucCountOne=0;ucCountOne<21;ucCountOne++)
114 1 for(ucCountTwo=0;ucCountTwo<12;ucCountTwo++)
115 1 vCleanBlock(ucCountOne,ucCountTwo);
116 1 }
C51 COMPILER V8.05a GAMEGRAPH 11/13/2007 09:15:29 PAGE 3
117
118 //*************************************************************************************************
119 //* *
120 //* **********************************方塊顯示擴展************************ *
121 //* *
122 //*************************************************************************************************
123 //可在LCD任何地方顯示方塊,注意:其中ucRow,ucLine為LCD坐標。
124 void vShowBlockEx(unsigned char ucRow,unsigned char ucLine,BLOCK *pstBlockType)
125 {
126 1 unsigned char ucCount;
127 1 for(ucCount=0;ucCount<8;ucCount++)
128 1 vShowCustomRow(ucRow+ucCount%2,ucLine+(ucCount/2)*4,4,\
129 1 uca_BlockDisMap[0x03&(unsigned char)((pstBlockType->uiBlockMap)>>(ucCount*2))]);
130 1 }
131
132 //*************************************************************************************************
133 //* *
134 //* ******************************游戲區域邊框繪制函數************************** *
135 //* *
136 //*************************************************************************************************
137 void vShowFrame()
138 {
139 1 unsigned char ucCount;
140 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<繪制左半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
141 1
142 1 CS1=1;
143 1 CS2=0;
144 1 vWriteCMD(LCDPAGE);
145 1 vWriteCMD(LCDLINE+FRAMELEFT);
146 1 for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
147 1 vWriteData(0xC0);
148 1
149 1 for(ucCount=1;ucCount<7;ucCount++)
150 1 {
151 2 vWriteCMD(LCDPAGE+ucCount);
152 2 vWriteCMD(LCDLINE+FRAMELEFT);
153 2 vWriteData(0xFF);
154 2 vWriteData(0xFF);
155 2 }
156 1
157 1 vWriteCMD(LCDPAGE+7);
158 1 vWriteCMD(LCDLINE+FRAMELEFT);
159 1 for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
160 1 vWriteData(0x03);
161 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<繪制右半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
162 1 CS1=0;
163 1 CS2=1;
164 1 vWriteCMD(LCDPAGE);
165 1 vWriteCMD(LCDLINE);
166 1 for(ucCount=0;ucCount<62;ucCount++)
167 1 vWriteData(0xC0);
168 1
169 1 for(ucCount=1;ucCount<7;ucCount++)
170 1 {
171 2 vWriteCMD(LCDPAGE+ucCount);
172 2 vWriteCMD(LCDLINE+60);
173 2 vWriteData(0xFF);
174 2 vWriteData(0xFF);
175 2 }
176 1
177 1 vWriteCMD(LCDPAGE+7);
178 1 vWriteCMD(LCDLINE);
C51 COMPILER V8.05a GAMEGRAPH 11/13/2007 09:15:29 PAGE 4
179 1 for(ucCount=0;ucCount<62;ucCount++)
180 1 vWriteData(0x03);
181 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 682 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 42 14
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -