📄 xllp_lcd.cod
字号:
00000 AREA |.text| { |LCDEnableController| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |LCDEnableController| PROC
; 541 : {
00000 |$L35569|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M35567|
00004 e1a04000 mov r4, r0
; 542 : volatile LCDRegs *p_LCDRegs;
; 543 : RETAILMSG(ZGB_MSG, (TEXT("ZGB: LCDEnableController()\r\n")));
00008 e59f0018 ldr r0, [pc, #0x18]
0000c eb000000 bl NKDbgPrintfW
; 544 :
; 545 : p_LCDRegs = (LCDRegs *) pXllpLCD->LCDC;
00010 e5942008 ldr r2, [r4, #8]
; 546 :
; 547 : p_LCDRegs->LCCR0 |= LCD_ENB;
00014 e5923000 ldr r3, [r2]
00018 e3833001 orr r3, r3, #1
0001c e5823000 str r3, [r2]
; 548 : }
00020 e8bd4010 ldmia sp!, {r4, lr}
00024 e12fff1e bx lr
00028 |$L35572|
00028 00000000 DCD |??_C@_1DK@BOABLGJH@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAL?$AAC?$AAD?$AAE?$AAn?$AAa?$AAb?$AAl?$AAe?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo@|
0002c |$M35568|
ENDP ; |LCDEnableController|
00000 AREA |.text| { |WaitForState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$WaitForState|, PDATA, SELECTION=5, ASSOC=|.text| { |WaitForState| } ; comdat associative
|$T35602| DCD |$L35601|
DCD 0x40002001
; Function compile flags: /Ogsy
00000 AREA |.text| { |WaitForState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |WaitForState| PROC
; 560 : {
00000 |$L35601|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M35599|
00004 e1a04003 mov r4, r3
00008 e1a09002 mov r9, r2
0000c e1a06001 mov r6, r1
00010 e1a08000 mov r8, r0
; 561 : int matched = 0;
; 562 : int sleep_quantum = (max_ms/100); // milliseconds
00014 e59f3060 ldr r3, [pc, #0x60]
; 563 : int sleep_time_left = max_ms;
; 564 :
; 565 : if (sleep_quantum == 0)
; 566 : sleep_quantum = 1;
00018 e59f7058 ldr r7, [pc, #0x58]
0001c e08e3394 umull r3, lr, r4, r3
00020 e1b052ae movs r5, lr, lsr #5
00024 03a05001 moveq r5, #1
00028 |$L35312|
; 567 : while (1)
; 568 : {
; 569 : matched = (wait_type == WFS_ALL) ? ((*pStatusReg & mask) == mask)
; 570 : : ((*pStatusReg & mask) != 0);
00028 e5983000 ldr r3, [r8]
0002c e3590000 cmp r9, #0
00030 1a000007 bne |$L35579|
00034 e0033006 and r3, r3, r6
00038 e1530006 cmp r3, r6
0003c 1a000006 bne |$L35576|
00040 |$L35588|
; 571 : if (matched)
; 572 : {
; 573 : if (sleep_time_left < 0)
00040 e3540000 cmp r4, #0
; 574 : sleep_time_left = 0;
00044 43a04000 movmi r4, #0
00048 |$L35315|
; 582 : return(sleep_time_left);
00048 e1a00004 mov r0, r4
; 583 : } // WaitForState
0004c e8bd43f0 ldmia sp!, {r4 - r9, lr}
00050 e12fff1e bx lr
00054 |$L35579|
; 567 : while (1)
; 568 : {
; 569 : matched = (wait_type == WFS_ALL) ? ((*pStatusReg & mask) == mask)
; 570 : : ((*pStatusReg & mask) != 0);
00054 e1130006 tst r3, r6
00058 1afffff8 bne |$L35588|
0005c |$L35576|
; 575 : break;
; 576 : }
; 577 : if (sleep_time_left < 0)
0005c e3540000 cmp r4, #0
00060 4afffff8 bmi |$L35315|
; 578 : break;
; 579 : SPINSLEEP(sleep_quantum);
00064 e5970000 ldr r0, [r7]
00068 e1a01005 mov r1, r5
0006c eb000000 bl XllpOstDelayMilliSeconds
; 580 : sleep_time_left -= sleep_quantum;
00070 e0444005 sub r4, r4, r5
; 581 : }
00074 eaffffeb b |$L35312|
00078 |$L35604|
00078 00000000 DCD |pOSTRegs|
0007c 51eb851f DCD 0x51eb851f
00080 |$M35600|
ENDP ; |WaitForState|
EXPORT |XllpLCD_Overlay2_Enable|
EXPORT |??_C@_1FA@FDDCCLEO@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AA1?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1FG@GALHFLEA@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| [ DATA ] ; `string'
EXPORT |??_C@_1FA@MCFHCHFC@?$AAA?$AAT?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1GM@MPKHHPGH@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| [ DATA ] ; `string'
EXPORT |??_C@_1GO@IJCPGJFD@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| [ DATA ] ; `string'
00000 AREA |.text| { |XllpLCD_Overlay2_Enable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpLCD_Overlay2_Enable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpLCD_Overlay2_Enable| } ; comdat associative
|$T35618| DCD |$L35617|
DCD 0x40008e01
00000 AREA |.rdata| { |??_C@_1GO@IJCPGJFD@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GO@IJCPGJFD@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| DCB "X"
DCB 0x0, "l", 0x0, "l", 0x0, "p", 0x0, "L", 0x0, "C", 0x0, "D"
DCB 0x0, "_", 0x0, "O", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "l"
DCB 0x0, "a", 0x0, "y", 0x0, "2", 0x0, "_", 0x0, "E", 0x0, "n"
DCB 0x0, "a", 0x0, "b", 0x0, "l", 0x0, "e", 0x0, "(", 0x0, "F"
DCB 0x0, "=", 0x0, "%", 0x0, "d", 0x0, ")", 0x0, ":", 0x0, " "
DCB 0x0, "G", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "I", 0x0, "U"
DCB 0x0, "x", 0x0, " ", 0x0, "(", 0x0, "L", 0x0, "C", 0x0, "S"
DCB 0x0, "R", 0x0, "1", 0x0, "=", 0x0, "x", 0x0, "%", 0x0, "0"
DCB 0x0, "8", 0x0, "x", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GM@MPKHHPGH@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GM@MPKHHPGH@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| DCB "X"
DCB 0x0, "l", 0x0, "l", 0x0, "p", 0x0, "L", 0x0, "C", 0x0, "D"
DCB 0x0, "_", 0x0, "O", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "l"
DCB 0x0, "a", 0x0, "y", 0x0, "2", 0x0, "_", 0x0, "E", 0x0, "n"
DCB 0x0, "a", 0x0, "b", 0x0, "l", 0x0, "e", 0x0, "(", 0x0, "F"
DCB 0x0, "=", 0x0, "%", 0x0, "d", 0x0, ")", 0x0, ":", 0x0, " "
DCB 0x0, "N", 0x0, "o", 0x0, " ", 0x0, "I", 0x0, "U", 0x0, "x"
DCB 0x0, " ", 0x0, "(", 0x0, "L", 0x0, "C", 0x0, "S", 0x0, "R"
DCB 0x0, "1", 0x0, "=", 0x0, "x", 0x0, "%", 0x0, "0", 0x0, "8"
DCB 0x0, "x", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FA@MCFHCHFC@?$AAA?$AAT?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@MCFHCHFC@?$AAA?$AAT?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_@| DCB "A"
DCB 0x0, "T", 0x0, " ", 0x0, "X", 0x0, "l", 0x0, "l", 0x0, "p"
DCB 0x0, "L", 0x0, "C", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "v"
DCB 0x0, "e", 0x0, "r", 0x0, "l", 0x0, "a", 0x0, "y", 0x0, "2"
DCB 0x0, "_", 0x0, "E", 0x0, "n", 0x0, "a", 0x0, "b", 0x0, "l"
DCB 0x0, "e", 0x0, " ", 0x0, "x", 0x0, "=", 0x0, "%", 0x0, "d"
DCB 0x0, ",", 0x0, " ", 0x0, "y", 0x0, "=", 0x0, "%", 0x0, "d"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FG@GALHFLEA@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FG@GALHFLEA@?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_?$AAO?$AAv?$AAe?$AAr?$AAl?$AAa?$AAy?$AA2?$AA_?$AAE?$AAn?$AAa@| DCB "X"
DCB 0x0, "l", 0x0, "l", 0x0, "p", 0x0, "L", 0x0, "C", 0x0, "D"
DCB 0x0, "_", 0x0, "O", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "l"
DCB 0x0, "a", 0x0, "y", 0x0, "2", 0x0, "_", 0x0, "E", 0x0, "n"
DCB 0x0, "a", 0x0, "b", 0x0, "l", 0x0, "e", 0x0, ":", 0x0, " "
DCB 0x0, "A", 0x0, "l", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d"
DCB 0x0, "y", 0x0, " ", 0x0, "e", 0x0, "n", 0x0, "a", 0x0, "b"
DCB 0x0, "l", 0x0, "e", 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FA@FDDCCLEO@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AA1?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@FDDCCLEO@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AA1?$AAE?$AAn?$AAt?$AAe?$AAr?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AA_@| DCB "Z"
DCB 0x0, "G", 0x0, "B", 0x0, ":", 0x0, " ", 0x0, "1", 0x0, "E"
DCB 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "X"
DCB 0x0, "l", 0x0, "l", 0x0, "p", 0x0, "L", 0x0, "C", 0x0, "D"
DCB 0x0, "_", 0x0, "O", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "l"
DCB 0x0, "a", 0x0, "y", 0x0, "2", 0x0, "_", 0x0, "E", 0x0, "n"
DCB 0x0, "a", 0x0, "b", 0x0, "l", 0x0, "e", 0x0, "(", 0x0, ")"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpLCD_Overlay2_Enable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpLCD_Overlay2_Enable| PROC
; 598 : {
00000 |$L35617|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M35615|
00004 e1a05001 mov r5, r1
00008 e1a06000 mov r6, r0
; 599 : XLLP_STATUS_T status = 0;
; 600 : volatile LCDRegs *p_LCDRegs;
; 601 : unsigned int StatMask = 0;
; 602 : RETAILMSG(ZGB_MSG, (TEXT("ZGB: 1Enter XllpLCD_Overlay2_Enable()\r\n")));
0000c e59f0220 ldr r0, [pc, #0x220]
00010 eb000000 bl NKDbgPrintfW
; 603 :
; 604 : p_LCDRegs = (LCDRegs *) pXllpLCD->LCDC;
00014 e5964008 ldr r4, [r6, #8]
; 605 :
; 606 : if ((p_LCDRegs->OVL2C1) & LCD_O2EN)
00018 e5943070 ldr r3, [r4, #0x70]
0001c e3130102 tst r3, #2, 2
00020 0a000002 beq |$L35327|
; 607 : {
; 608 : RETAILMSG(ZGB_MSG,(TEXT("XllpLCD_Overlay2_Enable: Already enabled\r\n")));
00024 e59f0204 ldr r0, [pc, #0x204]
00028 eb000000 bl NKDbgPrintfW
; 609 : return(status);
0002c ea000079 b |$L35613|
00030 |$L35327|
; 610 : }
; 611 :
; 612 : // Change baseframe pixel format to reduce memory bus bandwidth
; 613 : //XllpLCDSuspend(pXllpLCD, Suspend_Graceful);
; 614 : //pXllpOverlay->TmpBPP = pXllpLCD->BPP;
; 615 : //if (pXllpOverlay->DegradeBaseFrame)
; 616 : // pXllpLCD->BPP = BPP_1;
; 617 : //pXllpLCD->PixelDataFormat = PDFOR_00;
; 618 : //XllpLCDResume(pXllpLCD);
; 619 :
; 620 : // Setup frame descriptors
; 621 : // CH2
; 622 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->PHYSADDR = LCD_FDADR(pXllpLCD->_DMA_CHANNEL_2_Y_FRAME_DESCRIPTOR_BASE_PHYSICAL); // self
00030 e596305c ldr r3, [r6, #0x5C]
00034 e596207c ldr r2, [r6, #0x7C]
; 623 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->FDADR = pXllpLCD->frameDescriptorCh2_YCbCr_Y->PHYSADDR; // next = self
; 624 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Y_CHANNEL_BASE_PHYSICAL); // frame buffer
; 625 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->FIDR = LCD_FIDR(0);
00038 e3a0e000 mov lr, #0
0003c e3c3300f bic r3, r3, #0xF
00040 e5823010 str r3, [r2, #0x10]
00044 e596207c ldr r2, [r6, #0x7C]
; 626 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->LDCMD = LCD_Len(pXllpOverlay->ch2_size);
; 627 : // CH3
; 628 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->PHYSADDR = LCD_FDADR(pXllpLCD->_DMA_CHANNEL_3_Cb_FRAME_DESCRIPTOR_BASE_PHYSICAL); // self
; 629 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->FDADR = pXllpLCD->frameDescriptorCh3_YCbCr_Cb->PHYSADDR; // next = self
; 630 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Cb_CHANNEL_BASE_PHYSICAL); // frame buffer
; 631 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->FIDR = LCD_FIDR(0);
; 632 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->LDCMD = LCD_Len(pXllpOverlay->ch3_size);
; 633 : // CH4
; 634 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->PHYSADDR = LCD_FDADR(pXllpLCD->_DMA_CHANNEL_4_Cr_FRAME_DESCRIPTOR_BASE_PHYSICAL); // self
; 635 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->FDADR = pXllpLCD->frameDescriptorCh4_YCbCr_Cr->PHYSADDR; // next = self
; 636 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Cr_CHANNEL_BASE_PHYSICAL); // frame buffer
; 637 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->FIDR = LCD_FIDR(0);
; 638 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->LDCMD = LCD_Len(pXllpOverlay->ch4_size);
; 639 :
; 640 : // Set the physical address of the frame buffer
; 641 : #if 1
; 642 : pXllpLCD->frameDescriptorCh2_YCbCr_Y->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Y_CHANNEL_BASE_PHYSICAL);
; 643 : pXllpLCD->frameDescriptorCh3_YCbCr_Cb->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Y_CHANNEL_BASE_PHYSICAL+pXllpOverlay->ch2_size);
; 644 : pXllpLCD->frameDescriptorCh4_YCbCr_Cr->FSADR = LCD_FSADR(pXllpLCD->_OVERLAY2_Y_CHANNEL_BASE_PHYSICAL+
; 645 : pXllpOverlay->ch2_size + pXllpOverlay->ch3_size);
; 646 : #endif
; 647 :
; 648 : // FBRx is cleared and is not used.
; 649 : p_LCDRegs->FBR2 = 0;
; 650 : p_LCDRegs->FBR3 = 0;
; 651 : p_LCDRegs->FBR4 = 0;
; 652 :
; 653 : StatMask = LCD_IU2;
; 654 : if (pXllpOverlay->Format != FORMAT_RGB)
00048 e3a07402 mov r7, #2, 8
0004c e5923010 ldr r3, [r2, #0x10]
00050 e5823000 str r3, [r2]
00054 e5963040 ldr r3, [r6, #0x40]
00058 e596207c ldr r2, [r6, #0x7C]
0005c e3c33007 bic r3, r3, #7
00060 e5823004 str r3, [r2, #4]
00064 e596307c ldr r3, [r6, #0x7C]
00068 e583e008 str lr, [r3, #8]
0006c e596207c ldr r2, [r6, #0x7C]
00070 e5953034 ldr r3, [r5, #0x34]
00074 e582300c str r3, [r2, #0xC]
00078 e5963060 ldr r3, [r6, #0x60]
0007c e5962080 ldr r2, [r6, #0x80]
00080 e3c3300f bic r3, r3, #0xF
00084 e5823010 str r3, [r2, #0x10]
00088 e5962080 ldr r2, [r6, #0x80]
0008c e5923010 ldr r3, [r2, #0x10]
00090 e5823000 str r3, [r2]
00094 e5963044 ldr r3, [r6, #0x44]
00098 e5962080 ldr r2, [r6, #0x80]
0009c e3c33007 bic r3, r3, #7
000a0 e5823004 str r3, [r2, #4]
000a4 e5963080 ldr r3, [r6, #0x80]
000a8 e583e008 str lr, [r3, #8]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -