📄 guidev.txt
字号:
ENDP
AREA ||i.GUI_MEMDEV__GetIndexMask||, CODE, READONLY, ALIGN=2
GUI_MEMDEV__GetIndexMask PROC
;;;73 */
;;;74 unsigned int GUI_MEMDEV__GetIndexMask(void) {
000000 b510 PUSH {r4,lr}
;;;75 GUI_MEMDEV * pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000002 4804 LDR r0,|L9.20|
000004 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
000008 f7fffffe BL GUI_ALLOC_h2p
;;;76 return pDev->pfGetIndexMask();
00000c 6a40 LDR r0,[r0,#0x24]
00000e e8bd4010 POP {r4,lr}
000012 4700 BX r0
;;;77 }
;;;78
ENDP
|L9.20|
DCD GUI_Context
AREA ||i.GUI_MEMDEV__GetRect||, CODE, READONLY, ALIGN=2
GUI_MEMDEV__GetRect PROC
;;;43 */
;;;44 void GUI_MEMDEV__GetRect(GUI_RECT* pRect) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;45 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4809 LDR r0,|L10.44|
000006 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000a f7fffffe BL GUI_ALLOC_h2p
;;;46 pRect->x0 = pDev->x0;
00000e 8801 LDRH r1,[r0,#0]
000010 8021 STRH r1,[r4,#0]
;;;47 pRect->y0 = pDev->y0;
000012 8841 LDRH r1,[r0,#2]
000014 8061 STRH r1,[r4,#2]
;;;48 pRect->x1 = pDev->x0 + pDev->XSize-1;
000016 8801 LDRH r1,[r0,#0]
000018 8882 LDRH r2,[r0,#4]
00001a 4411 ADD r1,r1,r2
00001c 1e49 SUBS r1,r1,#1
00001e 80a1 STRH r1,[r4,#4]
;;;49 pRect->y1 = pDev->y0 + pDev->YSize-1;
000020 8841 LDRH r1,[r0,#2]
000022 88c0 LDRH r0,[r0,#6]
000024 4408 ADD r0,r0,r1
000026 1e40 SUBS r0,r0,#1
000028 80e0 STRH r0,[r4,#6]
;;;50 }
00002a bd10 POP {r4,pc}
;;;51
ENDP
|L10.44|
DCD GUI_Context
AREA ||i.GUI_MEMDEV__Index2Color||, CODE, READONLY, ALIGN=2
GUI_MEMDEV__Index2Color PROC
;;;64 */
;;;65 LCD_COLOR GUI_MEMDEV__Index2Color(int Index) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;66 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4804 LDR r0,|L11.24|
000006 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000a f7fffffe BL GUI_ALLOC_h2p
;;;67 return pDev->pfIndex2Color(Index);
00000e 6a01 LDR r1,[r0,#0x20]
000010 4620 MOV r0,r4
000012 e8bd4010 POP {r4,lr}
000016 4708 BX r1
;;;68 }
;;;69
ENDP
|L11.24|
DCD GUI_Context
AREA ||i.GUI_MEMDEV__WriteToActiveAt||, CODE, READONLY, ALIGN=1
GUI_MEMDEV__WriteToActiveAt PROC
;;;253 */
;;;254 void GUI_MEMDEV__WriteToActiveAt(GUI_MEMDEV_Handle hMem,int x, int y) {
000000 e92d4ff7 PUSH {r0-r2,r4-r11,lr}
000004 b08a SUB sp,sp,#0x28
000006 4692 MOV r10,r2
;;;255 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(hMem);
000008 f7fffffe BL GUI_ALLOC_h2p
00000c 4607 MOV r7,r0
;;;256 GUI_USAGE_h hUsage = pDev->hUsage;
00000e f9b00018 LDRSH r0,[r0,#0x18]
;;;257 GUI_USAGE* pUsage;
;;;258 int YSize = pDev->YSize;
000012 f9b71006 LDRSH r1,[r7,#6]
;;;259 int yi;
;;;260 unsigned int BytesPerLine = pDev->BytesPerLine;
000016 9109 STR r1,[sp,#0x24]
;;;261 unsigned int BitsPerPixel = pDev->BitsPerPixel;
000018 e9d7b103 LDRD r11,r1,[r7,#0xc]
;;;262 int BytesPerPixel = BitsPerPixel >> 3;
00001c 9108 STR r1,[sp,#0x20]
00001e 08c9 LSRS r1,r1,#3
;;;263 U8* pData = (U8*)(pDev+1);
000020 f107062c ADD r6,r7,#0x2c
;;;264 if (hUsage) {
000024 9107 STR r1,[sp,#0x1c]
000026 2800 CMP r0,#0
000028 d05f BEQ |L12.234|
;;;265 pUsage = GUI_USAGE_H2P(hUsage);
00002a f7fffffe BL GUI_ALLOC_h2p
00002e 4680 MOV r8,r0
;;;266 for (yi = 0; yi < YSize; yi++) {
000030 2400 MOVS r4,#0
000032 e054 B |L12.222|
|L12.52|
;;;267 int xOff = 0;
000034 2000 MOVS r0,#0
;;;268 int XSize;
;;;269 XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
000036 9006 STR r0,[sp,#0x18]
000038 f8d80008 LDR r0,[r8,#8]
00003c 4622 MOV r2,r4
00003e 6943 LDR r3,[r0,#0x14]
000040 a906 ADD r1,sp,#0x18
000042 4640 MOV r0,r8
000044 4798 BLX r3
;;;270 if (XSize == pDev->XSize) {
000046 f9b71004 LDRSH r1,[r7,#4]
00004a 4605 MOV r5,r0 ;269
00004c 4281 CMP r1,r0
00004e d142 BNE |L12.214|
;;;271 /* If the entire line is affected, calculate the number of entire lines */
;;;272 int y0 = yi;
000050 46a1 MOV r9,r4
;;;273 while ((GUI_USAGE_GetNextDirty(pUsage, &xOff, yi + 1)) == XSize) {
000052 e000 B |L12.86|
|L12.84|
;;;274 yi++;
000054 1c64 ADDS r4,r4,#1
|L12.86|
000056 f8d80008 LDR r0,[r8,#8] ;273
00005a 1c62 ADDS r2,r4,#1 ;273
00005c 6943 LDR r3,[r0,#0x14] ;273
00005e a906 ADD r1,sp,#0x18 ;273
000060 4640 MOV r0,r8 ;273
000062 4798 BLX r3 ;273
000064 42a8 CMP r0,r5 ;273
000066 d0f5 BEQ |L12.84|
;;;275 }
;;;276 LCD_DrawBitmap(x, y + y0, pDev->XSize, yi - y0 + 1, 1, 1, BitsPerPixel, BytesPerLine, pData, NULL);
000068 9808 LDR r0,[sp,#0x20]
00006a e9cdb603 STRD r11,r6,[sp,#0xc]
00006e 2300 MOVS r3,#0
000070 9305 STR r3,[sp,#0x14]
000072 2301 MOVS r3,#1
000074 9301 STR r3,[sp,#4]
000076 9300 STR r3,[sp,#0]
000078 9002 STR r0,[sp,#8]
00007a eba40309 SUB r3,r4,r9
00007e 461d MOV r5,r3
000080 1c5b ADDS r3,r3,#1
000082 f9b72004 LDRSH r2,[r7,#4]
000086 eb0a0109 ADD r1,r10,r9
00008a 980b LDR r0,[sp,#0x2c]
00008c f7fffffe BL LCD_DrawBitmap
;;;277 pData += (yi - y0 + 1) * BytesPerLine;
000090 1c6b ADDS r3,r5,#1
000092 fb03660b MLA r6,r3,r11,r6
;;;278 } else {
000096 e021 B |L12.220|
|L12.152|
;;;279 /* Draw the partial line which needs to be drawn */
;;;280 for (; XSize; ) {
;;;281 LCD_DrawBitmap(x + xOff, y + yi, XSize, 1, 1, 1, BitsPerPixel, BytesPerLine, pData + xOff * BytesPerPixel, NULL);
000098 e9ddc006 LDRD r12,r0,[sp,#0x18]
00009c fb0c6200 MLA r2,r12,r0,r6
0000a0 9808 LDR r0,[sp,#0x20]
0000a2 e9cdb203 STRD r11,r2,[sp,#0xc]
0000a6 2300 MOVS r3,#0
0000a8 9305 STR r3,[sp,#0x14]
0000aa 2301 MOVS r3,#1
0000ac 9002 STR r0,[sp,#8]
0000ae 9301 STR r3,[sp,#4]
0000b0 980b LDR r0,[sp,#0x2c]
0000b2 9300 STR r3,[sp,#0]
0000b4 eb0a0104 ADD r1,r10,r4
0000b8 4460 ADD r0,r0,r12
0000ba 462a MOV r2,r5
0000bc f7fffffe BL LCD_DrawBitmap
;;;282 xOff += XSize;
0000c0 9806 LDR r0,[sp,#0x18]
;;;283 XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
0000c2 4622 MOV r2,r4
0000c4 4428 ADD r0,r0,r5 ;282
0000c6 9006 STR r0,[sp,#0x18]
0000c8 f8d80008 LDR r0,[r8,#8]
0000cc a906 ADD r1,sp,#0x18
0000ce 6943 LDR r3,[r0,#0x14]
0000d0 4640 MOV r0,r8
0000d2 4798 BLX r3
0000d4 4605 MOV r5,r0
|L12.214|
0000d6 2d00 CMP r5,#0 ;280
0000d8 d1de BNE |L12.152|
;;;284 }
;;;285 pData += BytesPerLine;
0000da 445e ADD r6,r6,r11
|L12.220|
0000dc 1c64 ADDS r4,r4,#1 ;266
|L12.222|
0000de 9809 LDR r0,[sp,#0x24] ;266
0000e0 4284 CMP r4,r0 ;266
0000e2 dba7 BLT |L12.52|
|L12.228|
;;;286 }
;;;287 }
;;;288 } else {
;;;289 LCD_DrawBitmap(x, y, pDev->XSize, YSize, 1, 1, BitsPerPixel, BytesPerLine, pData, NULL);
;;;290 }
;;;291 }
0000e4 b00d ADD sp,sp,#0x34
0000e6 e8bd8ff0 POP {r4-r11,pc}
|L12.234|
0000ea 9808 LDR r0,[sp,#0x20] ;289
0000ec e9cdb603 STRD r11,r6,[sp,#0xc] ;289
0000f0 2300 MOVS r3,#0 ;289
0000f2 9305 STR r3,[sp,#0x14] ;289
0000f4 2301 MOVS r3,#1 ;289
0000f6 9301 STR r3,[sp,#4] ;289
0000f8 9002 STR r0,[sp,#8] ;289
0000fa 9300 STR r3,[sp,#0] ;289
0000fc f9b72004 LDRSH r2,[r7,#4] ;289
000100 4651 MOV r1,r10 ;289
000102 9b09 LDR r3,[sp,#0x24] ;289
000104 980b LDR r0,[sp,#0x2c] ;289
000106 f7fffffe BL LCD_DrawBitmap
00010a e7eb B |L12.228|
;;;292
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -