📄 glib.txt
字号:
0003dc ca000006 BGT |L1.1020|
0003e0 e3520d44 CMP r2,#0x1100
0003e4 0a000016 BEQ |L1.1092|
0003e8 e3520d48 CMP r2,#0x1200
0003ec 0a00001c BEQ |L1.1124|
0003f0 e3520d50 CMP r2,#0x1400
0003f4 1a00004e BNE |L1.1332|
0003f8 ea000021 B |L1.1156|
|L1.1020|
0003fc e3520d84 CMP r2,#0x2100
000400 0a000010 BEQ |L1.1096|
000404 e3520d88 CMP r2,#0x2200
000408 1a000049 BNE |L1.1332|
00040c ea000015 B |L1.1128|
|L1.1040|
000410 e3520c42 CMP r2,#0x4200
000414 0a000031 BEQ |L1.1248|
000418 ca000004 BGT |L1.1072|
00041c e3520da0 CMP r2,#0x2800
000420 0a000020 BEQ |L1.1192|
000424 e3520c41 CMP r2,#0x4100
000428 1a000041 BNE |L1.1332|
00042c ea000024 B |L1.1220|
|L1.1072|
000430 e3520c44 CMP r2,#0x4400
000434 0a000030 BEQ |L1.1276|
000438 e3520c48 CMP r2,#0x4800
00043c 1a00003c BNE |L1.1332|
000440 ea000034 B |L1.1304|
;;;47 case 0x1100:
;;;48 case 0x2100:
|L1.1092|
000444 e1a00000 NOP
;;;49 vframewidth=BG_VXSIZE_176220;
|L1.1096|
000448 e3a02f58 MOV r2,#0x160
00044c e59f3458 LDR r3,|L1.2220|
000450 e5832000 STR r2,[r3,#0] ; vframewidth
;;;50 vframeheight=BG_VYSIZE_176220;
000454 e3a02f60 MOV r2,#0x180
000458 e59f3450 LDR r3,|L1.2224|
00045c e5832000 STR r2,[r3,#0] ; vframeheight
;;;51 break;
000460 ea000034 B |L1.1336|
;;;52 case 0x1200:
;;;53 case 0x2200:
|L1.1124|
000464 e1a00000 NOP
;;;54 vframewidth=BG_VXSIZE_240320;
|L1.1128|
000468 e3a02f78 MOV r2,#0x1e0
00046c e59f3438 LDR r3,|L1.2220|
000470 e5832000 STR r2,[r3,#0] ; vframewidth
;;;55 vframeheight=BG_VYSIZE_240320;
000474 e3a02fa0 MOV r2,#0x280
000478 e59f3430 LDR r3,|L1.2224|
00047c e5832000 STR r2,[r3,#0] ; vframeheight
;;;56 break;
000480 ea00002c B |L1.1336|
;;;57 case 0x1400:
;;;58 case 0x2400:
|L1.1156|
000484 e1a00000 NOP
;;;59 vframewidth=BG_VXSIZE_640480;
|L1.1160|
000488 e3a02e50 MOV r2,#0x500
00048c e59f3418 LDR r3,|L1.2220|
000490 e5832000 STR r2,[r3,#0] ; vframewidth
;;;60 vframeheight=BG_VYSIZE_640480;
000494 e3a02ff0 MOV r2,#0x3c0
000498 e59f3410 LDR r3,|L1.2224|
00049c e5832000 STR r2,[r3,#0] ; vframeheight
;;;61 break;
0004a0 ea000024 B |L1.1336|
;;;62 case 0x1800:
;;;63 case 0x2800:
|L1.1188|
0004a4 e1a00000 NOP
;;;64 vframewidth=BG_VXSIZE_800600;
|L1.1192|
0004a8 e3a02e64 MOV r2,#0x640
0004ac e59f33f8 LDR r3,|L1.2220|
0004b0 e5832000 STR r2,[r3,#0] ; vframewidth
;;;65 vframeheight=BG_VYSIZE_800600;
0004b4 e3a02e4b MOV r2,#0x4b0
0004b8 e59f33f0 LDR r3,|L1.2224|
0004bc e5832000 STR r2,[r3,#0] ; vframeheight
;;;66 break;
0004c0 ea00001c B |L1.1336|
;;;67 case 0x4100:
;;;68 vframewidth=FG_VXSIZE_176220;
|L1.1220|
0004c4 e3a020b0 MOV r2,#0xb0
0004c8 e59f33dc LDR r3,|L1.2220|
0004cc e5832000 STR r2,[r3,#0] ; vframewidth
;;;69 vframeheight=FG_VYSIZE_176220;
0004d0 e3a020c0 MOV r2,#0xc0
0004d4 e59f33d4 LDR r3,|L1.2224|
0004d8 e5832000 STR r2,[r3,#0] ; vframeheight
;;;70 break;
0004dc ea000015 B |L1.1336|
;;;71 case 0x4200:
;;;72 vframewidth=FG_VXSIZE_240320;
|L1.1248|
0004e0 e3a020f0 MOV r2,#0xf0
0004e4 e59f33c0 LDR r3,|L1.2220|
0004e8 e5832000 STR r2,[r3,#0] ; vframewidth
;;;73 vframeheight=FG_VYSIZE_240320;
0004ec e3a02f50 MOV r2,#0x140
0004f0 e59f33b8 LDR r3,|L1.2224|
0004f4 e5832000 STR r2,[r3,#0] ; vframeheight
;;;74 break;
0004f8 ea00000e B |L1.1336|
;;;75 case 0x4400:
;;;76 vframewidth=FG_VXSIZE_640480;
|L1.1276|
0004fc e3a02fa0 MOV r2,#0x280
000500 e59f33a4 LDR r3,|L1.2220|
000504 e5832000 STR r2,[r3,#0] ; vframewidth
;;;77 vframeheight=FG_VYSIZE_640480;
000508 e3a02f78 MOV r2,#0x1e0
00050c e59f339c LDR r3,|L1.2224|
000510 e5832000 STR r2,[r3,#0] ; vframeheight
;;;78 break;
000514 ea000007 B |L1.1336|
;;;79 case 0x4800:
;;;80 vframewidth=FG_VXSIZE_800600;
|L1.1304|
000518 e3a02fc8 MOV r2,#0x320
00051c e59f3388 LDR r3,|L1.2220|
000520 e5832000 STR r2,[r3,#0] ; vframewidth
;;;81 vframeheight=FG_VYSIZE_800600;
000524 e3a02f96 MOV r2,#0x258
000528 e59f3380 LDR r3,|L1.2224|
00052c e5832000 STR r2,[r3,#0] ; vframeheight
;;;82 break;
000530 ea000000 B |L1.1336|
;;;83 default:
;;;84 break;
|L1.1332|
000534 e1a00000 NOP
;;;85 }
;;;86
;;;87 if((displaytype&0xf0)==0x10 || (displaytype&0xf0)==0x20) {
|L1.1336|
000538 e20020f0 AND r2,r0,#0xf0
00053c e3520010 CMP r2,#0x10
000540 0a000002 BEQ |L1.1360|
000544 e20020f0 AND r2,r0,#0xf0
000548 e3520020 CMP r2,#0x20
00054c 1a000009 BNE |L1.1400|
;;;88 vframewidth=vframewidth/2;
|L1.1360|
000550 e59f2354 LDR r2,|L1.2220|
000554 e5922000 LDR r2,[r2,#0] ; vframewidth
000558 e1a020a2 MOV r2,r2,LSR #1
00055c e59f3348 LDR r3,|L1.2220|
000560 e5832000 STR r2,[r3,#0] ; vframewidth
;;;89 vframeheight=vframeheight/2;
000564 e59f2344 LDR r2,|L1.2224|
000568 e5922000 LDR r2,[r2,#0] ; vframeheight
00056c e1a020a2 MOV r2,r2,LSR #1
000570 e59f3338 LDR r3,|L1.2224|
000574 e5832000 STR r2,[r3,#0] ; vframeheight
;;;90 }
;;;91
;;;92 switch(whichframebuffer) {
|L1.1400|
000578 e3510000 CMP r1,#0
00057c 0a000006 BEQ |L1.1436|
000580 e3510001 CMP r1,#1
000584 0a000008 BEQ |L1.1452|
000588 e3510002 CMP r1,#2
00058c 0a00000a BEQ |L1.1468|
000590 e3510003 CMP r1,#3
000594 1a000010 BNE |L1.1500|
000598 ea00000b B |L1.1484|
;;;93 case BGBUFFER1:
;;;94 framebuffer=(U32 *)LCDFRAMEBUFFERBG1;
|L1.1436|
00059c e3a0254c MOV r2,#0x13000000
0005a0 e59f3310 LDR r3,|L1.2232|
0005a4 e5832000 STR r2,[r3,#0] ; framebuffer
;;;95 break;
0005a8 ea00000c B |L1.1504|
;;;96 case BGBUFFER2:
;;;97 framebuffer=(U32 *)LCDFRAMEBUFFERBG2;
|L1.1452|
0005ac e59f2328 LDR r2,|L1.2268|
0005b0 e59f3300 LDR r3,|L1.2232|
0005b4 e5832000 STR r2,[r3,#0] ; framebuffer
;;;98 break;
0005b8 ea000008 B |L1.1504|
;;;99 case FGBUFFER1:
;;;100 framebuffer=(U32 *)LCDFRAMEBUFFERFG1;
|L1.1468|
0005bc e3a0254d MOV r2,#0x13400000
0005c0 e59f32f0 LDR r3,|L1.2232|
0005c4 e5832000 STR r2,[r3,#0] ; framebuffer
;;;101 break;
0005c8 ea000004 B |L1.1504|
;;;102 case FGBUFFER2:
;;;103 framebuffer=(U32 *)LCDFRAMEBUFFERFG2;
|L1.1484|
0005cc e59f230c LDR r2,|L1.2272|
0005d0 e59f32e0 LDR r3,|L1.2232|
0005d4 e5832000 STR r2,[r3,#0] ; framebuffer
;;;104 break;
0005d8 ea000000 B |L1.1504|
;;;105 default:
;;;106 break;
|L1.1500|
0005dc e1a00000 NOP
;;;107 }
;;;108 }
|L1.1504|
0005e0 e12fff1e BX lr
ENDP
GlibLine PROC
;;;182 void GlibLine(int x1,int y1,int x2,int y2,int color)
;;;183 {
0005e4 e92d4ff8 STMFD sp!,{r3-r11,lr}
0005e8 e1a05000 MOV r5,r0
0005ec e1a06001 MOV r6,r1
0005f0 e1a0a002 MOV r10,r2
0005f4 e1a0b003 MOV r11,r3
0005f8 e59d9028 LDR r9,[sp,#0x28]
;;;184 int dx,dy,e;
;;;185 dx=x2-x1;
0005fc e04a8005 SUB r8,r10,r5
;;;186 dy=y2-y1;
000600 e04b7006 SUB r7,r11,r6
;;;187
;;;188 if(dx>=0)
000604 e3580000 CMP r8,#0
000608 ba000052 BLT |L1.1880|
;;;189 {
;;;190 if(dy >= 0) // dy>=0
00060c e3570000 CMP r7,#0
000610 ba000027 BLT |L1.1716|
;;;191 {
;;;192 if(dx>=dy) // 1/8 octant
000614 e1580007 CMP r8,r7
000618 ba000012 BLT |L1.1640|
;;;193 {
;;;194 e=dy-dx/2;
00061c e1a00008 MOV r0,r8
000620 e0881fa8 ADD r1,r8,r8,LSR #31
000624 e04740c1 SUB r4,r7,r1,ASR #1
;;;195 while(x1<=x2)
000628 e1a00000 NOP
|L1.1580|
00062c e155000a CMP r5,r10
000630 ca00009c BGT |L1.2216|
;;;196 {
;;;197 PutPixel(x1,y1,color);
000634 e1a02009 MOV r2,r9
000638 e1a01006 MOV r1,r6
00063c e1a00005 MOV r0,r5
000640 e59f327c LDR r3,|L1.2244|
000644 e5933000 LDR r3,[r3,#0] ; PutPixel
000648 e12fff33 BLX r3
;;;198 if(e>0){y1+=1;e-=dx;}
00064c e3540000 CMP r4,#0
000650 da000001 BLE |L1.1628|
000654 e2866001 ADD r6,r6,#1
000658 e0444008 SUB r4,r4,r8
;;;199 x1+=1;
|L1.1628|
00065c e2855001 ADD r5,r5,#1
;;;200 e+=dy;
000660 e0844007 ADD r4,r4,r7
;;;201 }
000664 eafffff0 B |L1.1580|
;;;202 }
;;;203 else // 2/8 octant
;;;204 {
;;;205 e=dx-dy/2;
|L1.1640|
000668 e1a00007 MOV r0,r7
00066c e0871fa7 ADD r1,r7,r7,LSR #31
000670 e04840c1 SUB r4,r8,r1,ASR #1
;;;206 while(y1<=y2)
000674 e1a00000 NOP
|L1.1656|
000678 e156000b CMP r6,r11
00067c ca000089 BGT |L1.2216|
;;;207 {
;;;208 PutPixel(x1,y1,color);
000680 e1a02009 MOV r2,r9
000684 e1a01006 MOV r1,r6
000688 e1a00005 MOV r0,r5
00068c e59f3230 LDR r3,|L1.2244|
000690 e5933000 LDR r3,[r3,#0] ; PutPixel
000694 e12fff33 BLX r3
;;;209 if(e>0){x1+=1;e-=dy;}
000698 e3540000 CMP r4,#0
00069c da000001 BLE |L1.1704|
0006a0 e2855001 ADD r5,r5,#1
0006a4 e0444007 SUB r4,r4,r7
;;;210 y1+=1;
|L1.1704|
0006a8 e2866001 ADD r6,r6,#1
;;;211 e+=dx;
0006ac e0844008 ADD r4,r4,r8
;;;212 }
0006b0 eafffff0 B |L1.1656|
;;;213 }
;;;214 }
;;;215 else // dy<0
;;;216 {
;;;217 dy=-dy; // dy=abs(dy)
|L1.1716|
0006b4 e2677000 RSB r7,r7,#0
;;;218
;;;219 if(dx>=dy) // 8/8 octant
0006b8 e1580007 CMP r8,r7
0006bc ba000012 BLT |L1.1804|
;;;220 {
;;;221 e=dy-dx/2;
0006c0 e1a00008 MOV r0,r8
0006c4 e0881fa8 ADD r1,r8,r8,LSR #31
0006c8 e04740c1 SUB r4,r7,r1,ASR #1
;;;222 while(x1<=x2)
0006cc e1a00000 NOP
|L1.1744|
0006d0 e155000a CMP r5,r10
0006d4 ca000073 BGT |L1.2216|
;;;223 {
;;;224 PutPixel(x1,y1,color);
0006d8 e1a02009 MOV r2,r9
0006dc e1a01006 MOV r1,r6
0006e0 e1a00005 MOV r0,r5
0006e4 e59f31d8 LDR r3,|L1.2244|
0006e8 e5933000 LDR r3,[r3,#0] ; PutPixel
0006ec e12fff33 BLX r3
;;;225 if(e>0){y1-=1;e-=dx;}
0006f0 e3540000 CMP r4,#0
0006f4 da000001 BLE |L1.1792|
0006f8 e2466001 SUB r6,r6,#1
0006fc e0444008 SUB r4,r4,r8
;;;226 x1+=1;
|L1.1792|
000700 e2855001 ADD r5,r5,#1
;;;227 e+=dy;
000704 e0844007 ADD r4,r4,r7
;;;228 }
000708 eafffff0 B |L1.1744|
;;;229 }
;;;230 else // 7/8 octant
;;;231 {
;;;232 e=dx-dy/2;
|L1.1804|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -