📄 lcdlib.txt
字号:
000b4c e3a0244a MOV r2,#0x4a000000
000b50 e5821000 STR r1,[r2,#0]
;;;632 break;
000b54 ea000006 B |L1.2932|
;;;633 case FGBUFFER2:
;;;634 rLCDCON1=(rLCDCON1&~(1<<20))|(1<<20);
|L1.2904|
000b58 e3a0144a MOV r1,#0x4a000000
000b5c e5911000 LDR r1,[r1,#0]
000b60 e3811940 ORR r1,r1,#0x100000
000b64 e3a0244a MOV r2,#0x4a000000
000b68 e5821000 STR r1,[r2,#0]
;;;635 break;
000b6c ea000000 B |L1.2932|
;;;636 default:
;;;637 break;
|L1.2928|
000b70 e1a00000 NOP
;;;638 }
;;;639 }
|L1.2932|
000b74 e12fff1e BX lr
ENDP
LcdSetFrameInterrupt PROC
;;;641 void LcdSetFrameInterrupt(U32 framesel0, U32 framesel1)
;;;642 {
000b78 e3a0244a MOV r2,#0x4a000000
;;;643 rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&framesel0)<<10)|((0x3&framesel1)<<8)|(1<<7)|(1);
000b7c e5922050 LDR r2,[r2,#0x50]
000b80 e3c22ef0 BIC r2,r2,#0xf00
000b84 e2003003 AND r3,r0,#3
000b88 e1822503 ORR r2,r2,r3,LSL #10
000b8c e2013003 AND r3,r1,#3
000b90 e1822403 ORR r2,r2,r3,LSL #8
000b94 e3822081 ORR r2,r2,#0x81
000b98 e3a0344a MOV r3,#0x4a000000
000b9c e5832050 STR r2,[r3,#0x50]
;;;644 }
000ba0 e12fff1e BX lr
ENDP
LcdEnableFrameInterrupt PROC
;;;646 void LcdEnableFrameInterrupt(U32 framesel0, U32 framesel1)
;;;647 {
000ba4 e3a0244a MOV r2,#0x4a000000
;;;648
;;;649 rLCDCON1 &= (~3); // ENVID Off
000ba8 e5922000 LDR r2,[r2,#0]
000bac e3c22003 BIC r2,r2,#3
000bb0 e3a0344a MOV r3,#0x4a000000
000bb4 e5832000 STR r2,[r3,#0]
;;;650 while(((rLCDCON2>>15)&0x3ff)); //waiting for end of current frame.
000bb8 e1a00000 NOP
|L1.3004|
000bbc e3a0244a MOV r2,#0x4a000000
000bc0 e5922004 LDR r2,[r2,#4]
000bc4 e1a02382 MOV r2,r2,LSL #7
000bc8 e1b02b22 MOVS r2,r2,LSR #22
000bcc 1afffffa BNE |L1.3004|
;;;651 rLCDCON1 = rLCDCON1|(3); // ENVID On using Per Frame method
000bd0 e3a0244a MOV r2,#0x4a000000
000bd4 e5922000 LDR r2,[r2,#0]
000bd8 e3822003 ORR r2,r2,#3
000bdc e3a0344a MOV r3,#0x4a000000
000be0 e5832000 STR r2,[r3,#0]
;;;652 rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&framesel0)<<10)|((0x3&framesel1)<<8)|(1<<7)|(1);
000be4 e3a0244a MOV r2,#0x4a000000
000be8 e5922050 LDR r2,[r2,#0x50]
000bec e3c22ef0 BIC r2,r2,#0xf00
000bf0 e2003003 AND r3,r0,#3
000bf4 e1822503 ORR r2,r2,r3,LSL #10
000bf8 e2013003 AND r3,r1,#3
000bfc e1822403 ORR r2,r2,r3,LSL #8
000c00 e3822081 ORR r2,r2,#0x81
000c04 e3a0344a MOV r3,#0x4a000000
000c08 e5832050 STR r2,[r3,#0x50]
;;;653 }
000c0c e12fff1e BX lr
ENDP
LcdDisableFrameInterrupt PROC
;;;655 void LcdDisableFrameInterrupt(void)
;;;656 {
000c10 e3a0044a MOV r0,#0x4a000000
;;;657
;;;658 rLCDINTCON &=~((1<<7)|1);
000c14 e5900050 LDR r0,[r0,#0x50]
000c18 e3c00081 BIC r0,r0,#0x81
000c1c e3a0144a MOV r1,#0x4a000000
000c20 e5810050 STR r0,[r1,#0x50]
;;;659 rLCDCON1 &= (~3); // ENVID Off
000c24 e3a0044a MOV r0,#0x4a000000
000c28 e5900000 LDR r0,[r0,#0]
000c2c e3c00003 BIC r0,r0,#3
000c30 e3a0144a MOV r1,#0x4a000000
000c34 e5810000 STR r0,[r1,#0]
;;;660 }
000c38 e12fff1e BX lr
ENDP
LcdEnableFifoInterrupt PROC
;;;662 void LcdEnableFifoInterrupt(U32 fifosel, U32 fifolevel)
;;;663 {
000c3c e3a0244a MOV r2,#0x4a000000
;;;664
;;;665 rLCDCON1 &= (~3); // ENVID Off
000c40 e5922000 LDR r2,[r2,#0]
000c44 e3c22003 BIC r2,r2,#3
000c48 e3a0344a MOV r3,#0x4a000000
000c4c e5832000 STR r2,[r3,#0]
;;;666 while(((rLCDCON2>>15)&0x3ff)); //waiting for end of current frame.
000c50 e1a00000 NOP
|L1.3156|
000c54 e3a0244a MOV r2,#0x4a000000
000c58 e5922004 LDR r2,[r2,#4]
000c5c e1a02382 MOV r2,r2,LSL #7
000c60 e1b02b22 MOVS r2,r2,LSR #22
000c64 1afffffa BNE |L1.3156|
;;;667 rLCDCON1 = rLCDCON1|(3); // ENVID On using Per Frame method
000c68 e3a0244a MOV r2,#0x4a000000
000c6c e5922000 LDR r2,[r2,#0]
000c70 e3822003 ORR r2,r2,#3
000c74 e3a0344a MOV r3,#0x4a000000
000c78 e5832000 STR r2,[r3,#0]
;;;668 rLCDINTCON=(rLCDINTCON&~(0x7f))|((0x3&fifosel)<<5)|((0x7&fifolevel)<<2)|(1<<1)|(1);
000c7c e3a0244a MOV r2,#0x4a000000
000c80 e5922050 LDR r2,[r2,#0x50]
000c84 e3c2207f BIC r2,r2,#0x7f
000c88 e2003003 AND r3,r0,#3
000c8c e1822283 ORR r2,r2,r3,LSL #5
000c90 e2013007 AND r3,r1,#7
000c94 e1822103 ORR r2,r2,r3,LSL #2
000c98 e3822003 ORR r2,r2,#3
000c9c e3a0344a MOV r3,#0x4a000000
000ca0 e5832050 STR r2,[r3,#0x50]
;;;669
;;;670 }
000ca4 e12fff1e BX lr
ENDP
LcdDisableFifoInterrupt PROC
;;;672 void LcdDisableFifoInterrupt(void)
;;;673 {
000ca8 e3a0044a MOV r0,#0x4a000000
;;;674
;;;675 rLCDINTCON &=~(3);
000cac e5900050 LDR r0,[r0,#0x50]
000cb0 e3c00003 BIC r0,r0,#3
000cb4 e3a0144a MOV r1,#0x4a000000
000cb8 e5810050 STR r0,[r1,#0x50]
;;;676 rLCDCON1 &= (~3); // ENVID Off
000cbc e3a0044a MOV r0,#0x4a000000
000cc0 e5900000 LDR r0,[r0,#0]
000cc4 e3c00003 BIC r0,r0,#3
000cc8 e3a0144a MOV r1,#0x4a000000
000ccc e5810000 STR r0,[r1,#0]
;;;677 }
000cd0 e12fff1e BX lr
ENDP
LcdSetFifoInterrupt PROC
;;;679 void LcdSetFifoInterrupt(U32 fifosel, U32 fifolevel)
;;;680 {
000cd4 e3a0244a MOV r2,#0x4a000000
;;;681 rLCDINTCON=(rLCDINTCON&~(0x1f<<2))|((0x3&fifosel)<<10)|((0x7&fifolevel)<<8)|(1<<1)|(1);
000cd8 e5922050 LDR r2,[r2,#0x50]
000cdc e3c2207c BIC r2,r2,#0x7c
000ce0 e2003003 AND r3,r0,#3
000ce4 e1822503 ORR r2,r2,r3,LSL #10
000ce8 e2013007 AND r3,r1,#7
000cec e1822403 ORR r2,r2,r3,LSL #8
000cf0 e3822003 ORR r2,r2,#3
000cf4 e3a0344a MOV r3,#0x4a000000
000cf8 e5832050 STR r2,[r3,#0x50]
;;;682 }
000cfc e12fff1e BX lr
ENDP
LcdOsdEnDiable PROC
;;;685 void LcdOsdEnDiable(U32 endisable)
;;;686 {
000d00 e3500001 CMP r0,#1
;;;687 if(endisable==1)
000d04 1a000005 BNE |L1.3360|
;;;688 rLCDOSD1 |= (1<<9);
000d08 e3a0144a MOV r1,#0x4a000000
000d0c e5911014 LDR r1,[r1,#0x14]
000d10 e3811f80 ORR r1,r1,#0x200
000d14 e3a0244a MOV r2,#0x4a000000
000d18 e5821014 STR r1,[r2,#0x14]
000d1c ea000004 B |L1.3380|
;;;689 else
;;;690 rLCDOSD1 &= (~(1<<9));
|L1.3360|
000d20 e3a0144a MOV r1,#0x4a000000
000d24 e5911014 LDR r1,[r1,#0x14]
000d28 e3c11f80 BIC r1,r1,#0x200
000d2c e3a0244a MOV r2,#0x4a000000
000d30 e5821014 STR r1,[r2,#0x14]
;;;691 }
|L1.3380|
000d34 e12fff1e BX lr
ENDP
LcdOsdSetAlpha PROC
;;;693 void LcdOsdSetAlpha(U32 alpha)
;;;694 {
000d38 e3a0144a MOV r1,#0x4a000000
;;;695 rLCDOSD1 = (rLCDOSD1 & ~(0xff))|(alpha & 0xff);
000d3c e5911014 LDR r1,[r1,#0x14]
000d40 e3c110ff BIC r1,r1,#0xff
000d44 e20020ff AND r2,r0,#0xff
000d48 e1811002 ORR r1,r1,r2
000d4c e3a0244a MOV r2,#0x4a000000
000d50 e5821014 STR r1,[r2,#0x14]
;;;696 }
000d54 e12fff1e BX lr
ENDP
LcdOsdSelectFunction PROC
;;;698 void LcdOsdSelectFunction(U32 function)
;;;699 {
000d58 e3500001 CMP r0,#1
;;;700 if(function==OSD_COLORKEY)
000d5c 1a000005 BNE |L1.3448|
;;;701 rLCDKEYCON|=(1<<25);
000d60 e3a0144a MOV r1,#0x4a000000
000d64 e5911054 LDR r1,[r1,#0x54]
000d68 e3811780 ORR r1,r1,#0x2000000
000d6c e3a0244a MOV r2,#0x4a000000
000d70 e5821054 STR r1,[r2,#0x54]
000d74 ea000006 B |L1.3476|
;;;702 else if(function==OSD_BLENDING)
|L1.3448|
000d78 e3500000 CMP r0,#0
000d7c 1a000004 BNE |L1.3476|
;;;703 rLCDKEYCON&=(~(1<<25));
000d80 e3a0144a MOV r1,#0x4a000000
000d84 e5911054 LDR r1,[r1,#0x54]
000d88 e3c11780 BIC r1,r1,#0x2000000
000d8c e3a0244a MOV r2,#0x4a000000
000d90 e5821054 STR r1,[r2,#0x54]
;;;704 }
|L1.3476|
000d94 e12fff1e BX lr
ENDP
LcdOsdChangeCoordination PROC
;;;706 void LcdOsdChangeCoordination(U32 topx, U32 topy, U32 botx, U32 boty)
;;;707 {
000d98 e52de004 STR lr,[sp,#-4]!
;;;708 rLCDOSD2=(rLCDOSD2&~(0x3fffff))|((0x3ff&topx)<<11)|(0x3ff&topy);
000d9c e3a0c44a MOV r12,#0x4a000000
000da0 e59cc018 LDR r12,[r12,#0x18]
000da4 e1a0cb2c MOV r12,r12,LSR #22
000da8 e1a0cb0c MOV r12,r12,LSL #22
000dac e1a0eb00 MOV lr,r0,LSL #22
000db0 e1a0eb2e MOV lr,lr,LSR #22
000db4 e18cc58e ORR r12,r12,lr,LSL #11
000db8 e1a0eb01 MOV lr,r1,LSL #22
000dbc e1a0eb2e MOV lr,lr,LSR #22
000dc0 e18cc00e ORR r12,r12,lr
000dc4 e3a0e44a MOV lr,#0x4a000000
000dc8 e58ec018 STR r12,[lr,#0x18]
;;;709 rLCDOSD3=(rLCDOSD3&~(0x3fffff))|((0x3ff&botx)<<11)|(0x3ff&boty);
000dcc e3a0c44a MOV r12,#0x4a000000
000dd0 e59cc01c LDR r12,[r12,#0x1c]
000dd4 e1a0cb2c MOV r12,r12,LSR #22
000dd8 e1a0cb0c MOV r12,r12,LSL #22
000ddc e1a0eb02 MOV lr,r2,LSL #22
000de0 e1a0eb2e MOV lr,lr,LSR #22
000de4 e18cc58e ORR r12,r12,lr,LSL #11
000de8 e1a0eb03 MOV lr,r3,LSL #22
000dec e1a0eb2e MOV lr,lr,LSR #22
000df0 e18cc00e ORR r12,r12,lr
000df4 e3a0e44a MOV lr,#0x4a000000
000df8 e58ec01c STR r12,[lr,#0x1c]
;;;710 }
000dfc e49df004 LDR pc,[sp],#4
ENDP
LcdDitheringEnDisable PROC
;;;711 void LcdDitheringEnDisable(U32 endisable)
;;;712 {
000e00 e3500001 CMP r0,#1
;;;713 if(endisable==1)
000e04 1a000005 BNE |L1.3616|
;;;714 rLCDDITHCON|=1;
000e08 e3a0144a MOV r1,#0x4a000000
000e0c e5911064 LDR r1,[r1,#0x64]
000e10 e3811001 ORR r1,r1,#1
000e14 e3a0244a MOV r2,#0x4a000000
000e18 e5821064 STR r1,[r2,#0x64]
000e1c ea000004 B |L1.3636|
;;;715 else
;;;716 rLCDDITHCON&=(~1);
|L1.3616|
000e20 e3a0144a MOV r1,#0x4a000000
000e24 e5911064 LDR r1,[r1,#0x64]
000e28 e3c11001 BIC r1,r1,#1
000e2c e3a0244a MOV r2,#0x4a000000
000e30 e5821064 STR r1,[r2,#0x64]
;;;717 }
|L1.3636|
000e34 e12fff1e BX lr
ENDP
LcdBGColorMap PROC
;;;720 void LcdBGColorMap(U32 endisable, U32 bgcolor)
;;;721 {
000e38 e3a0244a MOV r2,#0x4a000000
;;;722 rLCDBGCON=(rLCDBGCON&~(0xffffff))|(0xffffff&bgcolor);
000e3c e592205c LDR r2,[r2,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -