⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdaudio.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 2 页
字号:
  00220	e5cd3008	 strb        r3, [sp, #8]

; 53   :                 CmdPkt.Byte_2 = LBA_MSB(&dwLBAAddr);

  00224	e5dd3037	 ldrb        r3, [sp, #0x37]
  00228	e5cd300a	 strb        r3, [sp, #0xA]

; 54   :                 CmdPkt.Byte_3 = LBA_3rdLSB(&dwLBAAddr);

  0022c	e5dd3036	 ldrb        r3, [sp, #0x36]
  00230	e5cd300b	 strb        r3, [sp, #0xB]

; 55   :                 CmdPkt.Byte_4 = LBA_2ndLSB(&dwLBAAddr);

  00234	e5dd3035	 ldrb        r3, [sp, #0x35]
  00238	e5cd300c	 strb        r3, [sp, #0xC]

; 56   :                 CmdPkt.Byte_5 = LBA_LSB(&dwLBAAddr);

  0023c	e5dd3034	 ldrb        r3, [sp, #0x34]
  00240	e5cd300d	 strb        r3, [sp, #0xD]

; 57   :             }
; 58   :             break;    

  00244	ea00003f	 b           |$L32106|
  00248		 |$L32131|

; 59   :         case IOCTL_CDROM_SCAN_AUDIO:
; 60   :             {
; 61   :                 CDROM_SCAN_AUDIO *pScan = (CDROM_SCAN_AUDIO *) pIOReq->pInBuf;

  00248	e59d3060	 ldr         r3, [sp, #0x60]
  0024c	e2833018	 add         r3, r3, #0x18
  00250	e5933000	 ldr         r3, [r3]
  00254	e58d3038	 str         r3, [sp, #0x38]

; 62   :                 if (!pScan || (sizeof(CDROM_SCAN_AUDIO) > pIOReq->dwInBufSize)) {

  00258	e59d3038	 ldr         r3, [sp, #0x38]
  0025c	e3530000	 cmp         r3, #0
  00260	0a000004	 beq         |$L32136|
  00264	e59d3060	 ldr         r3, [sp, #0x60]
  00268	e283301c	 add         r3, r3, #0x1C
  0026c	e5933000	 ldr         r3, [r3]
  00270	e3530009	 cmp         r3, #9
  00274	2a000002	 bcs         |$L32135|
  00278		 |$L32136|

; 63   :                     dwError = ERROR_BAD_ARGUMENTS;

  00278	e3a030a0	 mov         r3, #0xA0
  0027c	e58d3028	 str         r3, [sp, #0x28]

; 64   :                     break;

  00280	ea000030	 b           |$L32106|
  00284		 |$L32135|

; 65   :                 }    
; 66   :                 CmdPkt.Opcode = ATAPI_PACKET_CMD_SCAN_AUDIO;

  00284	e3a030ba	 mov         r3, #0xBA
  00288	e5cd3008	 strb        r3, [sp, #8]

; 67   :                 CmdPkt.Byte_1 = (pScan->Direction << 4) & 0x10;

  0028c	e59d3038	 ldr         r3, [sp, #0x38]
  00290	e5d33000	 ldrb        r3, [r3]
  00294	e1a03d83	 mov         r3, r3, lsl #27
  00298	e1a03fa3	 mov         r3, r3, lsr #31
  0029c	e20330ff	 and         r3, r3, #0xFF
  002a0	e1a03203	 mov         r3, r3, lsl #4
  002a4	e2033010	 and         r3, r3, #0x10
  002a8	e20330ff	 and         r3, r3, #0xFF
  002ac	e5cd3009	 strb        r3, [sp, #9]

; 68   :                 CmdPkt.Byte_2 = pScan->Address[0];

  002b0	e59d3038	 ldr         r3, [sp, #0x38]
  002b4	e2833001	 add         r3, r3, #1
  002b8	e5d33000	 ldrb        r3, [r3]
  002bc	e5cd300a	 strb        r3, [sp, #0xA]

; 69   :                 CmdPkt.Byte_3 = pScan->Address[1];

  002c0	e59d3038	 ldr         r3, [sp, #0x38]
  002c4	e2833002	 add         r3, r3, #2
  002c8	e5d33000	 ldrb        r3, [r3]
  002cc	e5cd300b	 strb        r3, [sp, #0xB]

; 70   :                 CmdPkt.Byte_4 = pScan->Address[2];

  002d0	e59d3038	 ldr         r3, [sp, #0x38]
  002d4	e2833003	 add         r3, r3, #3
  002d8	e5d33000	 ldrb        r3, [r3]
  002dc	e5cd300c	 strb        r3, [sp, #0xC]

; 71   :                 CmdPkt.Byte_5 = pScan->Address[3];

  002e0	e59d3038	 ldr         r3, [sp, #0x38]
  002e4	e2833004	 add         r3, r3, #4
  002e8	e5d33000	 ldrb        r3, [r3]
  002ec	e5cd300d	 strb        r3, [sp, #0xD]

; 72   :                 CmdPkt.Byte_9 = pScan->AddressType << 6;

  002f0	e59d3038	 ldr         r3, [sp, #0x38]
  002f4	e2833008	 add         r3, r3, #8
  002f8	e5d33000	 ldrb        r3, [r3]
  002fc	e1a03c03	 mov         r3, r3, lsl #24
  00300	e1a03f23	 mov         r3, r3, lsr #30
  00304	e20330ff	 and         r3, r3, #0xFF
  00308	e1a03303	 mov         r3, r3, lsl #6
  0030c	e20330ff	 and         r3, r3, #0xFF
  00310	e5cd3011	 strb        r3, [sp, #0x11]

; 73   :             }
; 74   :             break;

  00314	ea00000b	 b           |$L32106|
  00318		 |$L32137|

; 75   :         case IOCTL_CDROM_STOP_AUDIO:
; 76   :             CmdPkt.Opcode = ATAPI_PACKET_CMD_STOP_PLAY_SCAN;

  00318	e3a0304e	 mov         r3, #0x4E
  0031c	e5cd3008	 strb        r3, [sp, #8]

; 77   :             break;

  00320	ea000008	 b           |$L32106|
  00324		 |$L32138|

; 78   :         case IOCTL_CDROM_PAUSE_AUDIO:
; 79   :             CmdPkt.Opcode = ATAPI_PACKET_CMD_PAUSE_RESUME;

  00324	e3a0304b	 mov         r3, #0x4B
  00328	e5cd3008	 strb        r3, [sp, #8]

; 80   :             CmdPkt.Byte_8 = 0;

  0032c	e3a03000	 mov         r3, #0
  00330	e5cd3010	 strb        r3, [sp, #0x10]

; 81   :             break;

  00334	ea000003	 b           |$L32106|
  00338		 |$L32139|

; 82   :         case IOCTL_CDROM_RESUME_AUDIO:
; 83   :             CmdPkt.Opcode = ATAPI_PACKET_CMD_PAUSE_RESUME;

  00338	e3a0304b	 mov         r3, #0x4B
  0033c	e5cd3008	 strb        r3, [sp, #8]

; 84   :             CmdPkt.Byte_8 = 1;

  00340	e3a03001	 mov         r3, #1
  00344	e5cd3010	 strb        r3, [sp, #0x10]
  00348		 |$L32106|

; 85   :             break;
; 86   :     }
; 87   : 
; 88   :     if (ERROR_SUCCESS == dwError) {

  00348	e59d3028	 ldr         r3, [sp, #0x28]
  0034c	e3530000	 cmp         r3, #0
  00350	1a00002a	 bne         |$L32140|

; 89   :         SgBuf.sb_len = 0;

  00354	e3a03000	 mov         r3, #0
  00358	e58d3024	 str         r3, [sp, #0x24]

; 90   :         SgBuf.sb_buf = NULL;

  0035c	e3a03000	 mov         r3, #0
  00360	e58d3020	 str         r3, [sp, #0x20]

; 91   : 
; 92   :         if (AtapiSendCommand(&CmdPkt)) {

  00364	e3a03000	 mov         r3, #0
  00368	e3a02000	 mov         r2, #0
  0036c	e28d1008	 add         r1, sp, #8
  00370	e59d005c	 ldr         r0, [sp, #0x5C]
  00374	eb000000	 bl          |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z|
  00378	e58d0048	 str         r0, [sp, #0x48]
  0037c	e59d3048	 ldr         r3, [sp, #0x48]
  00380	e3530000	 cmp         r3, #0
  00384	0a00001a	 beq         |$L32141|

; 93   :             if (!AtapiReceiveData(&SgBuf, 1, &dwRet)) {

  00388	e28d3000	 add         r3, sp, #0
  0038c	e3a02001	 mov         r2, #1
  00390	e28d1020	 add         r1, sp, #0x20
  00394	e59d005c	 ldr         r0, [sp, #0x5C]
  00398	eb000000	 bl          |?AtapiReceiveData@CPCIDiskAndCD@@QAAHPAU_SGX_BUF@@KPAK@Z|
  0039c	e58d004c	 str         r0, [sp, #0x4C]
  003a0	e59d304c	 ldr         r3, [sp, #0x4C]
  003a4	e3530000	 cmp         r3, #0
  003a8	1a000010	 bne         |$L32142|

; 94   :                 DEBUGMSG( ZONE_ERROR|ZONE_CDROM, (TEXT("ATAPI::PlayAudioMSF failed on receive\r\n")));

  003ac	e59f3068	 ldr         r3, [pc, #0x68]
  003b0	e5933440	 ldr         r3, [r3, #0x440]
  003b4	e2032a02	 and         r2, r3, #2, 20
  003b8	e59f305c	 ldr         r3, [pc, #0x5C]
  003bc	e5933440	 ldr         r3, [r3, #0x440]
  003c0	e2033080	 and         r3, r3, #0x80
  003c4	e1923003	 orrs        r3, r2, r3
  003c8	0a000004	 beq         |$L32163|
  003cc	e59f0044	 ldr         r0, [pc, #0x44]
  003d0	eb000000	 bl          NKDbgPrintfW
  003d4	e3a03001	 mov         r3, #1
  003d8	e58d3050	 str         r3, [sp, #0x50]
  003dc	ea000001	 b           |$L32164|
  003e0		 |$L32163|
  003e0	e3a03000	 mov         r3, #0
  003e4	e58d3050	 str         r3, [sp, #0x50]
  003e8		 |$L32164|

; 95   :                 dwError = ERROR_READ_FAULT;

  003e8	e3a0301e	 mov         r3, #0x1E
  003ec	e58d3028	 str         r3, [sp, #0x28]
  003f0		 |$L32142|

; 96   :             }
; 97   :         } else {

  003f0	ea000002	 b           |$L32145|
  003f4		 |$L32141|

; 98   :             // TODO: AtaCheckError()
; 99   :           return ERROR_GEN_FAILURE;

  003f4	e3a0301f	 mov         r3, #0x1F
  003f8	e58d303c	 str         r3, [sp, #0x3C]
  003fc	ea000001	 b           |$L32097|
  00400		 |$L32145|
  00400		 |$L32140|

; 100  :         }    
; 101  :     }    
; 102  :     
; 103  :     return dwError;

  00400	e59d3028	 ldr         r3, [sp, #0x28]
  00404	e58d303c	 str         r3, [sp, #0x3C]
  00408		 |$L32097|

; 98   :             // TODO: AtaCheckError()
; 99   :           return ERROR_GEN_FAILURE;

  00408	e59d003c	 ldr         r0, [sp, #0x3C]

; 104  : }

  0040c	e28dd054	 add         sp, sp, #0x54
  00410	e89d6000	 ldmia       sp, {sp, lr}
  00414	e12fff1e	 bx          lr
  00418		 |$L32170|
  00418	00000000	 DCD         |??_C@_1FA@IDFFGBMO@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5@|
  0041c	00000000	 DCD         |dpCurSettings|
  00420	00000000	 DCD         |??_C@_1EA@PCEDIIOM@?$AAA?$AAT?$AAA?$AAP?$AAI?$AA?3?$AAP?$AAl?$AAa?$AAy?$AAA?$AAu?$AAd?$AAi?$AAo?$AAM?$AAS?$AAF?$AA?5?$AA?9@|
  00424		 |$M32167|

			 ENDP  ; |?ControlAudio@CPCIDiskAndCD@@QAAKPAU_IOREQ@@@Z|, CPCIDiskAndCD::ControlAudio

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -