📄 lcdlib.txt
字号:
;;;409 rLCDVSCRF1=(offsize<<13)|(pagewidth);
000564 e18e868c ORR r8,lr,r12,LSL #13
000568 e3a0944a MOV r9,#0x4a000000
00056c e5898048 STR r8,[r9,#0x48]
;;;410 rLCDSADDRF2=LCDFRAMEBUFFERFG2;
000570 e59f851c LDR r8,|L1.2708|
000574 e3a0944a MOV r9,#0x4a000000
000578 e589802c STR r8,[r9,#0x2c]
;;;411 rLCDEADDRF2=LCDBASEL(LCDFRAMEBUFFERFG2+(pagewidth+offsize)*(lineval+1));
00057c e08e800c ADD r8,lr,r12
000580 e2859001 ADD r9,r5,#1
000584 e0080899 MUL r8,r9,r8
000588 e2888860 ADD r8,r8,#0x600000
00058c e3c884ff BIC r8,r8,#0xff000000
000590 e3a0944a MOV r9,#0x4a000000
000594 e589803c STR r8,[r9,#0x3c]
;;;412 rLCDVSCRF2=(offsize<<13)|(pagewidth);
000598 e18e868c ORR r8,lr,r12,LSL #13
00059c e3a0944a MOV r9,#0x4a000000
0005a0 e589804c STR r8,[r9,#0x4c]
;;;413
;;;414 }
0005a4 e8bd83f0 LDMFD sp!,{r4-r9,pc}
ENDP
LcdEnvidOnOff PROC
;;;555 void LcdEnvidOnOff(U32 onoff)
;;;556 {
0005a8 e3500001 CMP r0,#1
;;;557
;;;558 #if 1
;;;559 if(onoff==1)
0005ac 1a000005 BNE |L1.1480|
;;;560 rLCDCON1 = rLCDCON1|(3); // ENVID On using Per Frame method
0005b0 e3a0144a MOV r1,#0x4a000000
0005b4 e5911000 LDR r1,[r1,#0]
0005b8 e3811003 ORR r1,r1,#3
0005bc e3a0244a MOV r2,#0x4a000000
0005c0 e5821000 STR r1,[r2,#0]
0005c4 ea000004 B |L1.1500|
;;;561 else
;;;562 rLCDCON1 &= (~3); // ENVID Off using Per Frame method
|L1.1480|
0005c8 e3a0144a MOV r1,#0x4a000000
0005cc e5911000 LDR r1,[r1,#0]
0005d0 e3c11003 BIC r1,r1,#3
0005d4 e3a0244a MOV r2,#0x4a000000
0005d8 e5821000 STR r1,[r2,#0]
;;;563 #else
;;;564 if(onoff==1) {
;;;565 rLCDCON1 = rLCDCON1|(3); // ENVID On using Per Frame method
;;;566 LcdSetFrameInterrupt(FRAMESEL0_VSYNC, FRAMESEL1_NONE);
;;;567 }
;;;568 else {
;;;569 rLCDCON1 &= (~3); // ENVID Off using Per Frame method
;;;570 rLCDINTCON &= ~((1<<7)|(3));
;;;571 }
;;;572 #endif
;;;573 }
|L1.1500|
0005dc e12fff1e BX lr
ENDP
PaletteInit PROC
;;;418 void PaletteInit(U32 type)
;;;419 {
0005e0 e92d4030 STMFD sp!,{r4,r5,lr}
0005e4 e1a05000 MOV r5,r0
;;;420 U32 *palette;
;;;421 U32 i;
;;;422
;;;423 LcdEnvidOnOff (0); // Envid Off for updating palette ram.
0005e8 e3a00000 MOV r0,#0
0005ec ebfffffe BL LcdEnvidOnOff
;;;424 while(((rLCDCON2>>15)&0x3ff)); //waiting for line-end
0005f0 e1a00000 NOP
|L1.1524|
0005f4 e3a0044a MOV r0,#0x4a000000
0005f8 e5900004 LDR r0,[r0,#4]
0005fc e1a00380 MOV r0,r0,LSL #7
000600 e1b00b20 MOVS r0,r0,LSR #22
000604 1afffffa BNE |L1.1524|
;;;425
;;;426 switch(type) {
000608 e3550024 CMP r5,#0x24
00060c 0a00008f BEQ |L1.2128|
000610 ca000010 BGT |L1.1624|
000614 e3550018 CMP r5,#0x18
000618 0a00004e BEQ |L1.1880|
00061c ca000006 BGT |L1.1596|
000620 e3550011 CMP r5,#0x11
000624 0a00001c BEQ |L1.1692|
000628 e3550012 CMP r5,#0x12
00062c 0a000025 BEQ |L1.1736|
000630 e3550014 CMP r5,#0x14
000634 1a000111 BNE |L1.2688|
000638 ea000031 B |L1.1796|
|L1.1596|
00063c e355001a CMP r5,#0x1a
000640 0a000056 BEQ |L1.1952|
000644 e3550021 CMP r5,#0x21
000648 0a000066 BEQ |L1.2024|
00064c e3550022 CMP r5,#0x22
000650 1a00010a BNE |L1.2688|
000654 ea00006e B |L1.2068|
|L1.1624|
000658 e3550042 CMP r5,#0x42
00065c 0a0000bf BEQ |L1.2400|
000660 ca000006 BGT |L1.1664|
000664 e3550028 CMP r5,#0x28
000668 0a00008d BEQ |L1.2212|
00066c e355002a CMP r5,#0x2a
000670 0a00009d BEQ |L1.2284|
000674 e3550041 CMP r5,#0x41
000678 1a000100 BNE |L1.2688|
00067c ea0000ac B |L1.2356|
|L1.1664|
000680 e3550044 CMP r5,#0x44
000684 0a0000c4 BEQ |L1.2460|
000688 e3550048 CMP r5,#0x48
00068c 0a0000d7 BEQ |L1.2544|
000690 e355004a CMP r5,#0x4a
000694 1a0000f9 BNE |L1.2688|
000698 ea0000e6 B |L1.2616|
;;;427 case PAL_666_1BPP:
;;;428 rLCDCON2|=(1<<9);
|L1.1692|
00069c e3a0044a MOV r0,#0x4a000000
0006a0 e5900004 LDR r0,[r0,#4]
0006a4 e3800f80 ORR r0,r0,#0x200
0006a8 e3a0144a MOV r1,#0x4a000000
0006ac e5810004 STR r0,[r1,#4]
;;;429 palette=(U32 *)PALETTEBG;
0006b0 e2813d40 ADD r3,r1,#0x1000
;;;430 *palette++=0x0; //black
0006b4 e3a00000 MOV r0,#0
0006b8 e4830004 STR r0,[r3],#4
;;;431 *palette=0x3ffff; //white
0006bc e59f03d4 LDR r0,|L1.2712|
0006c0 e5830000 STR r0,[r3,#0]
;;;432 break;
0006c4 ea0000ee B |L1.2692|
;;;433 case PAL_666_2BPP:
;;;434 rLCDCON2|=(1<<9);
|L1.1736|
0006c8 e3a0044a MOV r0,#0x4a000000
0006cc e5900004 LDR r0,[r0,#4]
0006d0 e3800f80 ORR r0,r0,#0x200
0006d4 e3a0144a MOV r1,#0x4a000000
0006d8 e5810004 STR r0,[r1,#4]
;;;435 palette=(U32 *)PALETTEBG;
0006dc e2813d40 ADD r3,r1,#0x1000
;;;436 *palette++=0x3f000; // red
0006e0 e3a00bfc MOV r0,#0x3f000
0006e4 e4830004 STR r0,[r3],#4
;;;437 *palette++=0xfc0; //green
0006e8 e3a00efc MOV r0,#0xfc0
0006ec e4830004 STR r0,[r3],#4
;;;438 *palette++=0x3f; // blue
0006f0 e3a0003f MOV r0,#0x3f
0006f4 e4830004 STR r0,[r3],#4
;;;439 *palette=0x3ffff; // white
0006f8 e59f0398 LDR r0,|L1.2712|
0006fc e5830000 STR r0,[r3,#0]
;;;440 break;
000700 ea0000df B |L1.2692|
;;;441 case PAL_666_4BPP:
;;;442 rLCDCON2|=(1<<9);
|L1.1796|
000704 e3a0044a MOV r0,#0x4a000000
000708 e5900004 LDR r0,[r0,#4]
00070c e3800f80 ORR r0,r0,#0x200
000710 e3a0144a MOV r1,#0x4a000000
000714 e5810004 STR r0,[r1,#4]
;;;443 palette=(U32 *)PALETTEBG;
000718 e2813d40 ADD r3,r1,#0x1000
;;;444 *palette++=0x0; //black
00071c e3a00000 MOV r0,#0
000720 e4830004 STR r0,[r3],#4
;;;445 for(i=0; i<14; i++)
000724 e3a04000 MOV r4,#0
|L1.1832|
000728 e354000e CMP r4,#0xe
00072c 2a000006 BCS |L1.1868|
000730 ea000001 B |L1.1852|
|L1.1844|
000734 e2844001 ADD r4,r4,#1
000738 eafffffa B |L1.1832|
;;;446 *palette++=17476*i;
|L1.1852|
00073c e59f0358 LDR r0,|L1.2716|
000740 e0010490 MUL r1,r0,r4
000744 e4831004 STR r1,[r3],#4
000748 eafffff9 B |L1.1844|
;;;447 *palette=0x3ffff; //white
|L1.1868|
00074c e59f0344 LDR r0,|L1.2712|
000750 e5830000 STR r0,[r3,#0]
;;;448 break;
000754 ea0000ca B |L1.2692|
;;;449 case PAL_666_8BPPBG:
;;;450 rLCDCON2|=(1<<9);
|L1.1880|
000758 e3a0044a MOV r0,#0x4a000000
00075c e5900004 LDR r0,[r0,#4]
000760 e3800f80 ORR r0,r0,#0x200
000764 e3a0144a MOV r1,#0x4a000000
000768 e5810004 STR r0,[r1,#4]
;;;451 palette=(U32 *)PALETTEBG;
00076c e2813d40 ADD r3,r1,#0x1000
;;;452 for(i=0;i<256;i++)
000770 e3a04000 MOV r4,#0
|L1.1908|
000774 e3540f40 CMP r4,#0x100
000778 2a000007 BCS |L1.1948|
00077c ea000001 B |L1.1928|
|L1.1920|
000780 e2844001 ADD r4,r4,#1
000784 eafffffa B |L1.1908|
;;;453 *palette++=DEMO256pal[i]; // correction is needed
|L1.1928|
000788 e59f0310 LDR r0,|L1.2720|
00078c e0800084 ADD r0,r0,r4,LSL #1
000790 e1d000b0 LDRH r0,[r0,#0]
000794 e4830004 STR r0,[r3],#4
000798 eafffff8 B |L1.1920|
;;;454 break;
|L1.1948|
00079c ea0000b8 B |L1.2692|
;;;455 case PAL_666_8BPPFG:
;;;456 rLCDCON2|=(1<<9);
|L1.1952|
0007a0 e3a0044a MOV r0,#0x4a000000
0007a4 e5900004 LDR r0,[r0,#4]
0007a8 e3800f80 ORR r0,r0,#0x200
0007ac e3a0144a MOV r1,#0x4a000000
0007b0 e5810004 STR r0,[r1,#4]
;;;457 palette=(U32 *)PALETTEFG;
0007b4 e2813d80 ADD r3,r1,#0x2000
;;;458 for(i=0;i<256;i++)
0007b8 e3a04000 MOV r4,#0
|L1.1980|
0007bc e3540f40 CMP r4,#0x100
0007c0 2a000007 BCS |L1.2020|
0007c4 ea000001 B |L1.2000|
|L1.1992|
0007c8 e2844001 ADD r4,r4,#1
0007cc eafffffa B |L1.1980|
;;;459 *palette++=DEMO256pal[i];// correction is needed
|L1.2000|
0007d0 e59f02c8 LDR r0,|L1.2720|
0007d4 e0800084 ADD r0,r0,r4,LSL #1
0007d8 e1d000b0 LDRH r0,[r0,#0]
0007dc e4830004 STR r0,[r3],#4
0007e0 eafffff8 B |L1.1992|
;;;460 break;
|L1.2020|
0007e4 ea0000a6 B |L1.2692|
;;;461 case PAL_565_1BPP:
;;;462 rLCDCON2|=(2<<9);
|L1.2024|
0007e8 e3a0044a MOV r0,#0x4a000000
0007ec e5900004 LDR r0,[r0,#4]
0007f0 e3800e40 ORR r0,r0,#0x400
0007f4 e3a0144a MOV r1,#0x4a000000
0007f8 e5810004 STR r0,[r1,#4]
;;;463 palette=(U32 *)PALETTEBG;
0007fc e2813d40 ADD r3,r1,#0x1000
;;;464 *palette++=0x0;//black
000800 e3a00000 MOV r0,#0
000804 e4830004 STR r0,[r3],#4
;;;465 *palette=0xffff;//white
000808 e59f0294 LDR r0,|L1.2724|
00080c e5830000 STR r0,[r3,#0]
;;;466 break;
000810 ea00009b B |L1.2692|
;;;467 case PAL_565_2BPP:
;;;468 rLCDCON2|=(2<<9);
|L1.2068|
000814 e3a0044a MOV r0,#0x4a000000
000818 e5900004 LDR r0,[r0,#4]
00081c e3800e40 ORR r0,r0,#0x400
000820 e3a0144a MOV r1,#0x4a000000
000824 e5810004 STR r0,[r1,#4]
;;;469 palette=(U32 *)PALETTEBG;
000828 e2813d40 ADD r3,r1,#0x1000
;;;470 *palette++=0xf800; // red
00082c e3a00cf8 MOV r0,#0xf800
000830 e4830004 STR r0,[r3],#4
;;;471 *palette++=0x7e0; //green
000834 e3a00e7e MOV r0,#0x7e0
000838 e4830004 STR r0,[r3],#4
;;;472 *palette++=0x1f; // blue
00083c e3a0001f MOV r0,#0x1f
000840 e4830004 STR r0,[r3],#4
;;;473 *palette=0xffff; // white
000844 e59f0258 LDR r0,|L1.2724|
000848 e5830000 STR r0,[r3,#0]
;;;474 break;
00084c ea00008c B |L1.2692|
;;;475 case PAL_565_4BPP:
;;;476 rLCDCON2|=(2<<9);
|L1.2128|
000850 e3a0044a MOV r0,#0x4a000000
000854 e5900004 LDR r0,[r0,#4]
000858 e3800e40 ORR r0,r0,#0x400
00085c e3a0144a MOV r1,#0x4a000000
000860 e5810004 STR r0,[r1,#4]
;;;477 palette=(U32 *)PALETTEBG;
000864 e2813d40 ADD r3,r1,#0x1000
;;;478 *palette++=0x0; //black
000868 e3a00000 MOV r0,#0
00086c e4830004 STR r0,[r3],#4
;;;479 for(i=0; i<14; i++)
000870 e3a04000 MOV r4,#0
|L1.2164|
000874 e354000e CMP r4,#0xe
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -