diff --git a/rpcs3/Emu/SysCalls/Modules/cellFont.cpp b/rpcs3/Emu/SysCalls/Modules/cellFont.cpp index 171ee032cf..59130605eb 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellFont.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellFont.cpp @@ -30,7 +30,7 @@ int cellFontInitializeWithRevision(u64 revisionFlags, vm::ptr co return CELL_FONT_OK; } -int cellFontGetRevisionFlags(vm::ptr revisionFlags) +int cellFontGetRevisionFlags(vm::ptr> revisionFlags) { UNIMPLEMENTED_FUNC(cellFont); return CELL_FONT_OK; @@ -40,7 +40,7 @@ int cellFontInit(vm::ptr config) { cellFont->Log("cellFontInit(config=0x%x)", config.addr()); - vm::var revisionFlags; + vm::var> revisionFlags; revisionFlags.value() = 0; cellFontGetRevisionFlags(revisionFlags); return cellFontInitializeWithRevision(revisionFlags.value(), config); diff --git a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp index ff0845fb92..e27ba77b72 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp @@ -798,7 +798,7 @@ int cellGcmSortRemapEaIoAddress() //---------------------------------------------------------------------------- // Memory Mapping //---------------------------------------------------------------------------- -s32 cellGcmAddressToOffset(u64 address, vm::ptr offset) +s32 cellGcmAddressToOffset(u64 address, vm::ptr> offset) { cellGcmSys->Log("cellGcmAddressToOffset(address=0x%x,offset_addr=0x%x)", address, offset.addr()); diff --git a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.h b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.h index 7b4b18075f..bf18ace462 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.h +++ b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.h @@ -24,7 +24,7 @@ u32 gcmGetLocalMemorySize(); // SysCalls s32 cellGcmSetPrepareFlip(vm::ptr ctxt, u32 id); -s32 cellGcmAddressToOffset(u64 address, vm::ptr offset); +s32 cellGcmAddressToOffset(u64 address, vm::ptr> offset); u32 cellGcmGetMaxIoMapSize(); void cellGcmGetOffsetTable(vm::ptr table); s32 cellGcmIoOffsetToAddress(u32 ioOffset, u64 address); diff --git a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp index a29f28b8be..db9da02789 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp @@ -38,9 +38,9 @@ int cellGifDecOpen(u32 mainHandle, vm::ptr subHandle, vm::ptr fd; + vm::var> fd; int ret = cellFsOpen(vm::ptr::make(src->fileName.addr()), 0, fd, vm::ptr::make(0), 0); - current_subHandle->fd = fd; + current_subHandle->fd = fd->ToLE(); if (ret != CELL_OK) return CELL_GIFDEC_ERROR_OPEN_FILE; // Get size of file @@ -72,7 +72,7 @@ int cellGifDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptr //Write the header to buffer vm::var buffer; // Alloc buffer for GIF header - vm::var pos, nread; + vm::var> pos, nread; switch(subHandle_data->src.srcSelect.ToBE()) { @@ -154,7 +154,7 @@ int cellGifDecDecodeData(u32 mainHandle, u32 subHandle, vm::ptr data, vm::pt //Copy the GIF file to a buffer vm::var gif((u32)fileSize); - vm::var pos, nread; + vm::var> pos, nread; switch(subHandle_data->src.srcSelect.ToBE()) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp index 658aa535e8..9ac73c1584 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellJpgDec.cpp @@ -44,9 +44,9 @@ int cellJpgDecOpen(u32 mainHandle, vm::ptr subHandle, vm::ptr fd; + vm::var> fd; int ret = cellFsOpen(vm::ptr::make(src->fileName.addr()), 0, fd, vm::ptr::make(0), 0); - current_subHandle->fd = fd; + current_subHandle->fd = fd->ToLE(); if (ret != CELL_OK) return CELL_JPGDEC_ERROR_OPEN_FILE; // Get size of file @@ -92,7 +92,7 @@ int cellJpgDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptr //Write the header to buffer vm::var buffer((u32)fileSize); - vm::var pos, nread; + vm::var> pos, nread; switch(subHandle_data->src.srcSelect.ToBE()) { @@ -161,7 +161,7 @@ int cellJpgDecDecodeData(u32 mainHandle, u32 subHandle, vm::ptr data, vm::pt //Copy the JPG file to a buffer vm::var jpg((u32)fileSize); - vm::var pos, nread; + vm::var> pos, nread; switch(subHandle_data->src.srcSelect.ToBE()) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellPngDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellPngDec.cpp index 15c51fc612..8ee22ef4e3 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellPngDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellPngDec.cpp @@ -83,9 +83,9 @@ s32 pngDecOpen( case se32(CELL_PNGDEC_FILE): // Get file descriptor - vm::var fd; + vm::var> fd; int ret = cellFsOpen(vm::ptr::make(src->fileName.addr()), 0, fd, vm::ptr::make(0), 0); - stream->fd = fd; + stream->fd = fd->ToLE(); if (ret != CELL_OK) return CELL_PNGDEC_ERROR_OPEN_FILE; // Get size of file @@ -141,7 +141,7 @@ s32 pngReadHeader( //Write the header to buffer vm::var buffer; // Alloc buffer for PNG header auto buffer_32 = buffer.To>(); - vm::var pos, nread; + vm::var> pos, nread; switch (stream->src.srcSelect.ToBE()) { @@ -246,7 +246,7 @@ s32 pngDecodeData( //Copy the PNG file to a buffer vm::var png((u32)fileSize); - vm::var pos, nread; + vm::var> pos, nread; switch (stream->src.srcSelect.ToBE()) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp index ef7868f4b0..c87eb12b6d 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp @@ -14,7 +14,7 @@ extern s32 cellVideoOutConfigure(u32 videoOut, vm::ptr handler); extern void cellGcmSetVBlankHandler(vm::ptr handler); -extern int cellGcmAddressToOffset(u64 address, vm::ptr offset); +extern int cellGcmAddressToOffset(u64 address, vm::ptr> offset); extern int cellGcmSetDisplayBuffer(u32 id, u32 offset, u32 pitch, u32 width, u32 height); extern int cellGcmSetPrepareFlip(vm::ptr ctx, u32 id); extern int cellGcmSetSecondVFrequency(u32 freq); @@ -1049,12 +1049,12 @@ int cellRescSetBufferAddress(vm::ptr colorBuffers, vm::ptr vertexArray s_rescInternalInstance->m_vertexArrayEA = vertexArray.addr(); s_rescInternalInstance->m_fragmentUcodeEA = fragmentShader.addr(); - vm::var dstOffset; + vm::var> dstOffset; cellGcmAddressToOffset(s_rescInternalInstance->m_colorBuffersEA, dstOffset); for (int i=0; im_dstOffsets[i] = dstOffset + i * s_rescInternalInstance->m_dstBufInterval; + s_rescInternalInstance->m_dstOffsets[i] = dstOffset->ToLE() + i * s_rescInternalInstance->m_dstBufInterval; } for (int i=0; i pSelf, s32 streamType cellSail->Todo("cellSailPlayerCreateDescriptor(pSelf_addr=0x%x, streamType=%d, pMediaInfo_addr=0x%x, pUri_addr=0x%x, ppDesc_addr=0x%x)", pSelf.addr(), streamType, pMediaInfo.addr(), pUri.addr(), ppDesc.addr()); - CellSailDescriptor *pDesc = new CellSailDescriptor(); - vm::ptr descriptor = vm::ptr::make(Memory.RealToVirtualAddr(&pDesc)); + // TODO: Let the game allocate memory for the descriptor, setup the descriptor and pass it back to the game - descriptor->streamType = streamType; - descriptor->registered = false; + //CellSailDescriptor *pDesc = new CellSailDescriptor(); + //u32 descriptorAddress = pSelf->allocator->callbacks->pAlloc(pSelf->allocator->pArg, 4, descriptorAddress); + //cellSail->Error("Address: 0x%x", descriptorAddress); + //vm::ptr descriptor = vm::ptr::make(Memory.RealToVirtualAddr(&descriptorAddress)); + //descriptor->streamType = streamType; + //descriptor->registered = false; pSelf->descriptors = 0; pSelf->repeatMode = 0; - ppDesc = descriptor; + //ppDesc = descriptor; - cellSail->Todo("pSelf_addr=0x%x, pDesc_addr=0x%x", pSelf.addr(), descriptor.addr()); - cellSailPlayerAddDescriptor(pSelf, ppDesc); + //cellSail->Todo("pSelf_addr=0x%x, pDesc_addr=0x%x", pSelf.addr(), descriptor.addr()); + //cellSailPlayerAddDescriptor(pSelf, ppDesc); return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellSail.h b/rpcs3/Emu/SysCalls/Modules/cellSail.h index 831a3c1218..18c244ab3a 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSail.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSail.h @@ -618,8 +618,8 @@ union CellSailEvent }; }; -typedef void(*CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size); -typedef void(*CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory); +typedef u32(*CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size); +typedef u32(*CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory); typedef int(*CellSailSoundAdapterFuncMakeup)(u32 pArg); typedef int(*CellSailSoundAdapterFuncCleanup)(u32 pArg); @@ -1102,5 +1102,4 @@ struct CellSailPlayer be_t repeatMode; be_t descriptors; vm::ptr registeredDescriptors[2]; - be_t internalData[128]; }; \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp b/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp index a9bbdcde3e..8cbefa8055 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sys_fs.cpp @@ -111,7 +111,7 @@ int sdata_unpack(const std::string& packed_file, const std::string& unpacked_fil } -int cellFsSdataOpen(vm::ptr path, int flags, vm::ptr fd, vm::ptr arg, u64 size) +int cellFsSdataOpen(vm::ptr path, int flags, vm::ptr> fd, vm::ptr arg, u64 size) { sys_fs->Warning("cellFsSdataOpen(path=\"%s\", flags=0x%x, fd_addr=0x%x, arg_addr=0x%x, size=0x%llx) -> cellFsOpen()", path.get_ptr(), flags, fd.addr(), arg.addr(), size); @@ -270,7 +270,7 @@ int cellFsAioFinish(vm::ptr mount_point) return CELL_OK; } -int cellFsReadWithOffset(u32 fd, u64 offset, vm::ptr buf, u64 buffer_size, vm::ptr nread) +int cellFsReadWithOffset(u32 fd, u64 offset, vm::ptr buf, u64 buffer_size, vm::ptr> nread) { sys_fs->Warning("cellFsReadWithOffset(fd=%d, offset=0x%llx, buf_addr=0x%x, buffer_size=%lld nread=0x%llx)", fd, offset, buf.addr(), buffer_size, nread.addr()); @@ -278,7 +278,7 @@ int cellFsReadWithOffset(u32 fd, u64 offset, vm::ptr buf, u64 buffer_size, LV2_LOCK(0); int ret; - vm::var oldPos, newPos; + vm::var> oldPos, newPos; ret = cellFsLseek(fd, 0, CELL_SEEK_CUR, oldPos); // Save the current position if (ret) return ret; ret = cellFsLseek(fd, offset, CELL_SEEK_SET, newPos); // Move to the specified offset diff --git a/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp b/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp index fee2232d3a..9c5feb2a0c 100644 --- a/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp +++ b/rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp @@ -30,7 +30,7 @@ struct FsRingBufferConfig } fs_config; -s32 cellFsOpen(vm::ptr path, s32 flags, vm::ptr fd, vm::ptr arg, u64 size) +s32 cellFsOpen(vm::ptr path, s32 flags, vm::ptr> fd, vm::ptr arg, u64 size) { sys_fs->Log("cellFsOpen(path=\"%s\", flags=0x%x, fd_addr=0x%x, arg_addr=0x%x, size=0x%llx)", path.get_ptr(), flags, fd.addr(), arg.addr(), size); @@ -116,7 +116,7 @@ s32 cellFsOpen(vm::ptr path, s32 flags, vm::ptr fd, vm::ptr buf, u64 nbytes, vm::ptr nread) +s32 cellFsRead(u32 fd, vm::ptr buf, u64 nbytes, vm::ptr> nread) { sys_fs->Log("cellFsRead(fd=%d, buf_addr=0x%x, nbytes=0x%llx, nread_addr=0x%x)", fd, buf.addr(), nbytes, nread.addr()); @@ -407,7 +407,7 @@ s32 cellFsUnlink(vm::ptr path) return CELL_OK; } -s32 cellFsLseek(u32 fd, s64 offset, u32 whence, vm::ptr pos) +s32 cellFsLseek(u32 fd, s64 offset, u32 whence, vm::ptr> pos) { sys_fs->Log("cellFsLseek(fd=%d, offset=0x%llx, whence=0x%x, pos_addr=0x%x)", fd, offset, whence, pos.addr()); diff --git a/rpcs3/Emu/SysCalls/lv2/lv2Fs.h b/rpcs3/Emu/SysCalls/lv2/lv2Fs.h index 6703ca34cf..6adb71cdc9 100644 --- a/rpcs3/Emu/SysCalls/lv2/lv2Fs.h +++ b/rpcs3/Emu/SysCalls/lv2/lv2Fs.h @@ -128,8 +128,8 @@ struct CellFsRingBuffer }; // SysCalls -s32 cellFsOpen(vm::ptr path, s32 flags, vm::ptr fd, vm::ptr arg, u64 size); -s32 cellFsRead(u32 fd, vm::ptr buf, u64 nbytes, vm::ptr nread); +s32 cellFsOpen(vm::ptr path, s32 flags, vm::ptr> fd, vm::ptr arg, u64 size); +s32 cellFsRead(u32 fd, vm::ptr buf, u64 nbytes, vm::ptr> nread); s32 cellFsWrite(u32 fd, vm::ptr buf, u64 nbytes, vm::ptr nwrite); s32 cellFsClose(u32 fd); s32 cellFsOpendir(vm::ptr path, vm::ptr fd); @@ -143,7 +143,7 @@ s32 cellFsChmod(vm::ptr path, u32 mode); s32 cellFsFsync(u32 fd); s32 cellFsRmdir(vm::ptr path); s32 cellFsUnlink(vm::ptr path); -s32 cellFsLseek(u32 fd, s64 offset, u32 whence, vm::ptr pos); +s32 cellFsLseek(u32 fd, s64 offset, u32 whence, vm::ptr> pos); s32 cellFsFtruncate(u32 fd, u64 size); s32 cellFsTruncate(vm::ptr path, u64 size); s32 cellFsFGetBlockSize(u32 fd, vm::ptr sector_size, vm::ptr block_size);