📄 dashboard.txt
字号:
000048 f7fff7ff BL __aeabi_dadd
00004c a224 ADR r2,|L10.224|
00004e ca0c LDM r2,{r2,r3}
000050 f7fff7ff BL __aeabi_ddiv
000054 f7fff7ff BL __aeabi_d2f
000058 4681 MOV r9,r0
;;;6452 _MagnifyPolygon(_aNeedle, _aNeedleSrc[Shape], NumPoints, Radius / 100.);
00005a 4923 LDR r1,|L10.232|
00005c eb05eb05 ADD r0,r5,r5,LSL #2
000060 eb01eb01 ADD r5,r1,r0,LSL #2
000064 4638 MOV r0,r7
000066 f7fff7ff BL __aeabi_i2d
00006a 4604 MOV r4,r0
00006c a01f ADR r0,|L10.236|
00006e c80c LDM r0!,{r2,r3}
000070 4620 MOV r0,r4
000072 f7fff7ff BL __aeabi_ddiv
000076 f7fff7ff BL __aeabi_d2f
00007a 4f1e LDR r7,|L10.244|
00007c 4680 MOV r8,r0
00007e 2400 MOVS r4,#0
|L10.128|
000080 f935f935 LDRSH r0,[r5,r4,LSL #2]
000084 f7fff7ff BL __aeabi_i2f
000088 4641 MOV r1,r8
00008a f7fff7ff BL __aeabi_fmul
00008e f7fff7ff BL __aeabi_f2iz
000092 f827f827 STRH r0,[r7,r4,LSL #2]
000096 eb05eb05 ADD r0,r5,r4,LSL #2
00009a f9b0f9b0 LDRSH r0,[r0,#2]
00009e f7fff7ff BL __aeabi_i2f
0000a2 4641 MOV r1,r8
0000a4 f7fff7ff BL __aeabi_fmul
0000a8 f7fff7ff BL __aeabi_f2iz
0000ac eb07eb07 ADD r1,r7,r4,LSL #2
0000b0 1c64 ADDS r4,r4,#1
0000b2 8048 STRH r0,[r1,#2]
0000b4 42b4 CMP r4,r6
0000b6 dbe3 BLT |L10.128|
;;;6453 GUI_RotatePolygon(_aNeedle, _aNeedle, NumPoints, Angel);
0000b8 490e LDR r1,|L10.244|
0000ba 464b MOV r3,r9
0000bc 4632 MOV r2,r6
0000be 4608 MOV r0,r1
0000c0 f7fff7ff BL GUI_RotatePolygon
;;;6454 return NumPoints;
0000c4 4630 MOV r0,r6
;;;6455 }
0000c6 e8bde8bd POP {r4-r10,pc}
;;;6456
ENDP
0000ca 0000 DCW 0x0000
|L10.204|
0000cc 00000018 DCD ||.data||+0x18
|L10.208|
0000d0 544486e0
0000d4 400921fb DCFD 0x400921fb544486e0 ; 3.1415926536000001
|L10.216|
0000d8 00000000
0000dc 40868000 DCFD 0x4086800000000000 ; 720
|L10.224|
0000e0 00000000
0000e4 c0668000 DCFD 0xc066800000000000 ; -180
|L10.232|
0000e8 00001484 DCD ||.constdata||+0x1484
|L10.236|
0000ec 00000000
0000f0 40590000 DCFD 0x4059000000000000 ; 100
|L10.244|
0000f4 000005e0 DCD ||.bss||+0x5e0
AREA ||i._CalcPointX||, CODE, READONLY, ALIGN=2
_CalcPointX PROC
;;;6460 */
;;;6461 static int _CalcPointX(int r, int Angel) {
000000 b570 PUSH {r4-r6,lr}
000002 4606 MOV r6,r0
;;;6462 return r * cos((Angel - 90) * PI / 180.);
000004 f1a1f1a1 SUB r0,r1,#0x5a
000008 f7fff7ff BL __aeabi_i2d
00000c 4604 MOV r4,r0
00000e a00d ADR r0,|L11.68|
000010 c80c LDM r0!,{r2,r3}
000012 4620 MOV r0,r4
000014 f7fff7ff BL __aeabi_dmul
000018 4604 MOV r4,r0
00001a a00c ADR r0,|L11.76|
00001c c80c LDM r0!,{r2,r3}
00001e 4620 MOV r0,r4
000020 f7fff7ff BL __aeabi_ddiv
000024 f7fff7ff BL ||cos||
000028 4605 MOV r5,r0
00002a 460c MOV r4,r1
00002c 4630 MOV r0,r6
00002e f7fff7ff BL __aeabi_i2d
000032 4623 MOV r3,r4
000034 462a MOV r2,r5
000036 f7fff7ff BL __aeabi_dmul
00003a e8bde8bd POP {r4-r6,lr}
00003e f7fff7ff B.W __aeabi_d2iz
;;;6463 }
;;;6464
ENDP
000042 0000 DCW 0x0000
|L11.68|
000044 544486e0
000048 400921fb DCFD 0x400921fb544486e0 ; 3.1415926536000001
|L11.76|
00004c 00000000
000050 40668000 DCFD 0x4066800000000000 ; 180
AREA ||i._CalcPointY||, CODE, READONLY, ALIGN=2
_CalcPointY PROC
;;;6468 */
;;;6469 static int _CalcPointY(int r, int Angel) {
000000 b570 PUSH {r4-r6,lr}
000002 4606 MOV r6,r0
;;;6470 return r * sin((Angel - 90) * PI / 180.);
000004 f1a1f1a1 SUB r0,r1,#0x5a
000008 f7fff7ff BL __aeabi_i2d
00000c 4604 MOV r4,r0
00000e a00d ADR r0,|L12.68|
000010 c80c LDM r0!,{r2,r3}
000012 4620 MOV r0,r4
000014 f7fff7ff BL __aeabi_dmul
000018 4604 MOV r4,r0
00001a a00c ADR r0,|L12.76|
00001c c80c LDM r0!,{r2,r3}
00001e 4620 MOV r0,r4
000020 f7fff7ff BL __aeabi_ddiv
000024 f7fff7ff BL ||sin||
000028 4605 MOV r5,r0
00002a 460c MOV r4,r1
00002c 4630 MOV r0,r6
00002e f7fff7ff BL __aeabi_i2d
000032 4623 MOV r3,r4
000034 462a MOV r2,r5
000036 f7fff7ff BL __aeabi_dmul
00003a e8bde8bd POP {r4-r6,lr}
00003e f7fff7ff B.W __aeabi_d2iz
;;;6471 }
;;;6472
ENDP
000042 0000 DCW 0x0000
|L12.68|
000044 544486e0
000048 400921fb DCFD 0x400921fb544486e0 ; 3.1415926536000001
|L12.76|
00004c 00000000
000050 40668000 DCFD 0x4066800000000000 ; 180
AREA ||i._GetNeedleRect||, CODE, READONLY, ALIGN=2
_GetNeedleRect PROC
;;;6503 */
;;;6504 static void _GetNeedleRect(const SCALE* pObj, int Index, GUI_RECT* pRect) {
000000 e92de92d PUSH {r4-r10,lr}
000004 4680 MOV r8,r0
000006 4691 MOV r9,r2
;;;6505 int NumPoints, i;
;;;6506 int x, y, r;
;;;6507 int x0 = 4096, y0 = 4096;
;;;6508 int x1 = -4096, y1 = -4096;
;;;6509 r = (pObj->ArcRadius + pObj->PenSize3) * pObj->NeedleRadius / 100;
000008 6980 LDR r0,[r0,#0x18]
00000a f8d8f8d8 LDR r2,[r8,#0x44]
00000e f44ff44f MOV r4,#0x1000 ;6507
000012 4410 ADD r0,r0,r2
000014 f8d8f8d8 LDR r2,[r8,#0x4c]
000018 4266 RSBS r6,r4,#0 ;6508
00001a 4350 MULS r0,r2,r0
00001c 2264 MOVS r2,#0x64
00001e fb90fb90 SDIV r2,r0,r2
000022 4625 MOV r5,r4 ;6507
000024 4637 MOV r7,r6 ;6508
;;;6510 NumPoints = _CalcNeedle(pObj, Index, r);
000026 4640 MOV r0,r8
000028 f7fff7ff BL _CalcNeedle
;;;6511 for (i = 0; i < NumPoints; i++) {
00002c 2100 MOVS r1,#0
00002e f8dff8df LDR r12,|L13.160|
000032 f04ff04f MOV lr,#6
000036 e016 B |L13.102|
|L13.56|
;;;6512 x = _aNeedle[i].x / FACTOR;
000038 f93cf93c LDRSH r2,[r12,r1,LSL #2]
;;;6513 y = _aNeedle[i].y / FACTOR;
00003c eb0ceb0c ADD r3,r12,r1,LSL #2
000040 f9b3f9b3 LDRSH r3,[r3,#2]
000044 fb92fb92 SDIV r2,r2,lr ;6512
000048 fb93fb93 SDIV r3,r3,lr
;;;6514 x0 = _Min(x0, x);
00004c 4294 CMP r4,r2
00004e db00 BLT |L13.82|
000050 4614 MOV r4,r2
|L13.82|
;;;6515 y0 = _Min(y0, y);
000052 429d CMP r5,r3
000054 db00 BLT |L13.88|
000056 461d MOV r5,r3
|L13.88|
;;;6516 x1 = _Max(x1, x);
000058 4296 CMP r6,r2
00005a dc00 BGT |L13.94|
00005c 4616 MOV r6,r2
|L13.94|
;;;6517 y1 = _Max(y1, y);
00005e 429f CMP r7,r3
000060 dc00 BGT |L13.100|
000062 461f MOV r7,r3
|L13.100|
000064 1c49 ADDS r1,r1,#1 ;6511
|L13.102|
000066 4281 CMP r1,r0 ;6511
000068 dbe6 BLT |L13.56|
;;;6518 }
;;;6519 pRect->x0 = pObj->x0 + x0 - 1;
00006a f8d8f8d8 LDR r0,[r8,#8]
00006e 1e64 SUBS r4,r4,#1
000070 4420 ADD r0,r0,r4
000072 f8a9f8a9 STRH r0,[r9,#0]
;;;6520 pRect->y0 = pObj->y0 + y0 - 1;
000076 f8d8f8d8 LDR r0,[r8,#0xc]
00007a 1e6d SUBS r5,r5,#1
00007c 4428 ADD r0,r0,r5
00007e f8a9f8a9 STRH r0,[r9,#2]
;;;6521 pRect->x1 = pObj->x0 + x1 + 1;
000082 f8d8f8d8 LDR r0,[r8,#8]
000086 1c76 ADDS r6,r6,#1
000088 4430 ADD r0,r0,r6
00008a f8a9f8a9 STRH r0,[r9,#4]
;;;6522 pRect->y1 = pObj->y0 + y1 + 1;
00008e f8d8f8d8 LDR r0,[r8,#0xc]
000092 1c7f ADDS r7,r7,#1
000094 4438 ADD r0,r0,r7
000096 f8a9f8a9 STRH r0,[r9,#6]
;;;6523 }
00009a e8bde8bd POP {r4-r10,pc}
;;;6524
ENDP
00009e 0000 DCW 0x0000
|L13.160|
0000a0 000005e0 DCD ||.bss||+0x5e0
AREA ||i._MoveNeedle||, CODE, READONLY, ALIGN=2
_MoveNeedle PROC
;;;6539 */
;;;6540 static void _MoveNeedle(NEEDLE* pObj, int Index) {
000000 e92de92d PUSH {r0-r8,lr}
000004 4604 MOV r4,r0
;;;6541 if (pObj->NeedleUPM) {
000006 6840 LDR r0,[r0,#4]
000008 460f MOV r7,r1 ;6540
00000a 2800 CMP r0,#0
00000c d059 BEQ |L14.194|
;;;6542 GUI_RECT rOld, rNew;
;;;6543 int Dif, Time;
;;;6544 _GetNeedleRect(&_Scale[Index], Index, &rOld);
00000e 202f MOVS r0,#0x2f
000010 492d LDR r1,|L14.200|
000012 4378 MULS r0,r7,r0
000014 eb01eb01 ADD r6,r1,r0,LSL #2
000018 aa02 ADD r2,sp,#8
00001a 4639 MOV r1,r7
00001c 4630 MOV r0,r6
00001e f7fff7ff BL _GetNeedleRect
;;;6545 Time = GUI_GetTime();
000022 f7fff7ff BL GUI_GetTime
000026 4605 MOV r5,r0
;;;6546 Dif = (Time - pObj->NeedlePrevTime) / (60000 / pObj->NeedleUPM / NEEDLE_GRAD);
000028 6860 LDR r0,[r4,#4]
00002a f64ef64e MOV r1,#0xea60
00002e fb91fb91 SDIV r0,r1,r0
000032 f44ff44f MOV r2,#0x2d0
000036 fb90fb90 SDIV r1,r0,r2
00003a 68e3 LDR r3,[r4,#0xc]
00003c 1ae8 SUBS r0,r5,r3
00003e fb90fb90 SDIV r1,r0,r1
;;;6547 if (Dif != 0) {
000042 2900 CMP r1,#0
000044 d03d BEQ |L14.194|
;;;6548 pObj->NeedlePos += (Dif * pObj->NeedleDir);
000046 6823 LDR r3,[r4,#0]
000048 68a0 LDR r0,[r4,#8]
00004a fb01fb01 MLA r1,r1,r0,r3
;;;6549 if (pObj->NeedlePos > NEEDLE_GRAD) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -