📄 lcdlib.txt
字号:
00027c e3a00001 MOV r0,#1
000280 e58d0008 STR r0,[sp,#8]
;;;148 }
;;;149 if(displaytype&MODE_NO_VIRTUAL_24B) {
|L1.644|
000284 e59d0014 LDR r0,[sp,#0x14]
000288 e3100020 TST r0,#0x20
00028c 0a000002 BEQ |L1.668|
;;;150 offsize=0;
000290 e3a02000 MOV r2,#0
;;;151 hwswp=0;
000294 e3a00000 MOV r0,#0
000298 e58d0008 STR r0,[sp,#8]
;;;152 }
;;;153 /* if(displaytype&MODE_MPEG_DISPLAY_16B) {
;;;154 offsize=0;
;;;155 hwswp=1;
;;;156 framebuffer1=mpegframebuffer;
;;;157 }
;;;158 if(displaytype&MODE_MPEG_DISPLAY_24B) {
;;;159 offsize=0;
;;;160 hwswp=0;
;;;161 framebuffer1=mpegframebuffer;
;;;162 } */
;;;163 #endif
;;;164
;;;165 rLCDCON1=(rLCDCON1&((1<<20)|(7<<6)))|(0<<21)|(1<<19)|(clkval<<13)|(1<<12)|(pnrmode<<9)|(bppmode<<2)|0;
|L1.668|
00029c e3a0044a MOV r0,#0x4a000000
0002a0 e5900000 LDR r0,[r0,#0]
0002a4 e59fb7dc LDR r11,|L1.2696|
0002a8 e000000b AND r0,r0,r11
0002ac e59db010 LDR r11,[sp,#0x10]
0002b0 e180068b ORR r0,r0,r11,LSL #13
0002b4 e59db00c LDR r11,[sp,#0xc]
0002b8 e180048b ORR r0,r0,r11,LSL #9
0002bc e180010c ORR r0,r0,r12,LSL #2
0002c0 e3800a81 ORR r0,r0,#0x81000
0002c4 e3a0b44a MOV r11,#0x4a000000
0002c8 e58b0000 STR r0,[r11,#0]
;;;166 //rLCDCON1=(0<<21)|(1<<19)|(clkval<<13)|(1<<12)|(pnrmode<<9)|(bppmode<<2)|0;
;;;167 rLCDCON2=(2<<9)|(1<<6)|(1<<5)|(hwswp);
0002cc e59d0008 LDR r0,[sp,#8]
0002d0 e3800e46 ORR r0,r0,#0x460
0002d4 e3a0b44a MOV r11,#0x4a000000
0002d8 e58b0004 STR r0,[r11,#4]
;;;168 rLCDTCON1=(vbpd<<16)|(vfpd<<8)|(vspw);
0002dc e1a00804 MOV r0,r4,LSL #16
0002e0 e1800405 ORR r0,r0,r5,LSL #8
0002e4 e1800006 ORR r0,r0,r6
0002e8 e3a0b44a MOV r11,#0x4a000000
0002ec e58b0008 STR r0,[r11,#8]
;;;169 rLCDTCON2=(hbpd<<16)|(hfpd<<8)|(hspw);
0002f0 e1a00807 MOV r0,r7,LSL #16
0002f4 e1800408 ORR r0,r0,r8,LSL #8
0002f8 e1800009 ORR r0,r0,r9
0002fc e3a0b44a MOV r11,#0x4a000000
000300 e58b000c STR r0,[r11,#0xc]
;;;170 rLCDTCON3=(lineval<<11)|(hozval);
000304 e18a058e ORR r0,r10,lr,LSL #11
000308 e3a0b44a MOV r11,#0x4a000000
00030c e58b0010 STR r0,[r11,#0x10]
;;;171 rLCDSADDRB1=LCDFRAMEBUFFERBG1;
000310 e3a0054c MOV r0,#0x13000000
000314 e3a0b44a MOV r11,#0x4a000000
000318 e58b0020 STR r0,[r11,#0x20]
;;;172 rLCDEADDRB1=LCDBASEL(LCDFRAMEBUFFERBG1+(pagewidth+offsize)*(lineval+1));
00031c e0830002 ADD r0,r3,r2
000320 e28eb001 ADD r11,lr,#1
000324 e000009b MUL r0,r11,r0
000328 e3c004ff BIC r0,r0,#0xff000000
00032c e3a0b44a MOV r11,#0x4a000000
000330 e58b0030 STR r0,[r11,#0x30]
;;;173 rLCDVSCRB1=(offsize<<13)|(pagewidth);
000334 e1830682 ORR r0,r3,r2,LSL #13
000338 e3a0b44a MOV r11,#0x4a000000
00033c e58b0040 STR r0,[r11,#0x40]
;;;174 rLCDSADDRB2=LCDFRAMEBUFFERBG2;
000340 e59f0744 LDR r0,|L1.2700|
000344 e3a0b44a MOV r11,#0x4a000000
000348 e58b0024 STR r0,[r11,#0x24]
;;;175 rLCDEADDRB2=LCDBASEL(LCDFRAMEBUFFERBG2+(pagewidth+offsize)*(lineval+1));
00034c e0830002 ADD r0,r3,r2
000350 e28eb001 ADD r11,lr,#1
000354 e000009b MUL r0,r11,r0
000358 e2800980 ADD r0,r0,#0x200000
00035c e3c004ff BIC r0,r0,#0xff000000
000360 e3a0b44a MOV r11,#0x4a000000
000364 e58b0034 STR r0,[r11,#0x34]
;;;176 rLCDVSCRB2=(offsize<<13)|(pagewidth);
000368 e1830682 ORR r0,r3,r2,LSL #13
00036c e3a0b44a MOV r11,#0x4a000000
000370 e58b0044 STR r0,[r11,#0x44]
;;;177
;;;178
;;;179 }
000374 e28dd018 ADD sp,sp,#0x18
000378 e8bd8ff0 LDMFD sp!,{r4-r11,pc}
ENDP
LcdFGInit PROC
;;;329 void LcdFGInit(U32 displaytype)
;;;330 {
00037c e92d43f0 STMFD sp!,{r4-r9,lr}
;;;331
;;;332 U32 pagewidth, offsize, bytefactor;
;;;333 U32 bppmode;
;;;334 U32 lefttopx, lefttopy, rightbotx, rightboty;
;;;335 U32 lineval;
;;;336
;;;337 switch(displaytype&0xf) {
000380 e200800f AND r8,r0,#0xf
000384 e2488003 SUB r8,r8,#3
000388 e3580004 CMP r8,#4
00038c 908ff108 ADDLS pc,pc,r8,LSL #2
000390 ea000013 B |L1.996|
000394 ea000003 B |L1.936|
000398 ea000005 B |L1.948|
00039c ea000007 B |L1.960|
0003a0 ea000009 B |L1.972|
0003a4 ea00000b B |L1.984|
;;;338 case 0x3:
;;;339 bytefactor=8;
|L1.936|
0003a8 e3a01008 MOV r1,#8
;;;340 bppmode=BPPMODE_8BPP;
0003ac e3a04003 MOV r4,#3
;;;341 break;
0003b0 ea00000c B |L1.1000|
;;;342 case 0x4:
;;;343 bytefactor=8;
|L1.948|
0003b4 e3a01008 MOV r1,#8
;;;344 bppmode=BPPMODE_8BPPNP;
0003b8 e3a04004 MOV r4,#4
;;;345 break;
0003bc ea000009 B |L1.1000|
;;;346 case 0x5:
;;;347 bytefactor=16;
|L1.960|
0003c0 e3a01010 MOV r1,#0x10
;;;348 bppmode=BPPMODE_16BPP565;
0003c4 e3a04005 MOV r4,#5
;;;349 break;
0003c8 ea000006 B |L1.1000|
;;;350 case 0x6:
;;;351 bytefactor=16;
|L1.972|
0003cc e3a01010 MOV r1,#0x10
;;;352 bppmode=BPPMODE_16BPP5551;
0003d0 e3a04006 MOV r4,#6
;;;353 break;
0003d4 ea000003 B |L1.1000|
;;;354 case 0x7:
;;;355 bytefactor=32;
|L1.984|
0003d8 e3a01020 MOV r1,#0x20
;;;356 bppmode=BPPMODE_18BPP;
0003dc e3a04007 MOV r4,#7
;;;357 break;
0003e0 ea000000 B |L1.1000|
;;;358 default:
;;;359 break;
|L1.996|
0003e4 e1a00000 NOP
;;;360 }
;;;361
;;;362 switch(displaytype&0xff00) {
|L1.1000|
0003e8 e2008cff AND r8,r0,#0xff00
0003ec e3580c41 CMP r8,#0x4100
0003f0 0a000006 BEQ |L1.1040|
0003f4 e3580c42 CMP r8,#0x4200
0003f8 0a000011 BEQ |L1.1092|
0003fc e3580c44 CMP r8,#0x4400
000400 0a00001c BEQ |L1.1144|
000404 e3580c48 CMP r8,#0x4800
000408 1a000037 BNE |L1.1260|
00040c ea000027 B |L1.1200|
;;;363 case 0x4100:
;;;364 lefttopx=lefttopy=0;
|L1.1040|
000410 e3a02000 MOV r2,#0
000414 e1a03002 MOV r3,r2
;;;365 rightbotx=lefttopx+FG_XSIZE_176220-1;
000418 e2826057 ADD r6,r2,#0x57
;;;366 rightboty=lefttopy+FG_YSIZE_176220-1;
00041c e1a02003 MOV r2,r3
000420 e283705f ADD r7,r3,#0x5f
;;;367 lineval=FG_YSIZE_176220-1;
000424 e3a0505f MOV r5,#0x5f
;;;368 pagewidth=FG_XSIZE_176220*bytefactor/8;
000428 e3a08058 MOV r8,#0x58
00042c e0090198 MUL r9,r8,r1
000430 e1a0e1a9 MOV lr,r9,LSR #3
;;;369 offsize=(FG_VXSIZE_176220-FG_XSIZE_176220)*bytefactor/8;
000434 e3a08058 MOV r8,#0x58
000438 e0090198 MUL r9,r8,r1
00043c e1a0c1a9 MOV r12,r9,LSR #3
;;;370 break;
000440 ea00002a B |L1.1264|
;;;371 case 0x4200:
;;;372 lefttopx=lefttopy=0;
|L1.1092|
000444 e3a02000 MOV r2,#0
000448 e1a03002 MOV r3,r2
;;;373 rightbotx=lefttopx+FG_XSIZE_240320-1;
00044c e2826077 ADD r6,r2,#0x77
;;;374 rightboty=lefttopy+FG_YSIZE_240320-1;
000450 e1a02003 MOV r2,r3
000454 e283709f ADD r7,r3,#0x9f
;;;375 lineval=FG_YSIZE_240320-1;
000458 e3a0509f MOV r5,#0x9f
;;;376 pagewidth=FG_XSIZE_240320*bytefactor/8;
00045c e3a08078 MOV r8,#0x78
000460 e0090198 MUL r9,r8,r1
000464 e1a0e1a9 MOV lr,r9,LSR #3
;;;377 offsize=(FG_VXSIZE_240320-FG_XSIZE_240320)*bytefactor/8;
000468 e3a08078 MOV r8,#0x78
00046c e0090198 MUL r9,r8,r1
000470 e1a0c1a9 MOV r12,r9,LSR #3
;;;378 break;
000474 ea00001d B |L1.1264|
;;;379 case 0x4400:
;;;380 lefttopx=lefttopy=0;
|L1.1144|
000478 e3a02000 MOV r2,#0
00047c e1a03002 MOV r3,r2
;;;381 rightbotx=lefttopx+FG_XSIZE_640480-1;
000480 e2826f40 ADD r6,r2,#0x100
000484 e286603f ADD r6,r6,#0x3f
;;;382 rightboty=lefttopy+FG_YSIZE_640480-1;
000488 e1a02003 MOV r2,r3
00048c e28370ef ADD r7,r3,#0xef
;;;383 lineval=FG_YSIZE_640480-1;
000490 e3a050ef MOV r5,#0xef
;;;384 pagewidth=FG_XSIZE_640480*bytefactor/8;
000494 e3a08f50 MOV r8,#0x140
000498 e0090198 MUL r9,r8,r1
00049c e1a0e1a9 MOV lr,r9,LSR #3
;;;385 offsize=(FG_VXSIZE_640480-FG_XSIZE_640480)*bytefactor/8;
0004a0 e3a08f50 MOV r8,#0x140
0004a4 e0090198 MUL r9,r8,r1
0004a8 e1a0c1a9 MOV r12,r9,LSR #3
;;;386 break;
0004ac ea00000f B |L1.1264|
;;;387 case 0x4800:
;;;388 lefttopx=lefttopy=0;
|L1.1200|
0004b0 e3a02000 MOV r2,#0
0004b4 e1a03002 MOV r3,r2
;;;389 rightbotx=lefttopx+FG_XSIZE_800600-1;
0004b8 e2826f40 ADD r6,r2,#0x100
0004bc e286608f ADD r6,r6,#0x8f
;;;390 rightboty=lefttopy+FG_YSIZE_800600-1;
0004c0 e1a02003 MOV r2,r3
0004c4 e2837f40 ADD r7,r3,#0x100
0004c8 e287702b ADD r7,r7,#0x2b
;;;391 lineval=FG_YSIZE_800600-1;
0004cc e59f55bc LDR r5,|L1.2704|
;;;392 pagewidth=FG_XSIZE_800600*bytefactor/8;
0004d0 e3a08f64 MOV r8,#0x190
0004d4 e0090198 MUL r9,r8,r1
0004d8 e1a0e1a9 MOV lr,r9,LSR #3
;;;393 offsize=(FG_VXSIZE_800600-FG_XSIZE_800600)*bytefactor/8;
0004dc e3a08f64 MOV r8,#0x190
0004e0 e0090198 MUL r9,r8,r1
0004e4 e1a0c1a9 MOV r12,r9,LSR #3
;;;394 break;
0004e8 ea000000 B |L1.1264|
;;;395 default:
;;;396 break;
|L1.1260|
0004ec e1a00000 NOP
;;;397 }
;;;398
;;;399
;;;400 if((displaytype&MODE_NO_VIRTUAL_16B)||(displaytype&MODE_NO_VIRTUAL_24B))
|L1.1264|
0004f0 e3100030 TST r0,#0x30
0004f4 0a000000 BEQ |L1.1276|
;;;401 offsize=0;
0004f8 e3a0c000 MOV r12,#0
;;;402
;;;403 rLCDCON1=(rLCDCON1&~((1<<20)|(7<<6)))|(bppmode<<6);
|L1.1276|
0004fc e3a0844a MOV r8,#0x4a000000
000500 e5988000 LDR r8,[r8,#0]
000504 e3c88940 BIC r8,r8,#0x100000
000508 e3c88f70 BIC r8,r8,#0x1c0
00050c e1888304 ORR r8,r8,r4,LSL #6
000510 e3a0944a MOV r9,#0x4a000000
000514 e5898000 STR r8,[r9,#0]
;;;404 rLCDOSD1=(0<<9)|(0<<8)|(0xff);
000518 e3a080ff MOV r8,#0xff
00051c e3a0944a MOV r9,#0x4a000000
000520 e5898014 STR r8,[r9,#0x14]
;;;405 rLCDOSD2=(lefttopx<<11)|(lefttopy);
000524 e1838582 ORR r8,r3,r2,LSL #11
000528 e3a0944a MOV r9,#0x4a000000
00052c e5898018 STR r8,[r9,#0x18]
;;;406 rLCDOSD3=(rightbotx<<11)|(rightboty);
000530 e1878586 ORR r8,r7,r6,LSL #11
000534 e3a0944a MOV r9,#0x4a000000
000538 e589801c STR r8,[r9,#0x1c]
;;;407 rLCDSADDRF1=LCDFRAMEBUFFERFG1;
00053c e3a0854d MOV r8,#0x13400000
000540 e3a0944a MOV r9,#0x4a000000
000544 e5898028 STR r8,[r9,#0x28]
;;;408 rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(pagewidth+offsize)*(lineval+1));
000548 e08e800c ADD r8,lr,r12
00054c e2859001 ADD r9,r5,#1
000550 e0080899 MUL r8,r9,r8
000554 e288854d ADD r8,r8,#0x13400000
000558 e3c884ff BIC r8,r8,#0xff000000
00055c e3a0944a MOV r9,#0x4a000000
000560 e5898038 STR r8,[r9,#0x38]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -