📄 lcdlib.txt
字号:
000568 e3a0944a MOV r9,#0x4a000000
00056c e5898048 STR r8,[r9,#0x48]
;;;433 rLCDSADDRF2=LCDFRAMEBUFFERFG2;
000570 e59f8520 LDR r8,|L1.2712|
000574 e3a0944a MOV r9,#0x4a000000
000578 e589802c STR r8,[r9,#0x2c]
;;;434 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]
;;;435 rLCDVSCRF2=(offsize<<13)|(pagewidth);
000598 e18e868c ORR r8,lr,r12,LSL #13
00059c e3a0944a MOV r9,#0x4a000000
0005a0 e589804c STR r8,[r9,#0x4c]
;;;436
;;;437 }
0005a4 e8bd83f0 LDMFD sp!,{r4-r9,pc}
ENDP
LcdEnvidOnOff PROC
;;;578 void LcdEnvidOnOff(U32 onoff)
;;;579 {
0005a8 e3500001 CMP r0,#1
;;;580
;;;581 #if 1
;;;582 if(onoff==1)
0005ac 1a000005 BNE |L1.1480|
;;;583 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|
;;;584 else
;;;585 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]
;;;586 #else
;;;587 if(onoff==1) {
;;;588 rLCDCON1 = rLCDCON1|(3); // ENVID On using Per Frame method
;;;589 LcdSetFrameInterrupt(FRAMESEL0_VSYNC, FRAMESEL1_NONE);
;;;590 }
;;;591 else {
;;;592 rLCDCON1 &= (~3); // ENVID Off using Per Frame method
;;;593 rLCDINTCON &= ~((1<<7)|(3));
;;;594 }
;;;595 #endif
;;;596 }
|L1.1500|
0005dc e12fff1e BX lr
ENDP
PaletteInit PROC
;;;441 void PaletteInit(U32 type)
;;;442 {
0005e0 e92d4030 STMFD sp!,{r4,r5,lr}
0005e4 e1a05000 MOV r5,r0
;;;443 U32 *palette;
;;;444 U32 i;
;;;445
;;;446 LcdEnvidOnOff (0); // Envid Off for updating palette ram.
0005e8 e3a00000 MOV r0,#0
0005ec ebfffffe BL LcdEnvidOnOff
;;;447 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|
;;;448
;;;449 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|
;;;450 case PAL_666_1BPP:
;;;451 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]
;;;452 palette=(U32 *)PALETTEBG;
0006b0 e2813d40 ADD r3,r1,#0x1000
;;;453 *palette++=0x0; //black
0006b4 e3a00000 MOV r0,#0
0006b8 e4830004 STR r0,[r3],#4
;;;454 *palette=0x3ffff; //white
0006bc e59f03d8 LDR r0,|L1.2716|
0006c0 e5830000 STR r0,[r3,#0]
;;;455 break;
0006c4 ea0000ee B |L1.2692|
;;;456 case PAL_666_2BPP:
;;;457 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]
;;;458 palette=(U32 *)PALETTEBG;
0006dc e2813d40 ADD r3,r1,#0x1000
;;;459 *palette++=0x3f000; // red
0006e0 e3a00bfc MOV r0,#0x3f000
0006e4 e4830004 STR r0,[r3],#4
;;;460 *palette++=0xfc0; //green
0006e8 e3a00efc MOV r0,#0xfc0
0006ec e4830004 STR r0,[r3],#4
;;;461 *palette++=0x3f; // blue
0006f0 e3a0003f MOV r0,#0x3f
0006f4 e4830004 STR r0,[r3],#4
;;;462 *palette=0x3ffff; // white
0006f8 e59f039c LDR r0,|L1.2716|
0006fc e5830000 STR r0,[r3,#0]
;;;463 break;
000700 ea0000df B |L1.2692|
;;;464 case PAL_666_4BPP:
;;;465 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]
;;;466 palette=(U32 *)PALETTEBG;
000718 e2813d40 ADD r3,r1,#0x1000
;;;467 *palette++=0x0; //black
00071c e3a00000 MOV r0,#0
000720 e4830004 STR r0,[r3],#4
;;;468 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|
;;;469 *palette++=17476*i;
|L1.1852|
00073c e59f035c LDR r0,|L1.2720|
000740 e0010490 MUL r1,r0,r4
000744 e4831004 STR r1,[r3],#4
000748 eafffff9 B |L1.1844|
;;;470 *palette=0x3ffff; //white
|L1.1868|
00074c e59f0348 LDR r0,|L1.2716|
000750 e5830000 STR r0,[r3,#0]
;;;471 break;
000754 ea0000ca B |L1.2692|
;;;472 case PAL_666_8BPPBG:
;;;473 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]
;;;474 palette=(U32 *)PALETTEBG;
00076c e2813d40 ADD r3,r1,#0x1000
;;;475 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|
;;;476 *palette++=DEMO256pal[i]; // correction is needed
|L1.1928|
000788 e59f0314 LDR r0,|L1.2724|
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|
;;;477 break;
|L1.1948|
00079c ea0000b8 B |L1.2692|
;;;478 case PAL_666_8BPPFG:
;;;479 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]
;;;480 palette=(U32 *)PALETTEFG;
0007b4 e2813d80 ADD r3,r1,#0x2000
;;;481 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|
;;;482 *palette++=DEMO256pal[i];// correction is needed
|L1.2000|
0007d0 e59f02cc LDR r0,|L1.2724|
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|
;;;483 break;
|L1.2020|
0007e4 ea0000a6 B |L1.2692|
;;;484 case PAL_565_1BPP:
;;;485 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]
;;;486 palette=(U32 *)PALETTEBG;
0007fc e2813d40 ADD r3,r1,#0x1000
;;;487 *palette++=0x0;//black
000800 e3a00000 MOV r0,#0
000804 e4830004 STR r0,[r3],#4
;;;488 *palette=0xffff;//white
000808 e59f0298 LDR r0,|L1.2728|
00080c e5830000 STR r0,[r3,#0]
;;;489 break;
000810 ea00009b B |L1.2692|
;;;490 case PAL_565_2BPP:
;;;491 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]
;;;492 palette=(U32 *)PALETTEBG;
000828 e2813d40 ADD r3,r1,#0x1000
;;;493 *palette++=0xf800; // red
00082c e3a00cf8 MOV r0,#0xf800
000830 e4830004 STR r0,[r3],#4
;;;494 *palette++=0x7e0; //green
000834 e3a00e7e MOV r0,#0x7e0
000838 e4830004 STR r0,[r3],#4
;;;495 *palette++=0x1f; // blue
00083c e3a0001f MOV r0,#0x1f
000840 e4830004 STR r0,[r3],#4
;;;496 *palette=0xffff; // white
000844 e59f025c LDR r0,|L1.2728|
000848 e5830000 STR r0,[r3,#0]
;;;497 break;
00084c ea00008c B |L1.2692|
;;;498 case PAL_565_4BPP:
;;;499 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]
;;;500 palette=(U32 *)PALETTEBG;
000864 e2813d40 ADD r3,r1,#0x1000
;;;501 *palette++=0x0; //black
000868 e3a00000 MOV r0,#0
00086c e4830004 STR r0,[r3],#4
;;;502 for(i=0; i<14; i++)
000870 e3a04000 MOV r4,#0
|L1.2164|
000874 e354000e CMP r4,#0xe
000878 2a000006 BCS |L1.2200|
00087c ea000001 B |L1.2184|
|L1.2176|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -