📄 guidev_writeex.txt
字号:
000060 4601 MOV r1,r0
;;;68 Color2 = LCD_MixColors256(Color1, Color2, Intens);
000062 465a MOV r2,r11
000064 4630 MOV r0,r6
000066 f7fffffe BL LCD_MixColors256
;;;69 *(pData++) = LCD_Color2Index(Color2);
00006a f7fffffe BL LCD_Color2Index
00006e f8040b01 STRB r0,[r4],#1
|L5.114|
000072 1e6d SUBS r5,r5,#1 ;66
000074 d2f1 BCS |L5.90|
|L5.118|
;;;70 }
;;;71 } else {
;;;72 U16* pData;
;;;73 pData = (U16*) GUI_MEMDEV__XY2PTR(x0, y);
;;;74 while (Len--) {
;;;75 Color2 = LCD_Index2Color(*(pData));
;;;76 Color2 = LCD_MixColors256(Color1, Color2, Intens);
;;;77 *(pData++) = LCD_Color2Index(Color2);
;;;78 }
;;;79 }
;;;80 }
000076 e8bd9ff0 POP {r4-r12,pc}
|L5.122|
00007a f7fffffe BL GUI_MEMDEV__XY2PTR
00007e 4604 MOV r4,r0 ;73
000080 e00b B |L5.154|
|L5.130|
000082 8820 LDRH r0,[r4,#0] ;75
000084 f7fffffe BL LCD_Index2Color
000088 4601 MOV r1,r0 ;75
00008a 465a MOV r2,r11 ;76
00008c 4630 MOV r0,r6 ;76
00008e f7fffffe BL LCD_MixColors256
000092 f7fffffe BL LCD_Color2Index
000096 f8240b02 STRH r0,[r4],#2 ;77
|L5.154|
00009a 1e6d SUBS r5,r5,#1 ;74
00009c d2f1 BCS |L5.130|
00009e e7ea B |L5.118|
;;;81
ENDP
|L5.160|
DCD GUI_Context
AREA ||i._WriteExToActiveAt||, CODE, READONLY, ALIGN=2
_WriteExToActiveAt PROC
;;;180 */
;;;181 static void _WriteExToActiveAt(GUI_MEMDEV_Handle hMem, int x, int y, int xMag, int yMag, int Alpha) {
000000 e92d4fff PUSH {r0-r11,lr}
000004 b08f SUB sp,sp,#0x3c
000006 4691 MOV r9,r2
;;;182 GUI_MEMDEV* pDev;
;;;183 GUI_USAGE_h hUsage;
;;;184 GUI_USAGE* pUsage;
;;;185 U8* pData;
;;;186 int yAct, yPrev, ySize, yi;
;;;187 int BytesPerLine, bpp;
;;;188 pDev = GUI_MEMDEV_H2P(hMem);
000008 f8dda070 LDR r10,[sp,#0x70]
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4605 MOV r5,r0
;;;189 hUsage = pDev->hUsage;
000012 f9b00018 LDRSH r0,[r0,#0x18]
;;;190 ySize = pDev->YSize;
000016 f9b54006 LDRSH r4,[r5,#6]
;;;191 BytesPerLine = pDev->BytesPerLine;
00001a 68e9 LDR r1,[r5,#0xc]
;;;192 pData = (U8*)(pDev + 1);
00001c 910d STR r1,[sp,#0x34]
00001e f105012c ADD r1,r5,#0x2c
;;;193 bpp = pDev->BitsPerPixel;
000022 910e STR r1,[sp,#0x38]
000024 6929 LDR r1,[r5,#0x10]
000026 46a3 MOV r11,r4 ;190
;;;194 yPrev = y + 1;
000028 f1090601 ADD r6,r9,#1
;;;195 if (hUsage) {
00002c 910c STR r1,[sp,#0x30]
00002e 2800 CMP r0,#0
000030 d079 BEQ |L6.294|
;;;196 int xOff, xSize, y0;
;;;197 pUsage = GUI_USAGE_H2P(hUsage);
000032 f7fffffe BL GUI_ALLOC_h2p
000036 4607 MOV r7,r0
;;;198 for (yi = 0; yi < ySize; yi++) {
000038 2400 MOVS r4,#0
00003a e06e B |L6.282|
|L6.60|
;;;199 yAct = y + GUI__DivideRound32(((I32)(yi) * yMag), 1000);
00003c fb04f00a MUL r0,r4,r10
000040 f44f717a MOV r1,#0x3e8
000044 f7fffffe BL GUI__DivideRound32
000048 eb000809 ADD r8,r0,r9
;;;200 if (yAct != yPrev) {
00004c 45b0 CMP r8,r6
00004e d063 BEQ |L6.280|
;;;201 xOff = 0;
000050 2000 MOVS r0,#0
;;;202 xSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
000052 900b STR r0,[sp,#0x2c]
000054 68b8 LDR r0,[r7,#8]
000056 4622 MOV r2,r4
000058 6943 LDR r3,[r0,#0x14]
00005a a90b ADD r1,sp,#0x2c
00005c 4638 MOV r0,r7
00005e 4798 BLX r3
;;;203 if (xSize == pDev->XSize) {
000060 f9b51004 LDRSH r1,[r5,#4]
000064 4606 MOV r6,r0 ;202
000066 4281 CMP r1,r0
000068 d153 BNE |L6.274|
;;;204 /* If the entire line is affected, calculate the number of entire lines */
;;;205 y0 = yi;
00006a 46a0 MOV r8,r4
;;;206 while (GUI_USAGE_GetNextDirty(pUsage, &xOff, yi + 1) == xSize) {
00006c e000 B |L6.112|
|L6.110|
;;;207 yi++;
00006e 1c64 ADDS r4,r4,#1
|L6.112|
000070 68b8 LDR r0,[r7,#8] ;206
000072 1c62 ADDS r2,r4,#1 ;206
000074 6943 LDR r3,[r0,#0x14] ;206
000076 a90b ADD r1,sp,#0x2c ;206
000078 4638 MOV r0,r7 ;206
00007a 4798 BLX r3 ;206
00007c 42b0 CMP r0,r6 ;206
00007e d0f6 BEQ |L6.110|
;;;208 }
;;;209 _DrawBitmapEx(x, y, 0, y0, pDev->XSize, yi - y0 + 1, xMag, yMag, Alpha,
000080 a90c ADD r1,sp,#0x30
000082 c90e LDM r1,{r1-r3}
000084 f9b50006 LDRSH r0,[r5,#6]
000088 e9cd2308 STRD r2,r3,[sp,#0x20]
00008c e9cd0106 STRD r0,r1,[sp,#0x18]
000090 f9b53004 LDRSH r3,[r5,#4]
000094 9a1d LDR r2,[sp,#0x74]
000096 9812 LDR r0,[sp,#0x48]
000098 e9cda203 STRD r10,r2,[sp,#0xc]
00009c 461e MOV r6,r3
00009e 9305 STR r3,[sp,#0x14]
0000a0 eba40308 SUB r3,r4,r8
0000a4 1c5b ADDS r3,r3,#1
0000a6 e9cd6300 STRD r6,r3,[sp,#0]
0000aa 9002 STR r0,[sp,#8]
0000ac 4643 MOV r3,r8
0000ae 2200 MOVS r2,#0
0000b0 4649 MOV r1,r9
0000b2 9810 LDR r0,[sp,#0x40]
0000b4 f7fffffe BL _DrawBitmapEx
;;;210 pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;211 yPrev = y + GUI__DivideRound32(((I32)(yi) * yMag), 1000);
0000b8 fb04f00a MUL r0,r4,r10
0000bc f44f717a MOV r1,#0x3e8
0000c0 f7fffffe BL GUI__DivideRound32
0000c4 eb000609 ADD r6,r0,r9
0000c8 e026 B |L6.280|
;;;212 } else {
;;;213 /* Draw the partial line which needs to be drawn */
;;;214 while (xSize) {
;;;215 _DrawBitmapEx(x, y, xOff, yi, xSize, 1, xMag, yMag, Alpha,
0000ca bf00 NOP
|L6.204|
0000cc a90c ADD r1,sp,#0x30
0000ce c90e LDM r1,{r1-r3}
0000d0 f9b50006 LDRSH r0,[r5,#6]
0000d4 e9cd2308 STRD r2,r3,[sp,#0x20]
0000d8 e9cd0106 STRD r0,r1,[sp,#0x18]
0000dc 9a1d LDR r2,[sp,#0x74]
0000de f9b53004 LDRSH r3,[r5,#4]
0000e2 9812 LDR r0,[sp,#0x48]
0000e4 e9cda203 STRD r10,r2,[sp,#0xc]
0000e8 9305 STR r3,[sp,#0x14]
0000ea 2301 MOVS r3,#1
0000ec e9cd6300 STRD r6,r3,[sp,#0]
0000f0 9002 STR r0,[sp,#8]
0000f2 4623 MOV r3,r4
0000f4 4649 MOV r1,r9
0000f6 9a0b LDR r2,[sp,#0x2c]
0000f8 9810 LDR r0,[sp,#0x40]
0000fa f7fffffe BL _DrawBitmapEx
;;;216 pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;217 xOff += xSize;
0000fe 980b LDR r0,[sp,#0x2c]
;;;218 xSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
000100 4622 MOV r2,r4
000102 4430 ADD r0,r0,r6 ;217
000104 900b STR r0,[sp,#0x2c]
000106 68b8 LDR r0,[r7,#8]
000108 a90b ADD r1,sp,#0x2c
00010a 6943 LDR r3,[r0,#0x14]
00010c 4638 MOV r0,r7
00010e 4798 BLX r3
000110 4606 MOV r6,r0
|L6.274|
000112 2e00 CMP r6,#0 ;214
000114 d1da BNE |L6.204|
;;;219 }
;;;220 yPrev = yAct;
000116 4646 MOV r6,r8
|L6.280|
000118 1c64 ADDS r4,r4,#1 ;198
|L6.282|
00011a 455c CMP r4,r11 ;198
00011c db8e BLT |L6.60|
|L6.286|
;;;221 }
;;;222 }
;;;223 }
;;;224 } else {
;;;225 _DrawBitmapEx(x, y, 0, 0, pDev->XSize, ySize, xMag, yMag, Alpha,
;;;226 pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;227 }
;;;228 }
00011e b013 ADD sp,sp,#0x4c
000120 e8bd8ff0 POP {r4-r11,pc}
000124 e7ff B |L6.294|
|L6.294|
000126 e9dd230d LDRD r2,r3,[sp,#0x34] ;225
00012a e9cd4106 STRD r4,r1,[sp,#0x18] ;225
00012e e9cd2308 STRD r2,r3,[sp,#0x20] ;225
000132 f9b53004 LDRSH r3,[r5,#4] ;225
000136 9a1d LDR r2,[sp,#0x74] ;225
000138 9812 LDR r0,[sp,#0x48] ;225
00013a e9cda203 STRD r10,r2,[sp,#0xc] ;225
00013e 461d MOV r5,r3 ;225
000140 e9cd5400 STRD r5,r4,[sp,#0] ;225
000144 9305 STR r3,[sp,#0x14] ;225
000146 9002 STR r0,[sp,#8] ;225
000148 2300 MOVS r3,#0 ;225
00014a 461a MOV r2,r3 ;225
00014c 4649 MOV r1,r9 ;225
00014e 9810 LDR r0,[sp,#0x40] ;225
000150 f7fffffe BL _DrawBitmapEx
000154 e7e3 B |L6.286|
;;;229
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -