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

📄 cdio.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00b2c	e1833002	 orr         r3, r3, r2
  00b30	e1a02403	 mov         r2, r3, lsl #8
  00b34	e5d13000	 ldrb        r3, [r1]
  00b38	e1833002	 orr         r3, r3, r2
  00b3c	e3530001	 cmp         r3, #1
  00b40	0a000015	 beq         |$L32756|
  00b44	e59d1068	 ldr         r1, [sp, #0x68]
  00b48	e5d13003	 ldrb        r3, [r1, #3]
  00b4c	e1a02403	 mov         r2, r3, lsl #8
  00b50	e5d13002	 ldrb        r3, [r1, #2]
  00b54	e1833002	 orr         r3, r3, r2
  00b58	e1a02403	 mov         r2, r3, lsl #8
  00b5c	e5d13001	 ldrb        r3, [r1, #1]
  00b60	e1833002	 orr         r3, r3, r2
  00b64	e1a02403	 mov         r2, r3, lsl #8
  00b68	e5d13000	 ldrb        r3, [r1]
  00b6c	e1833002	 orr         r3, r3, r2
  00b70	e3530000	 cmp         r3, #0
  00b74	0a000008	 beq         |$L32756|
  00b78	e3a030dc	 mov         r3, #0xDC
  00b7c	e59f2410	 ldr         r2, [pc, #0x410]
  00b80	e59f1404	 ldr         r1, [pc, #0x404]
  00b84	e59f0404	 ldr         r0, [pc, #0x404]
  00b88	eb000000	 bl          NKDbgPrintfW
  00b8c	e6000010	 DCD         0xe6000010
  00b90	e3a03000	 mov         r3, #0
  00b94	e58d303c	 str         r3, [sp, #0x3C]
  00b98	ea000001	 b           |$L32757|
  00b9c		 |$L32756|
  00b9c	e3a03001	 mov         r3, #1
  00ba0	e58d303c	 str         r3, [sp, #0x3C]
  00ba4		 |$L32757|

; 221  :     
; 222  :     DEBUGMSG( ZONE_IO | ZONE_CDROM, (TEXT("ATAPI:ReadCdRom Address=%ld Mode=%02X Length=%ld TrackMode=%02X\r\n"), CurAddr.Address, CurAddr.Mode, pReadInfo->TransferLength, pReadInfo->TrackMode));

  00ba4	e59f33e0	 ldr         r3, [pc, #0x3E0]
  00ba8	e5933440	 ldr         r3, [r3, #0x440]
  00bac	e2032008	 and         r2, r3, #8
  00bb0	e59f33d4	 ldr         r3, [pc, #0x3D4]
  00bb4	e5933440	 ldr         r3, [r3, #0x440]
  00bb8	e2033080	 and         r3, r3, #0x80
  00bbc	e1923003	 orrs        r3, r2, r3
  00bc0	0a00001f	 beq         |$L32758|
  00bc4	e59d3068	 ldr         r3, [sp, #0x68]
  00bc8	e2831010	 add         r1, r3, #0x10
  00bcc	e1d130d3	 ldrsb       r3, [r1, #3]
  00bd0	e1a02403	 mov         r2, r3, lsl #8
  00bd4	e5d13002	 ldrb        r3, [r1, #2]
  00bd8	e1833002	 orr         r3, r3, r2
  00bdc	e1a02403	 mov         r2, r3, lsl #8
  00be0	e5d13001	 ldrb        r3, [r1, #1]
  00be4	e1833002	 orr         r3, r3, r2
  00be8	e1a02403	 mov         r2, r3, lsl #8
  00bec	e5d13000	 ldrb        r3, [r1]
  00bf0	e1833002	 orr         r3, r3, r2
  00bf4	e58d3000	 str         r3, [sp]
  00bf8	e59d3068	 ldr         r3, [sp, #0x68]
  00bfc	e2831008	 add         r1, r3, #8
  00c00	e5d13003	 ldrb        r3, [r1, #3]
  00c04	e1a02403	 mov         r2, r3, lsl #8
  00c08	e5d13002	 ldrb        r3, [r1, #2]
  00c0c	e1833002	 orr         r3, r3, r2
  00c10	e1a02403	 mov         r2, r3, lsl #8
  00c14	e5d13001	 ldrb        r3, [r1, #1]
  00c18	e1833002	 orr         r3, r3, r2
  00c1c	e1a02403	 mov         r2, r3, lsl #8
  00c20	e5d13000	 ldrb        r3, [r1]
  00c24	e1833002	 orr         r3, r3, r2
  00c28	e59d2010	 ldr         r2, [sp, #0x10]
  00c2c	e59d1014	 ldr         r1, [sp, #0x14]
  00c30	e59f0350	 ldr         r0, [pc, #0x350]
  00c34	eb000000	 bl          NKDbgPrintfW
  00c38	e3a03001	 mov         r3, #1
  00c3c	e58d3040	 str         r3, [sp, #0x40]
  00c40	ea000001	 b           |$L32759|
  00c44		 |$L32758|
  00c44	e3a03000	 mov         r3, #0
  00c48	e58d3040	 str         r3, [sp, #0x40]
  00c4c		 |$L32759|

; 223  : 
; 224  :     // If in MSF format then convert it to LBA
; 225  :     if (CurAddr.Mode == CDROM_ADDR_MSF) {

  00c4c	e59d3010	 ldr         r3, [sp, #0x10]
  00c50	e3530001	 cmp         r3, #1
  00c54	1a00000d	 bne         |$L32215|

; 226  :         CDROM_MSF_TO_LBA(&CurAddr);

  00c58	e3a03000	 mov         r3, #0
  00c5c	e58d3010	 str         r3, [sp, #0x10]
  00c60	e5dd3016	 ldrb        r3, [sp, #0x16]
  00c64	e1a01003	 mov         r1, r3
  00c68	e3a0303c	 mov         r3, #0x3C
  00c6c	e0020391	 mul         r2, r1, r3
  00c70	e5dd3015	 ldrb        r3, [sp, #0x15]
  00c74	e0821003	 add         r1, r2, r3
  00c78	e3a0304b	 mov         r3, #0x4B
  00c7c	e0020391	 mul         r2, r1, r3
  00c80	e5dd3014	 ldrb        r3, [sp, #0x14]
  00c84	e0823003	 add         r3, r2, r3
  00c88	e2433096	 sub         r3, r3, #0x96
  00c8c	e58d3014	 str         r3, [sp, #0x14]
  00c90		 |$L32215|

; 227  :     }    
; 228  :     // Verify that the transfer count is not 0
; 229  :     if ((pReadInfo->TransferLength == 0) || 
; 230  :        (pReadInfo->sgcount == 0)) {

  00c90	e59d3068	 ldr         r3, [sp, #0x68]
  00c94	e2831008	 add         r1, r3, #8
  00c98	e5d13003	 ldrb        r3, [r1, #3]
  00c9c	e1a02403	 mov         r2, r3, lsl #8
  00ca0	e5d13002	 ldrb        r3, [r1, #2]
  00ca4	e1833002	 orr         r3, r3, r2
  00ca8	e1a02403	 mov         r2, r3, lsl #8
  00cac	e5d13001	 ldrb        r3, [r1, #1]
  00cb0	e1833002	 orr         r3, r3, r2
  00cb4	e1a02403	 mov         r2, r3, lsl #8
  00cb8	e5d13000	 ldrb        r3, [r1]
  00cbc	e1833002	 orr         r3, r3, r2
  00cc0	e3530000	 cmp         r3, #0
  00cc4	0a00000d	 beq         |$L32218|
  00cc8	e59d3068	 ldr         r3, [sp, #0x68]
  00ccc	e2831014	 add         r1, r3, #0x14
  00cd0	e5d13003	 ldrb        r3, [r1, #3]
  00cd4	e1a02403	 mov         r2, r3, lsl #8
  00cd8	e5d13002	 ldrb        r3, [r1, #2]
  00cdc	e1833002	 orr         r3, r3, r2
  00ce0	e1a02403	 mov         r2, r3, lsl #8
  00ce4	e5d13001	 ldrb        r3, [r1, #1]
  00ce8	e1833002	 orr         r3, r3, r2
  00cec	e1a02403	 mov         r2, r3, lsl #8
  00cf0	e5d13000	 ldrb        r3, [r1]
  00cf4	e1833002	 orr         r3, r3, r2
  00cf8	e3530000	 cmp         r3, #0
  00cfc	1a000002	 bne         |$L32217|
  00d00		 |$L32218|

; 231  :        return ERROR_INVALID_PARAMETER;

  00d00	e3a03057	 mov         r3, #0x57
  00d04	e58d3038	 str         r3, [sp, #0x38]
  00d08	ea00009a	 b           |$L32203|
  00d0c		 |$L32217|

; 232  :     }
; 233  : 
; 234  :     if( pReadInfo->bRawMode) {

  00d0c	e59d3068	 ldr         r3, [sp, #0x68]
  00d10	e283100c	 add         r1, r3, #0xC
  00d14	e1d130d3	 ldrsb       r3, [r1, #3]
  00d18	e1a02403	 mov         r2, r3, lsl #8
  00d1c	e5d13002	 ldrb        r3, [r1, #2]
  00d20	e1833002	 orr         r3, r3, r2
  00d24	e1a02403	 mov         r2, r3, lsl #8
  00d28	e5d13001	 ldrb        r3, [r1, #1]
  00d2c	e1833002	 orr         r3, r3, r2
  00d30	e1a02403	 mov         r2, r3, lsl #8
  00d34	e5d13000	 ldrb        r3, [r1]
  00d38	e1833002	 orr         r3, r3, r2
  00d3c	e3530000	 cmp         r3, #0
  00d40	0a000002	 beq         |$L32219|

; 235  :         wSectorSize = CDROM_RAW_SECTOR_SIZE;

  00d44	e3a03e93	 mov         r3, #0x93, 28
  00d48	e1cd31b8	 strh        r3, [sp, #0x18]

; 236  :     } else {

  00d4c	ea000001	 b           |$L32220|
  00d50		 |$L32219|

; 237  :         wSectorSize = CDROM_SECTOR_SIZE;

  00d50	e3a03b02	 mov         r3, #2, 22
  00d54	e1cd31b8	 strh        r3, [sp, #0x18]
  00d58		 |$L32220|

; 238  :     }
; 239  : 
; 240  :     pSgBuf = &(pReadInfo->sglist[0]);

  00d58	e59d3068	 ldr         r3, [sp, #0x68]
  00d5c	e2833018	 add         r3, r3, #0x18
  00d60	e58d3008	 str         r3, [sp, #8]

; 241  : 
; 242  :     if (IsDMASupported()) {

  00d64	e59d0064	 ldr         r0, [sp, #0x64]
  00d68	eb000000	 bl          |?IsDMASupported@CDisk@@QAAHXZ|
  00d6c	e58d0044	 str         r0, [sp, #0x44]
  00d70	e59d3044	 ldr         r3, [sp, #0x44]
  00d74	e3530000	 cmp         r3, #0
  00d78	0a00003a	 beq         |$L32221|

; 243  :         dwError = ReadCdRomDMA(CurAddr.Address.lba, pReadInfo->TransferLength, wSectorSize, pReadInfo->sgcount, pSgBuf);

  00d7c	e59d3008	 ldr         r3, [sp, #8]
  00d80	e58d3004	 str         r3, [sp, #4]
  00d84	e59d3068	 ldr         r3, [sp, #0x68]
  00d88	e2831014	 add         r1, r3, #0x14
  00d8c	e5d13003	 ldrb        r3, [r1, #3]
  00d90	e1a02403	 mov         r2, r3, lsl #8
  00d94	e5d13002	 ldrb        r3, [r1, #2]
  00d98	e1833002	 orr         r3, r3, r2
  00d9c	e1a02403	 mov         r2, r3, lsl #8
  00da0	e5d13001	 ldrb        r3, [r1, #1]
  00da4	e1833002	 orr         r3, r3, r2
  00da8	e1a02403	 mov         r2, r3, lsl #8
  00dac	e5d13000	 ldrb        r3, [r1]
  00db0	e1833002	 orr         r3, r3, r2
  00db4	e58d3000	 str         r3, [sp]
  00db8	e1dd31b8	 ldrh        r3, [sp, #0x18]
  00dbc	e59d2068	 ldr         r2, [sp, #0x68]
  00dc0	e2820008	 add         r0, r2, #8
  00dc4	e5d02003	 ldrb        r2, [r0, #3]
  00dc8	e1a01402	 mov         r1, r2, lsl #8
  00dcc	e5d02002	 ldrb        r2, [r0, #2]
  00dd0	e1822001	 orr         r2, r2, r1
  00dd4	e1a01402	 mov         r1, r2, lsl #8
  00dd8	e5d02001	 ldrb        r2, [r0, #1]
  00ddc	e1822001	 orr         r2, r2, r1
  00de0	e1a01402	 mov         r1, r2, lsl #8
  00de4	e5d02000	 ldrb        r2, [r0]
  00de8	e1822001	 orr         r2, r2, r1
  00dec	e59d1014	 ldr         r1, [sp, #0x14]
  00df0	e59d0064	 ldr         r0, [sp, #0x64]
  00df4	e5900000	 ldr         r0, [r0]
  00df8	e280e058	 add         lr, r0, #0x58
  00dfc	e59d0064	 ldr         r0, [sp, #0x64]
  00e00	e59e4000	 ldr         r4, [lr]
  00e04	e1a0e00f	 mov         lr, pc
  00e08	e12fff14	 bx          r4
  00e0c	e58d0048	 str         r0, [sp, #0x48]
  00e10	e59d3048	 ldr         r3, [sp, #0x48]
  00e14	e58d3034	 str         r3, [sp, #0x34]

; 244  :         if (dwError == ERROR_SUCCESS) {

  00e18	e59d3034	 ldr         r3, [sp, #0x34]
  00e1c	e3530000	 cmp         r3, #0
  00e20	1a00000f	 bne         |$L32222|

; 245  :             *(pBytesReturned) = pReadInfo->TransferLength * wSectorSize;

  00e24	e59d3068	 ldr         r3, [sp, #0x68]
  00e28	e2830008	 add         r0, r3, #8
  00e2c	e1dd11b8	 ldrh        r1, [sp, #0x18]
  00e30	e5d03003	 ldrb        r3, [r0, #3]
  00e34	e1a02403	 mov         r2, r3, lsl #8
  00e38	e5d03002	 ldrb        r3, [r0, #2]
  00e3c	e1833002	 orr         r3, r3, r2
  00e40	e1a02403	 mov         r2, r3, lsl #8
  00e44	e5d03001	 ldrb        r3, [r0, #1]
  00e48	e1833002	 orr         r3, r3, r2
  00e4c	e1a02403	 mov         r2, r3, lsl #8
  00e50	e5d03000	 ldrb        r3, [r0]
  00e54	e1833002	 orr         r3, r3, r2
  00e58	e0020193	 mul         r2, r3, r1
  00e5c	e59d306c	 ldr         r3, [sp, #0x6C]
  00e60	e5832000	 str         r2, [r3]
  00e64		 |$L32222|

; 246  :         }
; 247  :     } else {

  00e64	ea000041	 b           |$L32223|
  00e68		 |$L32221|

; 248  :         SetupCdRomRead(pReadInfo->bRawMode, CurAddr.Address.lba, pReadInfo->TransferLength, &CmdPkt);

  00e68	e28d3020	 add         r3, sp, #0x20
  00e6c	e58d3000	 str         r3, [sp]
  00e70	e59d3068	 ldr         r3, [sp, #0x68]
  00e74	e2831008	 add         r1, r3, #8
  00e78	e5d13003	 ldrb        r3, [r1, #3]
  00e7c	e1a02403	 mov         r2, r3, lsl #8
  00e80	e5d13002	 ldrb        r3, [r1, #2]
  00e84	e1833002	 orr         r3, r3, r2
  00e88	e1a02403	 mov         r2, r3, lsl #8
  00e8c	e5d13001	 ldrb        r3, [r1, #1]
  00e90	e1833002	 orr         r3, r3, r2
  00e94	e1a02403	 mov         r2, r3, lsl #8
  00e98	e5d13000	 ldrb        r3, [r1]
  00e9c	e1833002	 orr         r3, r3, r2
  00ea0	e59d2014	 ldr         r2, [sp, #0x14]
  00ea4	e59d1068	 ldr         r1, [sp, #0x68]
  00ea8	e281e00c	 add         lr, r1, #0xC
  00eac	e1de10d3	 ldrsb       r1, [lr, #3]
  00eb0	e1a00401	 mov         r0, r1, lsl #8
  00eb4	e5de1002	 ldrb        r1, [lr, #2]
  00eb8	e1811000	 orr         r1, r1, r0
  00ebc	e1a00401	 mov         r0, r1, lsl #8
  00ec0	e5de1001	 ldrb        r1, [lr, #1]
  00ec4	e1811000	 orr         r1, r1, r0
  00ec8	e1a00401	 mov         r0, r1, lsl #8
  00ecc	e5de1000	 ldrb        r1, [lr]
  00ed0	e1811000	 orr         r1, r1, r0
  00ed4	e59d0064	 ldr         r0, [sp, #0x64]
  00ed8	eb000000	 bl          |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z|

; 249  :         
; 250  :         if (AtapiSendCommand(&CmdPkt, wSectorSize, IsDMASupported())) {

  00edc	e59d0064	 ldr         r0, [sp, #0x64]
  00ee0	eb000000	 bl          |?IsDMASupported@CDisk@@QAAHXZ|
  00ee4	e58d004c	 str         r0, [sp, #0x4C]
  00ee8	e59d304c	 ldr         r3, [sp, #0x4C]
  00eec	e1dd21b8	 ldrh        r2, [sp, #0x18]
  00ef0	e28d1020	 add         r1, sp, #0x20
  00ef4	e59d0064	 ldr         r0, [sp, #0x64]
  00ef8	eb000000	 bl          |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z|
  00efc	e58d0050	 str         r0, [sp, #0x50]
  00f00	e59d3050	 ldr         r3, [sp, #0x50]
  00f04	e3530000	 cmp         r3, #0
  00f08	0a000016	 beq         |$L32224|

; 251  :             if (!AtapiReceiveData(pSgBuf, pReadInfo->sgcount,pBytesReturned)) {

  00f0c	e59d306c	 ldr         r3, [sp, #0x6C]
  00f10	e59d2068	 ldr         r2, [sp, #0x68]
  00f14	e2820014	 add         r0, r2, #0x14
  00f18	e5d02003	 ldrb        r2, [r0, #3]
  00f1c	e1a01402	 mov         r1, r2, lsl #8
  00f20	e5d02002	 ldrb        r2, [r0, #2]
  00f24	e1822001	 orr         r2, r2, r1
  00f28	e1a01402	 mov         r1, r2, lsl #8
  00f2c	e5d02001	 ldrb        r2, [r0, #1]
  00f30	e1822001	 orr         r2, r2, r1
  00f34	e1a01402	 mov         r1, r2, lsl #8
  00f38	e5d02000	 ldrb        r2, [r0]
  00f3c	e1822001	 orr         r2, r2, r1
  00f40	e59d1008	 ldr         r1, [sp, #8]
  00f44	e59d0064	 ldr         r0, [sp, #0x64]
  00f48	eb000000	 bl

⌨️ 快捷键说明

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