📄 lcdlib.txt
字号:
000280 e58d0008 STR r0,[sp,#8]
;;;171 }
;;;172 if(displaytype&MODE_NO_VIRTUAL_24B) {
|L1.644|
000284 e59d0014 LDR r0,[sp,#0x14]
000288 e3100020 TST r0,#0x20
00028c 0a000002 BEQ |L1.668|
;;;173 offsize=0;
000290 e3a02000 MOV r2,#0
;;;174 hwswp=0;
000294 e3a00000 MOV r0,#0
000298 e58d0008 STR r0,[sp,#8]
;;;175 }
;;;176 /* if(displaytype&MODE_MPEG_DISPLAY_16B) {
;;;177 offsize=0;
;;;178 hwswp=1;
;;;179 framebuffer1=mpegframebuffer;
;;;180 }
;;;181 if(displaytype&MODE_MPEG_DISPLAY_24B) {
;;;182 offsize=0;
;;;183 hwswp=0;
;;;184 framebuffer1=mpegframebuffer;
;;;185 } */
;;;186 #endif
;;;187
;;;188 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 e59fb7e0 LDR r11,|L1.2700|
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]
;;;189 //rLCDCON1=(0<<21)|(1<<19)|(clkval<<13)|(1<<12)|(pnrmode<<9)|(bppmode<<2)|0;
;;;190 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]
;;;191 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]
;;;192 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]
;;;193 rLCDTCON3=(lineval<<11)|(hozval);
000304 e18a058e ORR r0,r10,lr,LSL #11
000308 e3a0b44a MOV r11,#0x4a000000
00030c e58b0010 STR r0,[r11,#0x10]
;;;194 rLCDSADDRB1=LCDFRAMEBUFFERBG1;
000310 e3a0054c MOV r0,#0x13000000
000314 e3a0b44a MOV r11,#0x4a000000
000318 e58b0020 STR r0,[r11,#0x20]
;;;195 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]
;;;196 rLCDVSCRB1=(offsize<<13)|(pagewidth);
000334 e1830682 ORR r0,r3,r2,LSL #13
000338 e3a0b44a MOV r11,#0x4a000000
00033c e58b0040 STR r0,[r11,#0x40]
;;;197 rLCDSADDRB2=LCDFRAMEBUFFERBG2;
000340 e59f0748 LDR r0,|L1.2704|
000344 e3a0b44a MOV r11,#0x4a000000
000348 e58b0024 STR r0,[r11,#0x24]
;;;198 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]
;;;199 rLCDVSCRB2=(offsize<<13)|(pagewidth);
000368 e1830682 ORR r0,r3,r2,LSL #13
00036c e3a0b44a MOV r11,#0x4a000000
000370 e58b0044 STR r0,[r11,#0x44]
;;;200
;;;201
;;;202 }
000374 e28dd018 ADD sp,sp,#0x18
000378 e8bd8ff0 LDMFD sp!,{r4-r11,pc}
ENDP
LcdFGInit PROC
;;;352 void LcdFGInit(U32 displaytype)
;;;353 {
00037c e92d43f0 STMFD sp!,{r4-r9,lr}
;;;354
;;;355 U32 pagewidth, offsize, bytefactor;
;;;356 U32 bppmode;
;;;357 U32 lefttopx, lefttopy, rightbotx, rightboty;
;;;358 U32 lineval;
;;;359
;;;360 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|
;;;361 case 0x3:
;;;362 bytefactor=8;
|L1.936|
0003a8 e3a01008 MOV r1,#8
;;;363 bppmode=BPPMODE_8BPP;
0003ac e3a04003 MOV r4,#3
;;;364 break;
0003b0 ea00000c B |L1.1000|
;;;365 case 0x4:
;;;366 bytefactor=8;
|L1.948|
0003b4 e3a01008 MOV r1,#8
;;;367 bppmode=BPPMODE_8BPPNP;
0003b8 e3a04004 MOV r4,#4
;;;368 break;
0003bc ea000009 B |L1.1000|
;;;369 case 0x5:
;;;370 bytefactor=16;
|L1.960|
0003c0 e3a01010 MOV r1,#0x10
;;;371 bppmode=BPPMODE_16BPP565;
0003c4 e3a04005 MOV r4,#5
;;;372 break;
0003c8 ea000006 B |L1.1000|
;;;373 case 0x6:
;;;374 bytefactor=16;
|L1.972|
0003cc e3a01010 MOV r1,#0x10
;;;375 bppmode=BPPMODE_16BPP5551;
0003d0 e3a04006 MOV r4,#6
;;;376 break;
0003d4 ea000003 B |L1.1000|
;;;377 case 0x7:
;;;378 bytefactor=32;
|L1.984|
0003d8 e3a01020 MOV r1,#0x20
;;;379 bppmode=BPPMODE_18BPP;
0003dc e3a04007 MOV r4,#7
;;;380 break;
0003e0 ea000000 B |L1.1000|
;;;381 default:
;;;382 break;
|L1.996|
0003e4 e1a00000 NOP
;;;383 }
;;;384
;;;385 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|
;;;386 case 0x4100:
;;;387 lefttopx=lefttopy=0;
|L1.1040|
000410 e3a02000 MOV r2,#0
000414 e1a03002 MOV r3,r2
;;;388 rightbotx=lefttopx+FG_XSIZE_176220-1;
000418 e2826057 ADD r6,r2,#0x57
;;;389 rightboty=lefttopy+FG_YSIZE_176220-1;
00041c e1a02003 MOV r2,r3
000420 e283705f ADD r7,r3,#0x5f
;;;390 lineval=FG_YSIZE_176220-1;
000424 e3a0505f MOV r5,#0x5f
;;;391 pagewidth=FG_XSIZE_176220*bytefactor/8;
000428 e3a08058 MOV r8,#0x58
00042c e0090198 MUL r9,r8,r1
000430 e1a0e1a9 MOV lr,r9,LSR #3
;;;392 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
;;;393 break;
000440 ea00002a B |L1.1264|
;;;394 case 0x4200:
;;;395 lefttopx=lefttopy=0;
|L1.1092|
000444 e3a02000 MOV r2,#0
000448 e1a03002 MOV r3,r2
;;;396 rightbotx=lefttopx+FG_XSIZE_240320-1;
00044c e2826077 ADD r6,r2,#0x77
;;;397 rightboty=lefttopy+FG_YSIZE_240320-1;
000450 e1a02003 MOV r2,r3
000454 e283709f ADD r7,r3,#0x9f
;;;398 lineval=FG_YSIZE_240320-1;
000458 e3a0509f MOV r5,#0x9f
;;;399 pagewidth=FG_XSIZE_240320*bytefactor/8;
00045c e3a08078 MOV r8,#0x78
000460 e0090198 MUL r9,r8,r1
000464 e1a0e1a9 MOV lr,r9,LSR #3
;;;400 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
;;;401 break;
000474 ea00001d B |L1.1264|
;;;402 case 0x4400:
;;;403 lefttopx=lefttopy=0;
|L1.1144|
000478 e3a02000 MOV r2,#0
00047c e1a03002 MOV r3,r2
;;;404 rightbotx=lefttopx+FG_XSIZE_640480-1;
000480 e2826f40 ADD r6,r2,#0x100
000484 e286603f ADD r6,r6,#0x3f
;;;405 rightboty=lefttopy+FG_YSIZE_640480-1;
000488 e1a02003 MOV r2,r3
00048c e28370ef ADD r7,r3,#0xef
;;;406 lineval=FG_YSIZE_640480-1;
000490 e3a050ef MOV r5,#0xef
;;;407 pagewidth=FG_XSIZE_640480*bytefactor/8;
000494 e3a08f50 MOV r8,#0x140
000498 e0090198 MUL r9,r8,r1
00049c e1a0e1a9 MOV lr,r9,LSR #3
;;;408 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
;;;409 break;
0004ac ea00000f B |L1.1264|
;;;410 case 0x4800:
;;;411 lefttopx=lefttopy=0;
|L1.1200|
0004b0 e3a02000 MOV r2,#0
0004b4 e1a03002 MOV r3,r2
;;;412 rightbotx=lefttopx+FG_XSIZE_800600-1;
0004b8 e2826f40 ADD r6,r2,#0x100
0004bc e286608f ADD r6,r6,#0x8f
;;;413 rightboty=lefttopy+FG_YSIZE_800600-1;
0004c0 e1a02003 MOV r2,r3
0004c4 e2837f40 ADD r7,r3,#0x100
0004c8 e287702b ADD r7,r7,#0x2b
;;;414 lineval=FG_YSIZE_800600-1;
0004cc e59f55c0 LDR r5,|L1.2708|
;;;415 pagewidth=FG_XSIZE_800600*bytefactor/8;
0004d0 e3a08f64 MOV r8,#0x190
0004d4 e0090198 MUL r9,r8,r1
0004d8 e1a0e1a9 MOV lr,r9,LSR #3
;;;416 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
;;;417 break;
0004e8 ea000000 B |L1.1264|
;;;418 default:
;;;419 break;
|L1.1260|
0004ec e1a00000 NOP
;;;420 }
;;;421
;;;422
;;;423 if((displaytype&MODE_NO_VIRTUAL_16B)||(displaytype&MODE_NO_VIRTUAL_24B))
|L1.1264|
0004f0 e3100030 TST r0,#0x30
0004f4 0a000000 BEQ |L1.1276|
;;;424 offsize=0;
0004f8 e3a0c000 MOV r12,#0
;;;425
;;;426 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]
;;;427 rLCDOSD1=(0<<9)|(0<<8)|(0xff);
000518 e3a080ff MOV r8,#0xff
00051c e3a0944a MOV r9,#0x4a000000
000520 e5898014 STR r8,[r9,#0x14]
;;;428 rLCDOSD2=(lefttopx<<11)|(lefttopy);
000524 e1838582 ORR r8,r3,r2,LSL #11
000528 e3a0944a MOV r9,#0x4a000000
00052c e5898018 STR r8,[r9,#0x18]
;;;429 rLCDOSD3=(rightbotx<<11)|(rightboty);
000530 e1878586 ORR r8,r7,r6,LSL #11
000534 e3a0944a MOV r9,#0x4a000000
000538 e589801c STR r8,[r9,#0x1c]
;;;430 rLCDSADDRF1=LCDFRAMEBUFFERFG1;
00053c e3a0854d MOV r8,#0x13400000
000540 e3a0944a MOV r9,#0x4a000000
000544 e5898028 STR r8,[r9,#0x28]
;;;431 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]
;;;432 rLCDVSCRF1=(offsize<<13)|(pagewidth);
000564 e18e868c ORR r8,lr,r12,LSL #13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -