From 185c067d5b02b571495f9370a95dd9d9ae84cb94 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 3 Dec 2019 00:31:34 +0300 Subject: [PATCH] C-style cast cleanup V --- rpcs3/Emu/CPU/CPUTranslator.h | 2 +- rpcs3/Emu/Cell/Modules/StaticHLE.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellL10n.cpp | 4 +- rpcs3/Emu/Cell/Modules/cellMic.cpp | 24 ++-- rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellOskDialog.cpp | 4 +- rpcs3/Emu/Cell/Modules/cellPad.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellPamf.cpp | 30 ++--- rpcs3/Emu/Cell/Modules/cellPngDec.cpp | 14 +-- rpcs3/Emu/Cell/Modules/cellResc.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellRtc.cpp | 8 +- rpcs3/Emu/Cell/Modules/cellSail.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellSearch.cpp | 14 +-- rpcs3/Emu/Cell/Modules/cellSpurs.cpp | 102 ++++++++-------- rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp | 22 ++-- rpcs3/Emu/Cell/Modules/cellSsl.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellSync.cpp | 80 ++++++------ rpcs3/Emu/Cell/Modules/cellVdec.cpp | 20 +-- rpcs3/Emu/Cell/Modules/cellVoice.cpp | 8 +- rpcs3/Emu/Cell/Modules/cellVoice.h | 2 +- rpcs3/Emu/Cell/Modules/cellVpost.cpp | 16 +-- rpcs3/Emu/Cell/Modules/libmixer.cpp | 18 +-- rpcs3/Emu/Cell/Modules/sceNp.h | 4 +- rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp | 10 +- rpcs3/Emu/Cell/Modules/sys_game.cpp | 8 +- rpcs3/Emu/Cell/Modules/sys_libc_.cpp | 6 +- rpcs3/Emu/Cell/PPUThread.cpp | 82 ++++++------- rpcs3/Emu/Cell/PPUTranslator.cpp | 4 +- rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp | 12 +- rpcs3/Emu/Cell/SPUInterpreter.cpp | 36 +++--- rpcs3/Emu/Cell/SPUThread.cpp | 16 +-- rpcs3/Emu/Io/KeyboardHandler.cpp | 2 +- rpcs3/Emu/Io/PadHandler.cpp | 18 +-- rpcs3/Emu/Io/usb_device.cpp | 10 +- rpcs3/Emu/Memory/vm.cpp | 30 ++--- rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp | 4 +- rpcs3/Emu/RSX/CgBinaryProgram.h | 28 ++--- rpcs3/Emu/RSX/Common/BufferUtils.cpp | 136 +++++++++++---------- rpcs3/Emu/RSX/Common/ProgramStateCache.cpp | 24 ++-- rpcs3/Emu/RSX/Common/surface_store.h | 6 +- rpcs3/Emu/RSX/Common/surface_utils.h | 6 +- rpcs3/Emu/RSX/Overlays/overlay_font.cpp | 2 +- rpcs3/Emu/RSX/rsx_utils.cpp | 48 ++++---- rpcs3/Emu/System.cpp | 2 +- 44 files changed, 439 insertions(+), 435 deletions(-) diff --git a/rpcs3/Emu/CPU/CPUTranslator.h b/rpcs3/Emu/CPU/CPUTranslator.h index dd70045a71..2b7c43d179 100644 --- a/rpcs3/Emu/CPU/CPUTranslator.h +++ b/rpcs3/Emu/CPU/CPUTranslator.h @@ -2753,7 +2753,7 @@ public: if (cv || llvm::isa(c)) { - result.value = llvm::ConstantDataVector::get(m_context, llvm::makeArrayRef((const u8*)mask._bytes, 16)); + result.value = llvm::ConstantDataVector::get(m_context, llvm::makeArrayRef(reinterpret_cast(&mask), 16)); result.value = m_ir->CreateZExt(result.value, get_type()); result.value = m_ir->CreateShuffleVector(data0, zeros, result.value); return result; diff --git a/rpcs3/Emu/Cell/Modules/StaticHLE.cpp b/rpcs3/Emu/Cell/Modules/StaticHLE.cpp index 82f0318813..f1292c68ce 100644 --- a/rpcs3/Emu/Cell/Modules/StaticHLE.cpp +++ b/rpcs3/Emu/Cell/Modules/StaticHLE.cpp @@ -121,7 +121,7 @@ uint16_t statichle_handler::gen_CRC16(const uint8_t* data_p, size_t length) crc = ~crc; data = crc; crc = (crc << 8) | ((data >> 8) & 0xff); - return (unsigned short)(crc); + return static_cast(crc); } bool statichle_handler::check_against_patterns(vm::cptr& data, u32 size, u32 addr) diff --git a/rpcs3/Emu/Cell/Modules/cellL10n.cpp b/rpcs3/Emu/Cell/Modules/cellL10n.cpp index ea794530d5..29c421e8ae 100644 --- a/rpcs3/Emu/Cell/Modules/cellL10n.cpp +++ b/rpcs3/Emu/Cell/Modules/cellL10n.cpp @@ -235,7 +235,7 @@ s32 _ConvertStr(s32 src_code, const void *src, s32 src_len, s32 dst_code, void * if (dst != NULL) { size_t dstLen = *dst_len; - size_t ictd = iconv(ict, (char **)&src, &srcLen, (char **)&dst, &dstLen); + size_t ictd = iconv(ict, const_cast(reinterpret_cast(&src)), &srcLen, reinterpret_cast(&dst), &dstLen); *dst_len -= dstLen; if (ictd == -1) { @@ -260,7 +260,7 @@ s32 _ConvertStr(s32 src_code, const void *src, s32 src_len, s32 dst_code, void * { char *bufPtr = buf; size_t bufLeft = sizeof(buf); - size_t ictd = iconv(ict, (char **)&src, &srcLen, (char **)&bufPtr, &bufLeft); + size_t ictd = iconv(ict, const_cast(reinterpret_cast(&src)), &srcLen, reinterpret_cast(&dst), &bufLeft); *dst_len += sizeof(buf) - bufLeft; if (ictd == -1 && errno != E2BIG) { diff --git a/rpcs3/Emu/Cell/Modules/cellMic.cpp b/rpcs3/Emu/Cell/Modules/cellMic.cpp index 18747ef8de..aade805988 100644 --- a/rpcs3/Emu/Cell/Modules/cellMic.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMic.cpp @@ -124,8 +124,8 @@ void microphone_device::variable_byteswap(const void* src, void* dst, const u32 { switch (bytesize) { - case 4: *(u32*)dst = *(be_t*)src; break; - case 2: *(u16*)dst = *(be_t*)src; break; + case 4: *static_cast(dst) = *static_cast*>(src); break; + case 2: *static_cast(dst) = *static_cast*>(src); break; } } @@ -668,7 +668,7 @@ s32 cellMicStop(u32 dev_num) s32 cellMicGetDeviceAttr(u32 dev_num, CellMicDeviceAttr deviceAttributes, vm::ptr arg1, vm::ptr arg2) { - cellMic.trace("cellMicGetDeviceAttr(dev_num=%d, deviceAttribute=%d, arg1=*0x%x, arg2=*0x%x)", dev_num, (u32)deviceAttributes, arg1, arg2); + cellMic.trace("cellMicGetDeviceAttr(dev_num=%d, deviceAttribute=%d, arg1=*0x%x, arg2=*0x%x)", dev_num, +deviceAttributes, arg1, arg2); if (!arg1 || (!arg2 && deviceAttributes == CELLMIC_DEVATTR_CHANVOL)) return CELL_MIC_ERROR_PARAM; @@ -699,7 +699,7 @@ s32 cellMicGetDeviceAttr(u32 dev_num, CellMicDeviceAttr deviceAttributes, vm::pt s32 cellMicSetDeviceAttr(u32 dev_num, CellMicDeviceAttr deviceAttributes, u32 arg1, u32 arg2) { - cellMic.trace("cellMicSetDeviceAttr(dev_num=%d, deviceAttributes=%d, arg1=%d, arg2=%d)", dev_num, (u32)deviceAttributes, arg1, arg2); + cellMic.trace("cellMicSetDeviceAttr(dev_num=%d, deviceAttributes=%d, arg1=%d, arg2=%d)", dev_num, +deviceAttributes, arg1, arg2); const auto mic_thr = g_fxo->get(); const std::lock_guard lock(mic_thr->mutex); @@ -732,27 +732,27 @@ s32 cellMicSetDeviceAttr(u32 dev_num, CellMicDeviceAttr deviceAttributes, u32 ar s32 cellMicGetSignalAttr(u32 dev_num, CellMicSignalAttr sig_attrib, vm::ptr value) { - cellMic.todo("cellMicGetSignalAttr(dev_num=%d, sig_attrib=%d, value=*0x%x)", dev_num, (u32)sig_attrib, value); + cellMic.todo("cellMicGetSignalAttr(dev_num=%d, sig_attrib=%d, value=*0x%x)", dev_num, +sig_attrib, value); return CELL_OK; } s32 cellMicSetSignalAttr(u32 dev_num, CellMicSignalAttr sig_attrib, vm::ptr value) { - cellMic.todo("cellMicSetSignalAttr(dev_num=%d, sig_attrib=%d, value=*0x%x)", dev_num, (u32)sig_attrib, value); + cellMic.todo("cellMicSetSignalAttr(dev_num=%d, sig_attrib=%d, value=*0x%x)", dev_num, +sig_attrib, value); return CELL_OK; } s32 cellMicGetSignalState(u32 dev_num, CellMicSignalState sig_state, vm::ptr value) { - cellMic.todo("cellMicGetSignalState(dev_num=%d, sig_state=%d, value=*0x%x)", dev_num, (u32)sig_state, value); + cellMic.todo("cellMicGetSignalState(dev_num=%d, sig_state=%d, value=*0x%x)", dev_num, +sig_state, value); const auto mic_thr = g_fxo->get(); const std::lock_guard lock(mic_thr->mutex); if (!mic_thr->init) return CELL_MIC_ERROR_NOT_INIT; - be_t* ival = (be_t*)value.get_ptr(); - be_t* fval = (be_t*)value.get_ptr(); + be_t* ival = vm::_ptr(value.addr()); + be_t* fval = vm::_ptr(value.addr()); switch (sig_state) { @@ -897,8 +897,7 @@ s32 cellMicReadRaw(u32 dev_num, vm::ptr data, u32 maxBytes) if (!mic.is_opened() || !(mic.get_signal_types() & CELLMIC_SIGTYPE_RAW)) return CELL_MIC_ERROR_NOT_OPEN; - u8* res_buf = (u8*)data.get_ptr(); - return mic.read_raw(res_buf, maxBytes); + return mic.read_raw(vm::_ptr(data.addr()), maxBytes); } s32 cellMicRead(u32 dev_num, vm::ptr data, u32 maxBytes) @@ -918,8 +917,7 @@ s32 cellMicRead(u32 dev_num, vm::ptr data, u32 maxBytes) if (!mic.is_opened() || !(mic.get_signal_types() & CELLMIC_SIGTYPE_DSP)) return CELL_MIC_ERROR_NOT_OPEN; - u8* res_buf = (u8*)data.get_ptr(); - return mic.read_dsp(res_buf, maxBytes); + return mic.read_dsp(vm::_ptr(data.addr()), maxBytes); } s32 cellMicReadAux(u32 dev_num, vm::ptr data, s32 max_bytes) diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp index 7ecc385d49..c552be59c9 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp @@ -554,7 +554,7 @@ error_code cellMsgDialogProgressBarInc(u32 progressBarIndex, u32 delta) { if (auto dlg = manager->get()) { - return dlg->progress_bar_increment(progressBarIndex, (f32)delta); + return dlg->progress_bar_increment(progressBarIndex, static_cast(delta)); } } diff --git a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp index 2dfb75f70f..f3545d727a 100644 --- a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp @@ -105,7 +105,7 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia } // Get the OSK options - u32 maxLength = (inputFieldInfo->limit_length >= CELL_OSKDIALOG_STRING_SIZE) ? 511 : (u32)inputFieldInfo->limit_length; + u32 maxLength = (inputFieldInfo->limit_length >= CELL_OSKDIALOG_STRING_SIZE) ? 511 : u32{inputFieldInfo->limit_length}; u32 options = dialogParam->prohibitFlgs; // Get init text and prepare return value @@ -176,7 +176,7 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia sysutil_register_cb([&, length = i](ppu_thread& cb_ppu) -> s32 { - return_value = ccb(cb_ppu, string_to_send, (s32)length); + return_value = ccb(cb_ppu, string_to_send, static_cast(length)); cellOskDialog.warning("osk_confirm_callback return_value=%d", return_value); for (u32 i = 0; i < CELL_OSKDIALOG_STRING_SIZE - 1; i++) diff --git a/rpcs3/Emu/Cell/Modules/cellPad.cpp b/rpcs3/Emu/Cell/Modules/cellPad.cpp index f75f514f71..6bc2029a2f 100644 --- a/rpcs3/Emu/Cell/Modules/cellPad.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPad.cpp @@ -574,7 +574,7 @@ error_code cellPadSetActDirect(u32 port_no, vm::ptr param) return CELL_PAD_ERROR_INVALID_PARAMETER; // Note: signed check unlike the usual unsigned check - if ((s32)g_ps3_process_info.sdk_ver > 0x1FFFFF) + if (static_cast(g_ps3_process_info.sdk_ver) > 0x1FFFFF) { // make sure reserved bits are 0 for (int i = 0; i < 6; i++) diff --git a/rpcs3/Emu/Cell/Modules/cellPamf.cpp b/rpcs3/Emu/Cell/Modules/cellPamf.cpp index 30b900d0d8..27a4216cf4 100644 --- a/rpcs3/Emu/Cell/Modules/cellPamf.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPamf.cpp @@ -117,7 +117,7 @@ s32 pamfStreamTypeToEsFilterId(u8 type, u8 ch, CellCodecEsFilterId& pEsFilterId) u8 pamfGetStreamType(vm::ptr pSelf, u32 stream) { // TODO: get stream type correctly - verify(HERE), (stream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (stream < pSelf->pAddr->stream_count); auto& header = pSelf->pAddr->stream_headers[stream]; switch (header.type) @@ -138,7 +138,7 @@ u8 pamfGetStreamType(vm::ptr pSelf, u32 stream) u8 pamfGetStreamChannel(vm::ptr pSelf, u32 stream) { // TODO: get stream channel correctly - verify(HERE), (stream < (u32)pSelf->pAddr->stream_count); + verify(HERE), (stream < pSelf->pAddr->stream_count); auto& header = pSelf->pAddr->stream_headers[stream]; switch (header.type) @@ -184,7 +184,7 @@ s32 cellPamfGetHeaderSize(vm::ptr pAddr, u64 fileSize, vm::ptr //if ((u32)pAddr->magic != 0x464d4150) return CELL_PAMF_ERROR_UNKNOWN_TYPE; - const u64 offset = (u64)pAddr->data_offset << 11; + const u64 offset = u64{pAddr->data_offset} << 11; *pSize = offset; return CELL_OK; } @@ -195,7 +195,7 @@ s32 cellPamfGetHeaderSize2(vm::ptr pAddr, u64 fileSize, u32 attribut //if ((u32)pAddr->magic != 0x464d4150) return CELL_PAMF_ERROR_UNKNOWN_TYPE; - const u64 offset = (u64)pAddr->data_offset << 11; + const u64 offset = u64{pAddr->data_offset} << 11; *pSize = offset; return CELL_OK; } @@ -206,9 +206,9 @@ s32 cellPamfGetStreamOffsetAndSize(vm::ptr pAddr, u64 fileSize, vm:: //if ((u32)pAddr->magic != 0x464d4150) return CELL_PAMF_ERROR_UNKNOWN_TYPE; - const u64 offset = (u64)pAddr->data_offset << 11; + const u64 offset = u64{pAddr->data_offset} << 11; *pOffset = offset; - const u64 size = (u64)pAddr->data_size << 11; + const u64 size = u64{pAddr->data_size} << 11; *pSize = size; return CELL_OK; } @@ -231,7 +231,7 @@ s32 cellPamfReaderInitialize(vm::ptr pSelf, vm::cptr } else // if fileSize is unknown { - pSelf->fileSize = ((u64)pAddr->data_offset << 11) + ((u64)pAddr->data_size << 11); + pSelf->fileSize = (u64{pAddr->data_offset} << 11) + (u64{pAddr->data_size} << 11); } pSelf->pAddr = pAddr; @@ -251,7 +251,7 @@ s32 cellPamfReaderGetPresentationStartTime(vm::ptr pSelf, vm::pt // always returns CELL_OK - pTimeStamp->upper = (u32)(u16)pSelf->pAddr->start_pts_high; + pTimeStamp->upper = pSelf->pAddr->start_pts_high; pTimeStamp->lower = pSelf->pAddr->start_pts_low; return CELL_OK; } @@ -262,7 +262,7 @@ s32 cellPamfReaderGetPresentationEndTime(vm::ptr pSelf, vm::ptr< // always returns CELL_OK - pTimeStamp->upper = (u32)(u16)pSelf->pAddr->end_pts_high; + pTimeStamp->upper = pSelf->pAddr->end_pts_high; pTimeStamp->lower = pSelf->pAddr->end_pts_low; return CELL_OK; } @@ -454,7 +454,7 @@ s32 cellPamfReaderGetEsFilterId(vm::ptr pSelf, vm::ptrstream < pSelf->pAddr->stream_count; + verify(HERE), static_cast(pSelf->stream) < pSelf->pAddr->stream_count; auto& header = pSelf->pAddr->stream_headers[pSelf->stream]; pEsFilterId->filterIdMajor = header.fid_major; pEsFilterId->filterIdMinor = header.fid_minor; @@ -467,7 +467,7 @@ s32 cellPamfReaderGetStreamInfo(vm::ptr pSelf, vm::ptr pIn { cellPamf.warning("cellPamfReaderGetStreamInfo(pSelf=*0x%x, pInfo=*0x%x, size=%d)", pSelf, pInfo, size); - verify(HERE), (u32)pSelf->stream < pSelf->pAddr->stream_count; + verify(HERE), static_cast(pSelf->stream) < pSelf->pAddr->stream_count; auto& header = pSelf->pAddr->stream_headers[pSelf->stream]; const u8 type = pamfGetStreamType(pSelf, pSelf->stream); const u8 ch = pamfGetStreamChannel(pSelf, pSelf->stream); @@ -501,8 +501,8 @@ s32 cellPamfReaderGetStreamInfo(vm::ptr pSelf, vm::ptr pIn info->sarHeight = 0; } - info->horizontalSize = ((u16)header.AVC.horizontalSize & 0xff) * 16; - info->verticalSize = ((u16)header.AVC.verticalSize & 0xff) * 16; + info->horizontalSize = (header.AVC.horizontalSize & u8{0xff}) * 16; + info->verticalSize = (header.AVC.verticalSize & u8{0xff}) * 16; info->frameCropLeftOffset = header.AVC.frameCropLeftOffset; info->frameCropRightOffset = header.AVC.frameCropRightOffset; info->frameCropTopOffset = header.AVC.frameCropTopOffset; @@ -567,8 +567,8 @@ s32 cellPamfReaderGetStreamInfo(vm::ptr pSelf, vm::ptr pIn info->sarHeight = 0; } - info->horizontalSize = ((u16)header.M2V.horizontalSize & 0xff) * 16; - info->verticalSize = ((u16)header.M2V.verticalSize & 0xff) * 16; + info->horizontalSize = (header.M2V.horizontalSize & u8{0xff}) * 16; + info->verticalSize = (header.M2V.verticalSize & u8{0xff}) * 16; info->horizontalSizeValue = header.M2V.horizontalSizeValue; info->verticalSizeValue = header.M2V.verticalSizeValue; diff --git a/rpcs3/Emu/Cell/Modules/cellPngDec.cpp b/rpcs3/Emu/Cell/Modules/cellPngDec.cpp index bce724de80..d75c896c22 100644 --- a/rpcs3/Emu/Cell/Modules/cellPngDec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPngDec.cpp @@ -59,7 +59,7 @@ void pngDecReadBuffer(png_structp png_ptr, png_bytep out, png_size_t length) } // Cast the IO pointer to our custom structure - PngBuffer& buffer = *(PngBuffer*)io_ptr; + PngBuffer& buffer = *static_cast(io_ptr); // Read froma file or a buffer if (buffer.file) @@ -85,7 +85,7 @@ void pngDecReadBuffer(png_structp png_ptr, png_bytep out, png_size_t length) void pngDecRowCallback(png_structp png_ptr, png_bytep new_row, png_uint_32 row_num, int pass) { - PngStream* stream = (PngStream*)png_get_progressive_ptr(png_ptr); + PngStream* stream = static_cast(png_get_progressive_ptr(png_ptr)); if (!stream) { cellPngDec.error("Failed to obtain streamPtr in rowCallback."); @@ -123,7 +123,7 @@ void pngDecRowCallback(png_structp png_ptr, png_bytep new_row, png_uint_32 row_n void pngDecInfoCallback(png_structp png_ptr, png_infop info) { - PngStream* stream = (PngStream*)png_get_progressive_ptr(png_ptr); + PngStream* stream = static_cast(png_get_progressive_ptr(png_ptr)); if (!stream) { cellPngDec.error("Failed to obtain streamPtr in rowCallback."); @@ -136,7 +136,7 @@ void pngDecInfoCallback(png_structp png_ptr, png_infop info) void pngDecEndCallback(png_structp png_ptr, png_infop info) { - PngStream* stream = (PngStream*)png_get_progressive_ptr(png_ptr); + PngStream* stream = static_cast(png_get_progressive_ptr(png_ptr)); if (!stream) { cellPngDec.error("Failed to obtain streamPtr in endCallback."); @@ -286,7 +286,7 @@ be_t pngDecGetChunkInformation(PngStream* stream, bool IDAT = false) chunk_information |= 1 << 11; // sRGB } - if (png_get_iCCP(stream->png_ptr, stream->info_ptr, &name, &compression_type, &profile, (png_uint_32*)&proflen)) + if (png_get_iCCP(stream->png_ptr, stream->info_ptr, &name, &compression_type, &profile, &proflen)) { chunk_information |= 1 << 12; // iCCP } @@ -483,7 +483,7 @@ s32 pngDecOpen(ppu_thread& ppu, PHandle handle, PPStream png_stream, PSrc source stream->cbCtrlStream.cbCtrlStrmArg = control_stream->cbCtrlStrmArg; stream->cbCtrlStream.cbCtrlStrmFunc = control_stream->cbCtrlStrmFunc; - png_set_progressive_read_fn(stream->png_ptr, (void *)stream.get_ptr(), pngDecInfoCallback, pngDecRowCallback, pngDecEndCallback); + png_set_progressive_read_fn(stream->png_ptr, stream.get_ptr(), pngDecInfoCallback, pngDecRowCallback, pngDecEndCallback); // push header tag to libpng to keep us in sync try @@ -789,7 +789,7 @@ s32 pngDecodeData(ppu_thread& ppu, PHandle handle, PStream stream, vm::ptr d const s32 text_chunks = png_get_text(stream->png_ptr, stream->info_ptr, nullptr, nullptr); // Set the chunk information and the previously obtained number of text chunks - data_out_info->numText = (u32)text_chunks; + data_out_info->numText = static_cast(text_chunks); data_out_info->chunkInformation = pngDecGetChunkInformation(stream.get_ptr(), true); png_unknown_chunkp unknowns; const int num_unknowns = png_get_unknown_chunks(stream->png_ptr, stream->info_ptr, &unknowns); diff --git a/rpcs3/Emu/Cell/Modules/cellResc.cpp b/rpcs3/Emu/Cell/Modules/cellResc.cpp index 8f12a6bfdb..2e689cfeb6 100644 --- a/rpcs3/Emu/Cell/Modules/cellResc.cpp +++ b/rpcs3/Emu/Cell/Modules/cellResc.cpp @@ -146,7 +146,7 @@ void cellRescSetVBlankHandler(vm::ptr handler) s32 cellRescCreateInterlaceTable(u32 ea_addr, f32 srcH, CellRescTableElement depth, s32 length) { - cellResc.todo("cellRescCreateInterlaceTable(ea_addr=0x%x, srcH=%f, depth=%d, length=%d)", ea_addr, srcH, (s32)depth, length); + cellResc.todo("cellRescCreateInterlaceTable(ea_addr=0x%x, srcH=%f, depth=%d, length=%d)", ea_addr, srcH, +depth, length); return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/cellRtc.cpp b/rpcs3/Emu/Cell/Modules/cellRtc.cpp index 0277fcf179..beb491d454 100644 --- a/rpcs3/Emu/Cell/Modules/cellRtc.cpp +++ b/rpcs3/Emu/Cell/Modules/cellRtc.cpp @@ -7,15 +7,15 @@ LOG_CHANNEL(cellRtc); s64 convertToUNIXTime(u16 seconds, u16 minutes, u16 hours, u16 days, s32 years) { - return (s64)seconds + (s64)minutes * 60 + (s64)hours * 3600 + (s64)days * 86400 + - (s64)(years - 70) * 31536000 + (s64)((years - 69) / 4) * 86400 - - (s64)((years - 1) / 100) * 86400 + (s64)((years + 299) / 400) * 86400; + return s64{seconds} + s64{minutes} * 60 + s64{hours} * 3600 + s64{days} * 86400 + + s64{years - 70} * 31536000 + s64{(years - 69) / 4} * 86400 - + s64{(years - 1) / 100} * 86400 + s64{(years + 299) / 400} * 86400; } u64 convertToWin32FILETIME(u16 seconds, u16 minutes, u16 hours, u16 days, s32 years) { s64 unixtime = convertToUNIXTime(seconds, minutes, hours, days, years); - u64 win32time = u64(unixtime) * u64(10000000) + u64(116444736000000000); + u64 win32time = static_cast(unixtime) * 10000000 + 116444736000000000; u64 win32filetime = win32time | win32time >> 32; return win32filetime; } diff --git a/rpcs3/Emu/Cell/Modules/cellSail.cpp b/rpcs3/Emu/Cell/Modules/cellSail.cpp index 143fb19e75..7ad401ebdf 100644 --- a/rpcs3/Emu/Cell/Modules/cellSail.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSail.cpp @@ -99,7 +99,7 @@ s32 cellSailDescriptorCreateDatabase(vm::ptr pSelf, vm::ptr< { cellSail.warning("cellSailDescriptorCreateDatabase(pSelf=*0x%x, pDatabase=*0x%x, size=0x%x, arg=0x%llx)", pSelf, pDatabase, size, arg); - switch ((s32)pSelf->streamType) + switch (pSelf->streamType) { case CELL_SAIL_STREAM_PAMF: { diff --git a/rpcs3/Emu/Cell/Modules/cellSearch.cpp b/rpcs3/Emu/Cell/Modules/cellSearch.cpp index 691393ec74..3fce5a8606 100644 --- a/rpcs3/Emu/Cell/Modules/cellSearch.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSearch.cpp @@ -59,7 +59,7 @@ struct search_object_t error_code cellSearchInitialize(CellSearchMode mode, u32 container, vm::ptr func, vm::ptr userData) { - cellSearch.warning("cellSearchInitialize(mode=0x%x, container=0x%x, func=*0x%x, userData=*0x%x)", (u32) mode, container, func, userData); + cellSearch.warning("cellSearchInitialize(mode=0x%x, container=0x%x, func=*0x%x, userData=*0x%x)", +mode, container, func, userData); const auto search = g_fxo->get(); search->func = func; @@ -91,7 +91,7 @@ error_code cellSearchFinalize() error_code cellSearchStartListSearch(CellSearchListSearchType type, CellSearchSortOrder sortOrder, vm::ptr outSearchId) { - cellSearch.todo("cellSearchStartListSearch(type=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", (u32) type, (u32) sortOrder, outSearchId); + cellSearch.todo("cellSearchStartListSearch(type=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", +type, +sortOrder, outSearchId); if (!outSearchId) { @@ -117,7 +117,7 @@ error_code cellSearchStartListSearch(CellSearchListSearchType type, CellSearchSo error_code cellSearchStartContentSearchInList(vm::cptr listId, CellSearchSortKey sortKey, CellSearchSortOrder sortOrder, vm::ptr outSearchId) { - cellSearch.todo("cellSearchStartContentSearchInList(listId=*0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", listId, (u32) sortKey, (u32) sortOrder, outSearchId); + cellSearch.todo("cellSearchStartContentSearchInList(listId=*0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", listId, +sortKey, +sortOrder, outSearchId); if (!listId || !outSearchId) { @@ -143,7 +143,7 @@ error_code cellSearchStartContentSearchInList(vm::cptr list error_code cellSearchStartContentSearch(CellSearchContentSearchType type, CellSearchSortKey sortKey, CellSearchSortOrder sortOrder, vm::ptr outSearchId) { - cellSearch.todo("cellSearchStartContentSearch(type=0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", (u32) type, (u32) sortKey, (u32) sortOrder, outSearchId); + cellSearch.todo("cellSearchStartContentSearch(type=0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", +type, +sortKey, +sortOrder, outSearchId); if (!outSearchId) { @@ -169,7 +169,7 @@ error_code cellSearchStartContentSearch(CellSearchContentSearchType type, CellSe error_code cellSearchStartSceneSearchInVideo(vm::cptr videoId, CellSearchSceneSearchType searchType, CellSearchSortOrder sortOrder, vm::ptr outSearchId) { - cellSearch.todo("cellSearchStartSceneSearchInVideo(videoId=*0x%x, searchType=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", videoId, (u32) searchType, (u32) sortOrder, outSearchId); + cellSearch.todo("cellSearchStartSceneSearchInVideo(videoId=*0x%x, searchType=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", videoId, +searchType, +sortOrder, outSearchId); if (!videoId || !outSearchId) { @@ -195,7 +195,7 @@ error_code cellSearchStartSceneSearchInVideo(vm::cptr video error_code cellSearchStartSceneSearch(CellSearchSceneSearchType searchType, vm::cptr gameTitle, vm::cpptr tags, u32 tagNum, CellSearchSortKey sortKey, CellSearchSortOrder sortOrder, vm::ptr outSearchId) { - cellSearch.todo("cellSearchStartSceneSearch(searchType=0x%x, gameTitle=%s, tags=**0x%x, tagNum=0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", (u32) searchType, gameTitle, tags, tagNum, (u32) sortKey, (u32) sortOrder, outSearchId); + cellSearch.todo("cellSearchStartSceneSearch(searchType=0x%x, gameTitle=%s, tags=**0x%x, tagNum=0x%x, sortKey=0x%x, sortOrder=0x%x, outSearchId=*0x%x)", +searchType, gameTitle, tags, tagNum, +sortKey, +sortOrder, outSearchId); if (!gameTitle || !outSearchId) { @@ -302,7 +302,7 @@ error_code cellSearchGetContentInfoGameComment(vm::cptr con error_code cellSearchGetMusicSelectionContext(CellSearchId searchId, vm::cptr contentId, CellSearchRepeatMode repeatMode, CellSearchContextOption option, vm::ptr outContext) { - cellSearch.todo("cellSearchGetMusicSelectionContext(searchId=0x%x, contentId=*0x%x, repeatMode=0x%x, option=0x%x, outContext=*0x%x)", searchId, contentId, (u32) repeatMode, (u32) option, outContext); + cellSearch.todo("cellSearchGetMusicSelectionContext(searchId=0x%x, contentId=*0x%x, repeatMode=0x%x, option=0x%x, outContext=*0x%x)", searchId, contentId, +repeatMode, +option, outContext); if (!outContext) { diff --git a/rpcs3/Emu/Cell/Modules/cellSpurs.cpp b/rpcs3/Emu/Cell/Modules/cellSpurs.cpp index d4175a4bb1..e57e879a1a 100644 --- a/rpcs3/Emu/Cell/Modules/cellSpurs.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSpurs.cpp @@ -168,7 +168,7 @@ namespace _spurs namespace _spurs { // Add workload - s32 add_workload(vm::ptr spurs, vm::ptr wid, vm::cptr pm, u32 size, u64 data, const u8 priorityTable[], u32 minContention, u32 maxContention, vm::cptr nameClass, vm::cptr nameInstance, vm::ptr hook, vm::ptr hookArg); + s32 add_workload(vm::ptr spurs, vm::ptr wid, vm::cptr pm, u32 size, u64 data, const u8(&priorityTable)[8], u32 minContention, u32 maxContention, vm::cptr nameClass, vm::cptr nameInstance, vm::ptr hook, vm::ptr hookArg); } //s32 _cellSpursWorkloadAttributeInitialize(vm::ptr attr, u32 revision, u32 sdkVersion, vm::cptr pm, u32 size, u64 data, vm::cptr priority, u32 minCnt, u32 maxCnt); @@ -506,13 +506,13 @@ void _spurs::handler_wait_ready(ppu_thread& ppu, vm::ptr spurs) for (u32 i = 0; i < 16; i++) { if (spurs->wklState1[i] == SPURS_WKL_STATE_RUNNABLE && - *((u64*)spurs->wklInfo1[i].priority) != 0 && + std::bit_cast(spurs->wklInfo1[i].priority) != 0 && spurs->wklMaxContention[i] & 0x0F) { if (spurs->wklReadyCount1[i] || spurs->wklSignal1.load() & (0x8000u >> i) || (spurs->wklFlag.flag.load() == 0 && - spurs->wklFlagReceiver == (u8)i)) + spurs->wklFlagReceiver == static_cast(i))) { foundRunnableWorkload = true; break; @@ -525,13 +525,13 @@ void _spurs::handler_wait_ready(ppu_thread& ppu, vm::ptr spurs) for (u32 i = 0; i < 16; i++) { if (spurs->wklState2[i] == SPURS_WKL_STATE_RUNNABLE && - *((u64*)spurs->wklInfo2[i].priority) != 0 && + std::bit_cast(spurs->wklInfo2[i].priority) != 0 && spurs->wklMaxContention[i] & 0xF0) { if (spurs->wklIdleSpuCountOrReadyCount2[i] || spurs->wklSignal2.load() & (0x8000u >> i) || (spurs->wklFlag.flag.load() == 0 && - spurs->wklFlagReceiver == (u8)i + 0x10)) + spurs->wklFlagReceiver == static_cast(i) + 0x10)) { foundRunnableWorkload = true; break; @@ -642,7 +642,7 @@ s32 _spurs::wakeup_shutdown_completion_waiter(ppu_thread& ppu, vm::ptr= (u32)(spurs->flags1 & SF1_32_WORKLOADS ? CELL_SPURS_MAX_WORKLOAD2 : CELL_SPURS_MAX_WORKLOAD)) + if (wid >= (spurs->flags1 & SF1_32_WORKLOADS ? CELL_SPURS_MAX_WORKLOAD2 : CELL_SPURS_MAX_WORKLOAD)) { return CELL_SPURS_POLICY_MODULE_ERROR_INVAL; } @@ -676,7 +676,7 @@ s32 _spurs::wakeup_shutdown_completion_waiter(ppu_thread& ppu, vm::ptrhook || wklEvent->load() & 0x10) { verify(HERE), (wklF->x28 == 2); - rc = sys_semaphore_post(ppu, (u32)wklF->sem, 1); + rc = sys_semaphore_post(ppu, static_cast(wklF->sem), 1); } return rc; @@ -714,11 +714,11 @@ void _spurs::event_helper_entry(ppu_thread& ppu, vm::ptr spurs) for (u32 i = 0; i < CELL_SPURS_MAX_WORKLOAD; i++) { - sys_semaphore_post(ppu, (u32)spurs->wklF1[i].sem, 1); + sys_semaphore_post(ppu, static_cast(spurs->wklF1[i].sem), 1); if (spurs->flags1 & SF1_32_WORKLOADS) { - sys_semaphore_post(ppu, (u32)spurs->wklF2[i].sem, 1); + sys_semaphore_post(ppu, static_cast(spurs->wklF2[i].sem), 1); } } } @@ -732,7 +732,7 @@ void _spurs::event_helper_entry(ppu_thread& ppu, vm::ptr spurs) } else if (data0 < 1) { - const u32 shutdownMask = (u32)event_data3; + const u32 shutdownMask = static_cast(event_data3); for (u32 wid = 0; wid < CELL_SPURS_MAX_WORKLOAD; wid++) { @@ -749,7 +749,7 @@ void _spurs::event_helper_entry(ppu_thread& ppu, vm::ptr spurs) } else if (data0 == 2) { - CHECK_SUCCESS(sys_semaphore_post(ppu, (u32)spurs->semPrv, 1)); + CHECK_SUCCESS(sys_semaphore_post(ppu, static_cast(spurs->semPrv), 1)); } else if (data0 == 3) { @@ -887,7 +887,7 @@ s32 _spurs::stop_event_helper(ppu_thread& ppu, vm::ptr spurs) return CELL_SPURS_CORE_ERROR_STAT; } - if (sys_ppu_thread_join(ppu, (u32)spurs->ppu1, vm::var{}) != CELL_OK) + if (sys_ppu_thread_join(ppu, static_cast(spurs->ppu1), vm::var{}) != CELL_OK) { return CELL_SPURS_CORE_ERROR_STAT; } @@ -918,7 +918,7 @@ s32 _spurs::join_handler_thread(ppu_thread& ppu, vm::ptr spurs) return CELL_SPURS_CORE_ERROR_STAT; } - CHECK_SUCCESS(sys_ppu_thread_join(ppu, (u32)spurs->ppu0, vm::var{})); + CHECK_SUCCESS(sys_ppu_thread_join(ppu, static_cast(spurs->ppu0), vm::var{})); spurs->ppu0 = 0xFFFFFFFF; return CELL_OK; @@ -987,7 +987,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr spurs, u32 revision, spurs->ppu0 = 0xffffffffull; spurs->ppu1 = 0xffffffffull; spurs->flags = flags; - spurs->prefixSize = (u8)prefixSize; + spurs->prefixSize = static_cast(prefixSize); std::memcpy(spurs->prefix, prefix.get_ptr(), prefixSize); if (!isSecond) @@ -1063,7 +1063,7 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr spurs, u32 revision, std::strcat(spuTgName.get_ptr(), "CellSpursKernelGroup"); spuTgAttr->name = spuTgName; - spuTgAttr->nsize = (u32)strlen(spuTgAttr->name.get_ptr()) + 1; + spuTgAttr->nsize = static_cast(std::strlen(spuTgAttr->name.get_ptr())) + 1; spuTgAttr->type = SYS_SPU_THREAD_GROUP_TYPE_NORMAL; if (spurs->flags & SAF_UNKNOWN_FLAG_0) @@ -1102,15 +1102,15 @@ s32 _spurs::initialize(ppu_thread& ppu, vm::ptr spurs, u32 revision, std::strcat(spuThName.get_ptr(), "CellSpursKernel"); spuThAttr->name = spuThName; - spuThAttr->name_len = (u32)strlen(spuThName.get_ptr()) + 2; + spuThAttr->name_len = static_cast(std::strlen(spuThName.get_ptr())) + 2; spuThAttr->option = SYS_SPU_THREAD_OPTION_DEC_SYNC_TB_ENABLE; spuThName[spuThAttr->name_len - 1] = '\0'; for (s32 num = 0; num < nSpus; num++) { spuThName[spuThAttr->name_len - 2] = '0' + num; - spuThArgs->arg1 = (u64)num << 32; - spuThArgs->arg2 = (u64)spurs.addr(); + spuThArgs->arg1 = static_cast(num) << 32; + spuThArgs->arg2 = spurs.addr(); if (s32 rc = sys_spu_thread_initialize(ppu, spurs.ptr(&CellSpurs::spus, num), spurs->spuTG, num, spurs.ptr(&CellSpurs::spuImg), spuThAttr, spuThArgs)) { @@ -1469,7 +1469,7 @@ s32 cellSpursAttributeEnableSystemWorkload(vm::ptr attr, vm: } attr->flags |= SAF_SYSTEM_WORKLOAD_ENABLED; // set flag - *(u64*)attr->swlPriority = *(u64*)*priority; // copy system workload priorities + std::memcpy(attr->swlPriority, priority.get_ptr(), 8); u32 isPreem = 0; // generate mask from isPreemptible values for (u32 j = 0; j < nSpus; j++) @@ -1633,7 +1633,7 @@ s32 cellSpursSetMaxContention(vm::ptr spurs, u32 wid, u32 maxContenti } /// Set the priority of a workload on each SPU -s32 cellSpursSetPriorities(vm::ptr spurs, u32 wid, vm::cptr priorities) +s32 cellSpursSetPriorities(vm::ptr spurs, u32 wid, vm::cptr priorities) { cellSpurs.warning("cellSpursSetPriorities(spurs=*0x%x, wid=%d, priorities=*0x%x)", spurs, wid, priorities); @@ -1667,20 +1667,16 @@ s32 cellSpursSetPriorities(vm::ptr spurs, u32 wid, vm::cptr prior // TODO: Implement this } - u64 prio = 0; - for (s32 i = 0; i < CELL_SPURS_MAX_SPU; i++) - { - if (priorities[i] >= CELL_SPURS_MAX_PRIORITY) - { - return CELL_SPURS_CORE_ERROR_INVAL; - } + const u64 prio = std::bit_cast(*priorities); - prio |= priorities[i]; - prio <<= 8; + // Test if any of the value >= CELL_SPURS_MAX_PRIORITY + if (prio & 0xf0f0f0f0f0f0f0f0) + { + return CELL_SPURS_CORE_ERROR_INVAL; } const auto wklInfo = wid < CELL_SPURS_MAX_WORKLOAD ? &spurs->wklInfo1[wid] : &spurs->wklInfo2[wid]; - *((be_t*)wklInfo->priority) = prio; + std::memcpy(wklInfo->priority, &prio, 8); spurs->sysSrvMsgUpdateWorkload = 0xff; spurs->sysSrvMessage = 0xff; @@ -1831,7 +1827,7 @@ void _spurs::trace_status_update(ppu_thread& ppu, vm::ptr spurs) if (init) { spurs->sysSrvMessage = 0xff; - CHECK_SUCCESS(sys_semaphore_wait(ppu, (u32)spurs->semPrv, 0)); + CHECK_SUCCESS(sys_semaphore_wait(ppu, static_cast(spurs->semPrv), 0)); } } @@ -2045,18 +2041,22 @@ s32 _cellSpursWorkloadAttributeInitialize(vm::ptr at return CELL_SPURS_POLICY_MODULE_ERROR_ALIGN; } - if (minCnt == 0 || *(u64*)*priority & 0xf0f0f0f0f0f0f0f0ull) // check if some priority > 15 + // Load packed priorities (endian-agnostic) + const u64 prio = std::bit_cast(*priority); + + // check if some priority > 15 + if (minCnt == 0 || prio & 0xf0f0f0f0f0f0f0f0) { return CELL_SPURS_POLICY_MODULE_ERROR_INVAL; } - memset(attr.get_ptr(), 0, sizeof(CellSpursWorkloadAttribute)); + std::memset(attr.get_ptr(), 0, sizeof(CellSpursWorkloadAttribute)); attr->revision = revision; attr->sdkVersion = sdkVersion; attr->pm = pm; attr->size = size; attr->data = data; - *(u64*)attr->priority = *(u64*)*priority; + std::memcpy(attr->priority, &prio, 8); attr->minContention = minCnt; attr->maxContention = maxCnt; return CELL_OK; @@ -2102,7 +2102,7 @@ s32 cellSpursWorkloadAttributeSetShutdownCompletionEventHook(vm::ptr spurs, vm::ptr wid, vm::cptr pm, u32 size, u64 data, const u8 priorityTable[], u32 minContention, u32 maxContention, vm::cptr nameClass, vm::cptr nameInstance, vm::ptr hook, vm::ptr hookArg) +s32 _spurs::add_workload(vm::ptr spurs, vm::ptr wid, vm::cptr pm, u32 size, u64 data, const u8(&priorityTable)[8], u32 minContention, u32 maxContention, vm::cptr nameClass, vm::cptr nameInstance, vm::ptr hook, vm::ptr hookArg) { if (!spurs || !wid || !pm) { @@ -2114,7 +2114,7 @@ s32 _spurs::add_workload(vm::ptr spurs, vm::ptr wid, vm::cptr 15 + if (minContention == 0 || std::bit_cast(priorityTable) & 0xf0f0f0f0f0f0f0f0ull) // check if some priority > 15 { return CELL_SPURS_POLICY_MODULE_ERROR_INVAL; } @@ -2128,10 +2128,10 @@ s32 _spurs::add_workload(vm::ptr spurs, vm::ptr wid, vm::cptrflags1 & SF1_32_WORKLOADS ? 0x20u : 0x10u; // TODO: check if can be changed spurs->wklEnabled.atomic_op([spurs, wmax, &wnum](be_t& value) { - wnum = utils::cntlz32(~(u32)value); // found empty position + wnum = utils::cntlz32(~value); // found empty position if (wnum < wmax) { - value |= (u32)(0x80000000ull >> wnum); // set workload bit + value |= (0x80000000 >> wnum); // set workload bit } }); @@ -2256,7 +2256,7 @@ s32 _spurs::add_workload(vm::ptr spurs, vm::ptr wid, vm::cptruniqueId.exchange((u8)res_wkl); + wkl->uniqueId.exchange(static_cast(res_wkl)); v = mask | (0x80000000u >> wnum); }); @@ -2453,11 +2453,11 @@ s32 cellSpursReadyCountStore(vm::ptr spurs, u32 wid, u32 value) if (wid < CELL_SPURS_MAX_WORKLOAD) { - spurs->wklReadyCount1[wid].exchange((u8)value); + spurs->wklReadyCount1[wid].exchange(static_cast(value)); } else { - spurs->wklIdleSpuCountOrReadyCount2[wid].exchange((u8)value); + spurs->wklIdleSpuCountOrReadyCount2[wid].exchange(static_cast(value)); } return CELL_OK; @@ -2608,7 +2608,7 @@ s32 _cellSpursWorkloadFlagReceiver(vm::ptr spurs, u32 wid, u32 is_set { if (FR == 0xff) { - FR = (u8)wid; + FR = static_cast(wid); } } else @@ -2810,11 +2810,11 @@ s32 cellSpursEventFlagSet(ppu_thread& ppu, vm::ptr eventFlag vm::var> taskset; if (eventFlag->isIwl) { - cellSpursLookUpTasksetAddress(ppu, vm::ptr::make((u32)eventFlag->addr), taskset, eventFlag->waitingTaskWklId[i]); + cellSpursLookUpTasksetAddress(ppu, vm::cast(eventFlag->addr, HERE), taskset, eventFlag->waitingTaskWklId[i]); } else { - taskset->set((u32)eventFlag->addr); + *taskset = vm::cast(eventFlag->addr, HERE); } auto rc = _cellSpursSendSignal(ppu, *taskset, eventFlag->waitingTaskId[i]); @@ -2978,7 +2978,7 @@ s32 _spurs::event_flag_wait(ppu_thread& ppu, vm::ptr eventFl } *mask = eventFlag->pendingRecvTaskEvents[i]; - ((CellSpursEventFlag::ControlSyncVar&)eventFlag->ctrl).ppuPendingRecv = 0; + eventFlag->ctrl.atomic_op([](auto& ctrl) { ctrl.ppuPendingRecv = 0; }); } *mask = receivedEvents; @@ -3029,11 +3029,11 @@ s32 cellSpursEventFlagAttachLv2EventQueue(ppu_thread& ppu, vm::ptr spurs; if (eventFlag->isIwl == 1) { - spurs.set((u32)eventFlag->addr); + spurs = vm::cast(eventFlag->addr, HERE); } else { - auto taskset = vm::ptr::make((u32)eventFlag->addr); + auto taskset = vm::ptr::make(vm::cast(eventFlag->addr, HERE)); spurs = taskset->spurs; } @@ -3122,11 +3122,11 @@ s32 cellSpursEventFlagDetachLv2EventQueue(ppu_thread& ppu, vm::ptr spurs; if (eventFlag->isIwl == 1) { - spurs.set((u32)eventFlag->addr); + spurs = vm::cast(eventFlag->addr, HERE); } else { - auto taskset = vm::ptr::make((u32)eventFlag->addr); + auto taskset = vm::ptr::make(vm::cast(eventFlag->addr, HERE)); spurs = taskset->spurs; } @@ -3904,7 +3904,7 @@ s32 cellSpursLookUpTasksetAddress(ppu_thread& ppu, vm::ptr spurs, vm: return rc ^ 0x100; } - taskset->set((u32)*data); + *taskset = vm::cast(*data, HERE); return CELL_OK; } @@ -3927,7 +3927,7 @@ s32 cellSpursTasksetGetSpursAddress(vm::cptr taskset, vm::ptr< return CELL_SPURS_TASK_ERROR_INVAL; } - *spurs = (u32)taskset->spurs.addr(); + *spurs = vm::cast(taskset->spurs.addr(), HERE); return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp b/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp index 721de9ea48..12776d8031 100644 --- a/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSpursSpu.cpp @@ -107,7 +107,7 @@ u32 cellSpursModulePollStatus(spu_thread& spu, u32* status) auto result = spu.gpr[3]._u64[1]; if (status) { - *status = (u32)result; + *status = static_cast(result); } u32 wklId = result >> 32; @@ -126,8 +126,8 @@ void cellSpursModuleExit(spu_thread& spu) bool spursDma(spu_thread& spu, u32 cmd, u64 ea, u32 lsa, u32 size, u32 tag) { spu.set_ch_value(MFC_LSA, lsa); - spu.set_ch_value(MFC_EAH, (u32)(ea >> 32)); - spu.set_ch_value(MFC_EAL, (u32)(ea)); + spu.set_ch_value(MFC_EAH, static_cast(ea >> 32)); + spu.set_ch_value(MFC_EAL, static_cast(ea)); spu.set_ch_value(MFC_Size, size); spu.set_ch_value(MFC_TagID, tag); spu.set_ch_value(MFC_Cmd, cmd); @@ -330,7 +330,7 @@ bool spursKernel1SelectWorkload(spu_thread& spu) // 6. Is the workload executable same as the currently loaded executable // 7. The workload id (lesser the number, more the weight) u16 weight = (wklFlag || wklSignal || (readyCount > contention[i])) ? 0x8000 : 0; - weight |= (u16)(ctxt->priority[i] & 0x7F) << 16; + weight |= (ctxt->priority[i] & 0x7F) << 8; // TODO: was shifted << 16 weight |= i == ctxt->wklCurrentId ? 0x80 : 0x00; weight |= (contention[i] > 0 && spurs->wklMinContention[i] > contention[i]) ? 0x40 : 0x00; weight |= ((CELL_SPURS_MAX_SPU - contention[i]) & 0x0F) << 2; @@ -424,7 +424,7 @@ bool spursKernel1SelectWorkload(spu_thread& spu) std::memcpy(vm::base(spu.offset + 0x100), spurs, 128); }//); - u64 result = (u64)wklSelectedId << 32; + u64 result = u64{wklSelectedId} << 32; result |= pollStatus; spu.gpr[3]._u64[1] = result; return true; @@ -597,7 +597,7 @@ bool spursKernel2SelectWorkload(spu_thread& spu) std::memcpy(vm::base(spu.offset + 0x100), spurs, 128); }//); - u64 result = (u64)wklSelectedId << 32; + u64 result = u64{wklSelectedId} << 32; result |= pollStatus; spu.gpr[3]._u64[1] = result; return true; @@ -609,8 +609,8 @@ void spursKernelDispatchWorkload(spu_thread& spu, u64 widAndPollStatus) auto ctxt = vm::_ptr(spu.offset + 0x100); auto isKernel2 = ctxt->spurs->flags1 & SF1_32_WORKLOADS ? true : false; - auto pollStatus = (u32)widAndPollStatus; - auto wid = (u32)(widAndPollStatus >> 32); + auto pollStatus = static_cast(widAndPollStatus); + auto wid = static_cast(widAndPollStatus >> 32); // DMA in the workload info for the selected workload auto wklInfoOffset = wid < CELL_SPURS_MAX_WORKLOAD ? &ctxt->spurs->wklInfo1[wid] : @@ -718,7 +718,7 @@ bool spursKernelEntry(spu_thread& spu) //spu.RegisterHleFunction(ctxt->selectWorkloadAddr, isKernel2 ? spursKernel2SelectWorkload : spursKernel1SelectWorkload); // Start the system service - spursKernelDispatchWorkload(spu, ((u64)CELL_SPURS_SYS_SERVICE_WORKLOAD_ID) << 32); + spursKernelDispatchWorkload(spu, u64{CELL_SPURS_SYS_SERVICE_WORKLOAD_ID} << 32); return false; } @@ -1167,7 +1167,7 @@ void spursSysServiceTraceSaveCount(spu_thread& spu, SpursKernelContext* ctxt) { if (ctxt->traceBuffer) { - auto traceInfo = vm::ptr::make((u32)(ctxt->traceBuffer - (ctxt->spurs->traceStartIndex[ctxt->spuNum] << 4))); + auto traceInfo = vm::ptr::make(vm::cast(ctxt->traceBuffer - (ctxt->spurs->traceStartIndex[ctxt->spuNum] << 4))); traceInfo->count[ctxt->spuNum] = ctxt->traceMsgCount; } } @@ -1787,7 +1787,7 @@ void spursTasksetDispatch(spu_thread& spu) if ((elfAddr & 5) == 1) { - std::memcpy(vm::base(spu.offset + 0x2FC0), &((CellSpursTaskset2*)(ctxt->taskset.get_ptr()))->task_exit_code[taskId], 0x10); + std::memcpy(vm::base(spu.offset + 0x2FC0), &vm::_ptr(vm::cast(ctxt->taskset.addr()))->task_exit_code[taskId], 0x10); } // Trace - GUID diff --git a/rpcs3/Emu/Cell/Modules/cellSsl.cpp b/rpcs3/Emu/Cell/Modules/cellSsl.cpp index 207ca5a4b9..081e8d22f1 100644 --- a/rpcs3/Emu/Cell/Modules/cellSsl.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSsl.cpp @@ -117,7 +117,7 @@ error_code cellSslCertificateLoader(u64 flag, vm::ptr buffer, u32 size, vm if (!flagBits[i-1]) continue; // If we're loading cert 6 (the baltimore cert), then we need set that we're loading the 'normal' set of certs. - *required += (u32)(getCert(certPath, i, flagBits[BaltimoreCert-1]).size()); + *required += ::size32(getCert(certPath, i, flagBits[BaltimoreCert-1])); } } else diff --git a/rpcs3/Emu/Cell/Modules/cellSync.cpp b/rpcs3/Emu/Cell/Modules/cellSync.cpp index a8ac3ef506..cd11af1f8e 100644 --- a/rpcs3/Emu/Cell/Modules/cellSync.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSync.cpp @@ -902,20 +902,20 @@ error_code _cellSyncLFQueueGetPushPointer(ppu_thread& ppu, vm::ptrm_bs == -1) + if (isBlocking && useEventQueue && std::bit_cast(queue->m_bs) == -1) { return CELL_SYNC_ERROR_STAT; } - s32 var2 = (s16)push.m_h8; + s32 var2 = static_cast(push.m_h8); s32 res; - if (useEventQueue && ((s32)push.m_h5 != var2 || push.m_h7)) + if (useEventQueue && (+push.m_h5 != var2 || push.m_h7)) { res = CELL_SYNC_ERROR_BUSY; } else { - var2 -= (s32)(u16)queue->pop1.load().m_h1; + var2 -= queue->pop1.load().m_h1; if (var2 < 0) { var2 += depth * 2; @@ -923,7 +923,7 @@ error_code _cellSyncLFQueueGetPushPointer(ppu_thread& ppu, vm::ptr(push.m_h8); *pointer = _pointer; if (_pointer + 1 >= depth * 2) { @@ -997,13 +997,13 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptrpush3.load(); auto push3 = old2; - s32 var1 = pointer - (u16)push3.m_h5; + s32 var1 = pointer - push3.m_h5; if (var1 < 0) { var1 += depth * 2; } - s32 var2 = (s32)(s16)queue->pop1.load().m_h4 - (s32)(u16)queue->pop1.load().m_h1; + s32 var2 = static_cast(queue->pop1.load().m_h4) - queue->pop1.load().m_h1; if (var2 < 0) { var2 += depth * 2; @@ -1019,9 +1019,9 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptr(~(var9_ | push3.m_h6))) - 16; // count leading zeros in u16 - s32 var5 = (s32)(u16)push3.m_h6 | var9_; + s32 var5 = push3.m_h6 | var9_; if (var9 & 0x30) { var5 = 0; @@ -1031,7 +1031,7 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptr= depth * 2) { var3 -= depth * 2; @@ -1054,7 +1054,7 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptr 1 && (u32)var8 > 1) + if (var9 > 1 && static_cast(var8) > 1) { verify(HERE), (16 - var2 <= 1); } @@ -1076,15 +1076,15 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptrm_hs1[var11]; + var6 = queue->m_hs1[var11]; } else { var6 = -1; } - push3.m_h5 = (u16)var3; - push3.m_h6 = (u16)var5; + push3.m_h5 = static_cast(var3); + push3.m_h6 = static_cast(var5); if (queue->push2.compare_and_swap_test(old, push2)) { @@ -1093,7 +1093,7 @@ error_code _cellSyncLFQueueCompletePushPointer(ppu_thread& ppu, vm::ptrpush3.compare_and_swap_test(old2, push3)); verify(HERE), (fpSendSignal); - return not_an_error(fpSendSignal(ppu, (u32)queue->m_eaSignal.addr(), var6)); + return not_an_error(fpSendSignal(ppu, queue->m_eaSignal.addr(), var6)); } else { @@ -1164,7 +1164,7 @@ error_code _cellSyncLFQueuePushBody(ppu_thread& ppu, vm::ptr qu const s32 depth = queue->m_depth; const s32 size = queue->m_size; const s32 pos = *position; - const u32 addr = vm::cast((u64)((queue->m_buffer.addr() & ~1ull) + size * (pos >= depth ? pos - depth : pos)), HERE); + const u32 addr = vm::cast((queue->m_buffer.addr() & ~1ull) + size * (pos >= depth ? pos - depth : pos), HERE); std::memcpy(vm::base(addr), buffer.get_ptr(), size); if (queue->m_direction != CELL_SYNC_QUEUE_ANY2ANY) @@ -1201,20 +1201,20 @@ error_code _cellSyncLFQueueGetPopPointer(ppu_thread& ppu, vm::ptrm_bs == -1) + if (isBlocking && useEventQueue && std::bit_cast(queue->m_bs) == -1) { return CELL_SYNC_ERROR_STAT; } - s32 var2 = (s32)(s16)pop.m_h4; + s32 var2 = static_cast(pop.m_h4); s32 res; - if (useEventQueue && ((s32)(u16)pop.m_h1 != var2 || pop.m_h3)) + if (useEventQueue && (static_cast(pop.m_h1) != var2 || pop.m_h3)) { res = CELL_SYNC_ERROR_BUSY; } else { - var2 = (s32)(u16)queue->push1.load().m_h5 - var2; + var2 = queue->push1.load().m_h5 - var2; if (var2 < 0) { var2 += depth * 2; @@ -1222,7 +1222,7 @@ error_code _cellSyncLFQueueGetPopPointer(ppu_thread& ppu, vm::ptr 0) { - const s32 _pointer = (s16)pop.m_h4; + const s32 _pointer = static_cast(pop.m_h4); *pointer = _pointer; if (_pointer + 1 >= depth * 2) { @@ -1297,13 +1297,13 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptrpop3.load(); auto pop3 = old2; - s32 var1 = pointer - (u16)pop3.m_h1; + s32 var1 = pointer - pop3.m_h1; if (var1 < 0) { var1 += depth * 2; } - s32 var2 = (s32)(s16)queue->push1.load().m_h8 - (s32)(u16)queue->push1.load().m_h5; + s32 var2 = static_cast(queue->push1.load().m_h8) - queue->push1.load().m_h5; if (var2 < 0) { var2 += depth * 2; @@ -1319,9 +1319,9 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptr(~(var9_ | pop3.m_h2))) - 16; // count leading zeros in u16 - s32 var5 = (s32)(u16)pop3.m_h2 | var9_; + s32 var5 = pop3.m_h2 | var9_; if (var9 & 0x30) { var5 = 0; @@ -1331,7 +1331,7 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptr= depth * 2) { var3 -= depth * 2; @@ -1358,7 +1358,7 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptr 1 && (u32)var8 > 1) + if (var9 > 1 && static_cast(var8) > 1) { verify(HERE), (16 - var2 <= 1); } @@ -1380,11 +1380,11 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptrm_hs2[var11]; + var6 = queue->m_hs2[var11]; } - pop3.m_h1 = (u16)var3; - pop3.m_h2 = (u16)var5; + pop3.m_h1 = static_cast(var3); + pop3.m_h2 = static_cast(var5); if (queue->pop2.compare_and_swap_test(old, pop2)) { @@ -1392,7 +1392,7 @@ error_code _cellSyncLFQueueCompletePopPointer(ppu_thread& ppu, vm::ptrpop3.compare_and_swap_test(old2, pop3)); verify(HERE), (fpSendSignal); - return not_an_error(fpSendSignal(ppu, (u32)queue->m_eaSignal.addr(), var6)); + return not_an_error(fpSendSignal(ppu, queue->m_eaSignal.addr(), var6)); } else { @@ -1463,7 +1463,7 @@ error_code _cellSyncLFQueuePopBody(ppu_thread& ppu, vm::ptr que const s32 depth = queue->m_depth; const s32 size = queue->m_size; const s32 pos = *position; - const u32 addr = vm::cast((u64)((queue->m_buffer.addr() & ~1) + size * (pos >= depth ? pos - depth : pos)), HERE); + const u32 addr = vm::cast((queue->m_buffer.addr() & ~1) + size * (pos >= depth ? pos - depth : pos), HERE); std::memcpy(buffer.get_ptr(), vm::base(addr), size); if (queue->m_direction != CELL_SYNC_QUEUE_ANY2ANY) @@ -1501,16 +1501,16 @@ error_code cellSyncLFQueueClear(vm::ptr queue) s32 var1, var2; if (queue->m_direction != CELL_SYNC_QUEUE_ANY2ANY) { - var1 = var2 = (u16)queue->pop2.load().pack; + var1 = var2 = queue->pop2.load().pack; } else { - var1 = (u16)push.m_h7; - var2 = (u16)pop.m_h3; + var1 = push.m_h7; + var2 = pop.m_h3; } - if ((s32)(s16)pop.m_h4 != (s32)(u16)pop.m_h1 || - (s32)(s16)push.m_h8 != (s32)(u16)push.m_h5 || + if (static_cast(pop.m_h4) != +pop.m_h1 || + static_cast(push.m_h8) != +push.m_h5 || ((var2 >> 10) & 0x1f) != (var2 & 0x1f) || ((var1 >> 10) & 0x1f) != (var1 & 0x1f)) { @@ -1547,8 +1547,8 @@ error_code cellSyncLFQueueSize(vm::ptr queue, vm::ptr size const auto old = queue->pop3.load(); // Loads must be in this order - u32 var1 = (u16)queue->pop1.load().m_h1; - u32 var2 = (u16)queue->push1.load().m_h5; + u32 var1 = queue->pop1.load().m_h1; + u32 var2 = queue->push1.load().m_h5; if (queue->pop3.compare_and_swap_test(old, old)) { @@ -1558,7 +1558,7 @@ error_code cellSyncLFQueueSize(vm::ptr queue, vm::ptr size } else { - *size = var2 - var1 + (u32)queue->m_depth * 2; + *size = var2 - var1 + queue->m_depth * 2; } return CELL_OK; diff --git a/rpcs3/Emu/Cell/Modules/cellVdec.cpp b/rpcs3/Emu/Cell/Modules/cellVdec.cpp index ac9b226039..b6e868e6c8 100644 --- a/rpcs3/Emu/Cell/Modules/cellVdec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVdec.cpp @@ -557,7 +557,7 @@ error_code cellVdecEndSeq(u32 handle) error_code cellVdecDecodeAu(u32 handle, CellVdecDecodeMode mode, vm::cptr auInfo) { - cellVdec.trace("cellVdecDecodeAu(handle=0x%x, mode=%d, auInfo=*0x%x)", handle, (s32)mode, auInfo); + cellVdec.trace("cellVdecDecodeAu(handle=0x%x, mode=%d, auInfo=*0x%x)", handle, +mode, auInfo); const auto vdec = idm::get(handle); @@ -758,14 +758,14 @@ error_code cellVdecGetPicItem(u32 handle, vm::pptr picItem) info->startAddr = 0x00000123; // invalid value (no address for picture) info->size = align(av_image_get_buffer_size(vdec->ctx->pix_fmt, vdec->ctx->width, vdec->ctx->height, 1), 128); info->auNum = 1; - info->auPts[0].lower = (u32)(pts); - info->auPts[0].upper = (u32)(pts >> 32); - info->auPts[1].lower = (u32)CODEC_TS_INVALID; - info->auPts[1].upper = (u32)CODEC_TS_INVALID; - info->auDts[0].lower = (u32)(dts); - info->auDts[0].upper = (u32)(dts >> 32); - info->auDts[1].lower = (u32)CODEC_TS_INVALID; - info->auDts[1].upper = (u32)CODEC_TS_INVALID; + info->auPts[0].lower = static_cast(pts); + info->auPts[0].upper = static_cast(pts >> 32); + info->auPts[1].lower = -1; + info->auPts[1].upper = -1; + info->auDts[0].lower = static_cast(dts); + info->auDts[0].upper = static_cast(dts >> 32); + info->auDts[1].lower = -1; + info->auDts[1].upper = -1; info->auUserData[0] = usrd; info->auUserData[1] = 0; info->status = CELL_OK; @@ -912,7 +912,7 @@ error_code cellVdecGetPicItem(u32 handle, vm::pptr picItem) error_code cellVdecSetFrameRate(u32 handle, CellVdecFrameRate frc) { - cellVdec.trace("cellVdecSetFrameRate(handle=0x%x, frc=0x%x)", handle, (s32)frc); + cellVdec.trace("cellVdecSetFrameRate(handle=0x%x, frc=0x%x)", handle, +frc); const auto vdec = idm::get(handle); diff --git a/rpcs3/Emu/Cell/Modules/cellVoice.cpp b/rpcs3/Emu/Cell/Modules/cellVoice.cpp index 40a9bee996..d3c8cc2e21 100644 --- a/rpcs3/Emu/Cell/Modules/cellVoice.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVoice.cpp @@ -178,7 +178,7 @@ error_code cellVoiceCreatePort(vm::ptr portId, vm::cptr { verify(HERE), ctr2 < CELLVOICE_MAX_PORT + 1; - std::tie(port, success) = manager->ports.try_emplace(::narrow((ctr2 << 8) | manager->id_ctr)); + std::tie(port, success) = manager->ports.try_emplace(::narrow((ctr2 << 8) | manager->id_ctr)); } port->second.info = *pArg; @@ -197,7 +197,7 @@ error_code cellVoiceDeletePort(u32 portId) if (!manager->is_init) return CELL_VOICE_ERROR_LIBVOICE_NOT_INIT; - if (manager->ports.erase((u16)portId) == 0) + if (manager->ports.erase(static_cast(portId)) == 0) return CELL_VOICE_ERROR_TOPOLOGY; return CELL_OK; @@ -601,7 +601,7 @@ error_code cellVoiceSetMuteFlagAll(u16 bMuted) if (!manager->is_init) return CELL_VOICE_ERROR_LIBVOICE_NOT_INIT; - // Doesn't change port->bMute value + // Doesn't change port->bMute value return CELL_OK; } @@ -796,7 +796,7 @@ error_code cellVoiceWriteToIPort(u32 ips, vm::cptr data, vm::ptr size if (!manager->is_init) return CELL_VOICE_ERROR_LIBVOICE_NOT_INIT; - + auto iport = manager->access_port(ips); if (!iport || iport->info.portType >= CELLVOICE_PORTTYPE_OUT_PCMAUDIO) diff --git a/rpcs3/Emu/Cell/Modules/cellVoice.h b/rpcs3/Emu/Cell/Modules/cellVoice.h index 30f65699b3..73c3bf7fd5 100644 --- a/rpcs3/Emu/Cell/Modules/cellVoice.h +++ b/rpcs3/Emu/Cell/Modules/cellVoice.h @@ -197,7 +197,7 @@ struct voice_manager port_t* access_port(u32 id) { // Upper 16 bits are ignored - auto pos = ports.find((u16)id); + auto pos = ports.find(static_cast(id)); if (pos == ports.end()) { diff --git a/rpcs3/Emu/Cell/Modules/cellVpost.cpp b/rpcs3/Emu/Cell/Modules/cellVpost.cpp index 9bd40294bb..2cb5d3a830 100644 --- a/rpcs3/Emu/Cell/Modules/cellVpost.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVpost.cpp @@ -76,15 +76,15 @@ s32 cellVpostExec(u32 handle, vm::cptr inPicBuff, vm::cptroutHeight; //ctrlParam->inWindow; // ignored - if (ctrlParam->inWindow.x) cellVpost.notice("*** inWindow.x = %d", (u32)ctrlParam->inWindow.x); - if (ctrlParam->inWindow.y) cellVpost.notice("*** inWindow.y = %d", (u32)ctrlParam->inWindow.y); - if (ctrlParam->inWindow.width != w) cellVpost.notice("*** inWindow.width = %d", (u32)ctrlParam->inWindow.width); - if (ctrlParam->inWindow.height != h) cellVpost.notice("*** inWindow.height = %d", (u32)ctrlParam->inWindow.height); + if (ctrlParam->inWindow.x) cellVpost.notice("*** inWindow.x = %d", ctrlParam->inWindow.x); + if (ctrlParam->inWindow.y) cellVpost.notice("*** inWindow.y = %d", ctrlParam->inWindow.y); + if (ctrlParam->inWindow.width != w) cellVpost.notice("*** inWindow.width = %d", ctrlParam->inWindow.width); + if (ctrlParam->inWindow.height != h) cellVpost.notice("*** inWindow.height = %d", ctrlParam->inWindow.height); //ctrlParam->outWindow; // ignored - if (ctrlParam->outWindow.x) cellVpost.notice("*** outWindow.x = %d", (u32)ctrlParam->outWindow.x); - if (ctrlParam->outWindow.y) cellVpost.notice("*** outWindow.y = %d", (u32)ctrlParam->outWindow.y); - if (ctrlParam->outWindow.width != ow) cellVpost.notice("*** outWindow.width = %d", (u32)ctrlParam->outWindow.width); - if (ctrlParam->outWindow.height != oh) cellVpost.notice("*** outWindow.height = %d", (u32)ctrlParam->outWindow.height); + if (ctrlParam->outWindow.x) cellVpost.notice("*** outWindow.x = %d", ctrlParam->outWindow.x); + if (ctrlParam->outWindow.y) cellVpost.notice("*** outWindow.y = %d", ctrlParam->outWindow.y); + if (ctrlParam->outWindow.width != ow) cellVpost.notice("*** outWindow.width = %d", ctrlParam->outWindow.width); + if (ctrlParam->outWindow.height != oh) cellVpost.notice("*** outWindow.height = %d", ctrlParam->outWindow.height); //ctrlParam->execType; // ignored //ctrlParam->scalerType; // ignored //ctrlParam->ipcType; // ignored diff --git a/rpcs3/Emu/Cell/Modules/libmixer.cpp b/rpcs3/Emu/Cell/Modules/libmixer.cpp index 8738fa14d9..f9c0b9bc4a 100644 --- a/rpcs3/Emu/Cell/Modules/libmixer.cpp +++ b/rpcs3/Emu/Cell/Modules/libmixer.cpp @@ -194,7 +194,7 @@ s32 cellSSPlayerCreate(vm::ptr handle, vm::ptr config) p.m_channels = config->channels; g_ssp.push_back(p); - *handle = (u32)g_ssp.size() - 1; + *handle = ::size32(g_ssp) - 1; return CELL_OK; } @@ -234,7 +234,7 @@ s32 cellSSPlayerSetWave(u32 handle, vm::ptr waveInfo, vm: g_ssp[handle].m_addr = waveInfo->addr; g_ssp[handle].m_samples = waveInfo->samples; g_ssp[handle].m_loop_start = waveInfo->loopStartOffset - 1; - g_ssp[handle].m_loop_mode = commonInfo ? (u32)commonInfo->loopMode : CELL_SSPLAYER_ONESHOT; + g_ssp[handle].m_loop_mode = commonInfo ? +commonInfo->loopMode : CELL_SSPLAYER_ONESHOT; g_ssp[handle].m_position = waveInfo->startOffset - 1; return CELL_OK; @@ -351,7 +351,7 @@ struct surmixer_thread : ppu_thread memset(g_surmx.mixdata, 0, sizeof(g_surmx.mixdata)); if (g_surmx.cb) { - g_surmx.cb(*this, g_surmx.cb_arg, (u32)g_surmx.mixcount, 256); + g_surmx.cb(*this, g_surmx.cb_arg, static_cast(g_surmx.mixcount), 256); lv2_obj::sleep(*this); } @@ -379,7 +379,7 @@ struct surmixer_thread : ppu_thread { pos_inc = -1; } - s32 shift = i - (int)fpos; // change playback speed (simple and rough) + s32 shift = i - static_cast(fpos); // change playback speed (simple and rough) if (shift > 0) { // slow playback @@ -397,15 +397,15 @@ struct surmixer_thread : ppu_thread { fpos += speed; } - p.m_position += (u32)pos_inc; + p.m_position += pos_inc; if (p.m_channels == 1) // get mono data { - left = right = (float)v[pos] / 0x8000 * p.m_level; + left = right = v[pos] / 32768.f * p.m_level; } else if (p.m_channels == 2) // get stereo data { - left = (float)v[pos * 2 + 0] / 0x8000 * p.m_level; - right = (float)v[pos * 2 + 1] / 0x8000 * p.m_level; + left = v[pos * 2 + 0] / 32768.f * p.m_level; + right = v[pos * 2 + 1] / 32768.f * p.m_level; } if (p.m_connected) // mix { @@ -422,7 +422,7 @@ struct surmixer_thread : ppu_thread } else if (p.m_loop_mode == CELL_SSPLAYER_ONESHOT_CONT) { - p.m_position -= (u32)pos_inc; // restore position + p.m_position -= pos_inc; // restore position } else // oneshot { diff --git a/rpcs3/Emu/Cell/Modules/sceNp.h b/rpcs3/Emu/Cell/Modules/sceNp.h index 4170a34b8e..bbc75b0b31 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.h +++ b/rpcs3/Emu/Cell/Modules/sceNp.h @@ -480,7 +480,7 @@ enum SceNpCustomMenuActionMask : u32 enum { SCE_NP_CUSTOM_MENU_INDEX_BITS = (sizeof(SceNpCustomMenuIndexMask) * 8), - SCE_NP_CUSTOM_MENU_INDEX_BITS_ALL = ((SceNpCustomMenuIndexMask) - 1), + SCE_NP_CUSTOM_MENU_INDEX_BITS_ALL = (static_cast(-1)), SCE_NP_CUSTOM_MENU_INDEX_BITS_SHIFT = 5, SCE_NP_CUSTOM_MENU_INDEX_BITS_MASK = (SCE_NP_CUSTOM_MENU_INDEX_BITS - 1), SCE_NP_CUSTOM_MENU_INDEX_BITS_MAX = 127, @@ -587,7 +587,7 @@ enum SceNpBasicMessageSubType : u16 }; // Applicable features of messages -#define SCE_NP_BASIC_MESSAGE_FEATURES_EXP_MIN(min) ((((u32)min << 16) | (0 << 15)) & 0xFFFF8000) +#define SCE_NP_BASIC_MESSAGE_FEATURES_EXP_MIN(min) (((static_cast(min) << 16) | (0 << 15)) & 0xFFFF8000) enum SceNpBasicMessageFeatures : u32 { SCE_NP_BASIC_MESSAGE_FEATURES_MULTI_RECEIPIENTS = 0x00000001, diff --git a/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp b/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp index 01e52d0f8a..0db29e53fc 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNpTrophy.cpp @@ -362,7 +362,7 @@ error_code sceNpTrophyRegisterContext(ppu_thread& ppu, u32 context, u32 handle, } else if (!trp.ContainsEntry("TROPCONF.SFM")) { - sceNpTrophy.error("sceNpTrophyRegisterContext(): Invalid/Incomplete trophy config"); + sceNpTrophy.error("sceNpTrophyRegisterContext(): Invalid/Incomplete trophy config"); return SCE_NP_TROPHY_ERROR_ILLEGAL_UPDATE; } @@ -379,7 +379,7 @@ error_code sceNpTrophyRegisterContext(ppu_thread& ppu, u32 context, u32 handle, std::string trophyPath = "/dev_hdd0/home/" + Emu.GetUsr() + "/trophy/" + ctxt->trp_name; if (!trp.Install(trophyPath)) { - sceNpTrophy.error("sceNpTrophyRegisterContext(): Failed to install trophy context '%s' (%s)", trophyPath, fs::g_tls_error); + sceNpTrophy.error("sceNpTrophyRegisterContext(): Failed to install trophy context '%s' (%s)", trophyPath, fs::g_tls_error); return SCE_NP_TROPHY_ERROR_ILLEGAL_UPDATE; } @@ -673,7 +673,7 @@ error_code sceNpTrophyUnlockTrophy(u32 context, u32 handle, s32 trophyId, vm::pt return SCE_NP_TROPHY_ERROR_UNKNOWN_HANDLE; } - if (trophyId < 0 || trophyId >= (s32)ctxt->tropusr->GetTrophiesCount()) + if (trophyId < 0 || trophyId >= static_cast(ctxt->tropusr->GetTrophiesCount())) return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; if (ctxt->tropusr->GetTrophyUnlockState(trophyId)) return SCE_NP_TROPHY_ERROR_ALREADY_UNLOCKED; @@ -931,7 +931,7 @@ error_code sceNpTrophyGetGameProgress(u32 context, u32 handle, vm::ptr perc } } - *percentage = (s32)(accuratePercentage / ctxt->tropusr->GetTrophiesCount()); + *percentage = static_cast(accuratePercentage / ctxt->tropusr->GetTrophiesCount()); return CELL_OK; } @@ -1017,7 +1017,7 @@ error_code sceNpTrophyGetTrophyIcon(u32 context, u32 handle, s32 trophyId, vm::p return SCE_NP_TROPHY_ERROR_INVALID_ARGUMENT; } - if (ctxt->tropusr->GetTrophiesCount() <= (u32)trophyId) + if (ctxt->tropusr->GetTrophiesCount() <= static_cast(trophyId)) { return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; } diff --git a/rpcs3/Emu/Cell/Modules/sys_game.cpp b/rpcs3/Emu/Cell/Modules/sys_game.cpp index 83e9c927f7..aa9f232af3 100644 --- a/rpcs3/Emu/Cell/Modules/sys_game.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_game.cpp @@ -21,7 +21,7 @@ static u32 get_string_array_size(vm::cpptr list, u32& out_count) if (const vm::cptr str = list[i]) { out_count++; - result += (((u32)std::strlen(str.get_ptr()) + 0x10) & -0x10) + 8; + result += ((static_cast(std::strlen(str.get_ptr())) + 0x10) & -0x10) + 8; continue; } break; @@ -35,7 +35,7 @@ static u32 get_exitspawn_size(vm::cptr path, vm::cpptr argv, vm::cpp arg_count = 1; env_count = 0; - u32 result = (((u32)std::strlen(path.get_ptr()) + 0x10) & -0x10) + 8; + u32 result = ((static_cast(std::strlen(path.get_ptr())) + 0x10) & -0x10) + 8; result += get_string_array_size(argv, arg_count); result += get_string_array_size(envp, env_count); @@ -51,7 +51,7 @@ static void put_string_array(vm::pptr pstr, vm::ptr& str, { for (u32 i = 0; i < count; i++) { - const u32 len = (u32)std::strlen(list[i].get_ptr()); + const u32 len = static_cast(std::strlen(list[i].get_ptr())); std::memcpy(str.get_ptr(), list[i].get_ptr(), len + 1); pstr[i] = str; str += (len + 0x10) & -0x10; @@ -65,7 +65,7 @@ static void put_exitspawn(vm::ptr out, vm::cptr path, u32 argc, vm:: vm::pptr pstr = vm::cast(out.addr()); vm::ptr str = vm::static_ptr_cast(out) + (argc + envc + (argc + envc) % 2) * 8 + 0x10; - const u32 len = (u32)std::strlen(path.get_ptr()); + const u32 len = static_cast(std::strlen(path.get_ptr())); std::memcpy(str.get_ptr(), path.get_ptr(), len + 1); *pstr++ = str; str += (len + 0x10) & -0x10; diff --git a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp index a9e3c59782..cb8682eac8 100644 --- a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp @@ -24,13 +24,13 @@ struct ps3_fmt_src template T get(std::size_t index) const { - const u32 i = (u32)index + g_count; + const u32 i = static_cast(index) + g_count; return ppu_gpr_cast(i < 8 ? ctx->gpr[3 + i] : +*ctx->get_stack_arg(i)); } void skip(std::size_t extra) { - g_count += (u32)extra + 1; + g_count += static_cast(extra) + 1; } std::size_t fmt_string(std::string& out, std::size_t extra) const @@ -404,7 +404,7 @@ s32 _sys_snprintf(ppu_thread& ppu, vm::ptr dst, u32 count, vm::cptr } else { - count = (u32)std::min(count - 1, result.size()); + count = static_cast(std::min(count - 1, result.size())); std::memcpy(dst.get_ptr(), result.c_str(), count); dst[count] = 0; diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index f959740a45..743d796f78 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -170,7 +170,7 @@ extern void ppu_execute_syscall(ppu_thread& ppu, u64 code); template static T& ppu_ref(u32 addr) { - return *reinterpret_cast(vm::g_exec_addr + (u64)addr * 2); + return *reinterpret_cast(vm::g_exec_addr + u64{addr} * 2); } // Get interpreter cache value @@ -183,7 +183,7 @@ static u64 ppu_cache(u32 addr) (fmt::throw_exception("Invalid PPU decoder"), nullptr)); const u32 value = vm::read32(addr); - return (u64)value << 32 | ::narrow(reinterpret_cast(table[ppu_decode(value)])); + return u64{value} << 32 | ::narrow(reinterpret_cast(table[ppu_decode(value)])); } static bool ppu_fallback(ppu_thread& ppu, ppu_opcode_t op) @@ -212,14 +212,14 @@ void ppu_recompiler_fallback(ppu_thread& ppu) while (true) { // Run instructions in interpreter - if (const u32 op = *reinterpret_cast(cache + (u64)ppu.cia * 2 + 4); + if (const u32 op = *reinterpret_cast(cache + u64{ppu.cia} * 2 + 4); LIKELY(table[ppu_decode(op)](ppu, { op }))) { ppu.cia += 4; continue; } - if (uptr func = *reinterpret_cast(cache + (u64)ppu.cia * 2); + if (uptr func = *reinterpret_cast(cache + u64{ppu.cia} * 2); func != reinterpret_cast(ppu_recompiler_fallback)) { // We found a recompiler function at cia, return @@ -251,7 +251,7 @@ static bool ppu_check_toc(ppu_thread& ppu, ppu_opcode_t op) } // Fallback to the interpreter function - if (reinterpret_cast(std::uintptr_t{(u32)ppu_cache(ppu.cia)})(ppu, op)) + if (reinterpret_cast(ppu_cache(ppu.cia) & 0xffffffff)(ppu, op)) { ppu.cia += 4; } @@ -277,7 +277,7 @@ extern void ppu_register_range(u32 addr, u32 size) size &= ~3; // Loop assumes `size = n * 4`, enforce that by rounding down while (size) { - ppu_ref(addr) = (u64)vm::read32(addr) << 32 | fallback; + ppu_ref(addr) = u64{vm::read32(addr)} << 32 | fallback; addr += 4; size -= 4; } @@ -336,7 +336,7 @@ static bool ppu_break(ppu_thread& ppu, ppu_opcode_t op) } // Fallback to the interpreter function - if (reinterpret_cast(std::uintptr_t{(u32)ppu_cache(ppu.cia)})(ppu, op)) + if (reinterpret_cast(ppu_cache(ppu.cia) & 0xffffffff)(ppu, op)) { ppu.cia += 4; } @@ -604,7 +604,7 @@ void ppu_thread::cpu_task() } default: { - fmt::throw_exception("Unknown ppu_cmd(0x%x)" HERE, (u32)type); + fmt::throw_exception("Unknown ppu_cmd(0x%x)" HERE, static_cast(type)); } } } @@ -645,7 +645,7 @@ void ppu_thread::exec_task() { const auto exec_op = [this](u64 op) { - return reinterpret_cast((uptr)(u32)op)(*this, {u32(op >> 32)}); + return reinterpret_cast(op & 0xffffffff)(*this, {static_cast(op >> 32)}); }; if (cia % 8 || UNLIKELY(state)) @@ -653,12 +653,12 @@ void ppu_thread::exec_task() if (test_stopped()) return; // Decode single instruction (may be step) - if (exec_op(*reinterpret_cast(cache + (u64)cia * 2))) { cia += 4; } + if (exec_op(*reinterpret_cast(cache + u64{cia} * 2))) { cia += 4; } continue; } u64 op0, op1, op2, op3; - u64 _pos = (u64)cia * 2; + u64 _pos = u64{cia} * 2; // Reinitialize { @@ -887,7 +887,7 @@ u32 ppu_thread::stack_push(u32 size, u32 align_v) const u32 old_pos = vm::cast(context.gpr[1], HERE); context.gpr[1] -= align(size + 4, 8); // room minimal possible size - context.gpr[1] &= ~((u64)align_v - 1); // fix stack alignment + context.gpr[1] &= ~(u64{align_v} - 1); // fix stack alignment if (old_pos >= context.stack_addr && old_pos < context.stack_addr + context.stack_size && context.gpr[1] < context.stack_addr) { @@ -1352,37 +1352,37 @@ extern void ppu_initialize(const ppu_module& info) { std::unordered_map link_table { - { "__mptr", (u64)&vm::g_base_addr }, - { "__cptr", (u64)&vm::g_exec_addr }, - { "__trap", (u64)&ppu_trap }, - { "__error", (u64)&ppu_error }, - { "__check", (u64)&ppu_check }, - { "__trace", (u64)&ppu_trace }, - { "__syscall", (u64)&ppu_execute_syscall }, - { "__get_tb", (u64)&get_timebased_time }, - { "__lwarx", (u64)&ppu_lwarx }, - { "__ldarx", (u64)&ppu_ldarx }, - { "__stwcx", (u64)&ppu_stwcx }, - { "__stdcx", (u64)&ppu_stdcx }, - { "__vexptefp", (u64)&sse_exp2_ps }, - { "__vlogefp", (u64)&sse_log2_ps }, - { "__vperm", s_use_ssse3 ? (u64)&sse_altivec_vperm : (u64)&sse_altivec_vperm_v0 }, // Obsolete - { "__lvsl", (u64)&sse_altivec_lvsl }, - { "__lvsr", (u64)&sse_altivec_lvsr }, - { "__lvlx", s_use_ssse3 ? (u64)&sse_cellbe_lvlx : (u64)&sse_cellbe_lvlx_v0 }, - { "__lvrx", s_use_ssse3 ? (u64)&sse_cellbe_lvrx : (u64)&sse_cellbe_lvrx_v0 }, - { "__stvlx", s_use_ssse3 ? (u64)&sse_cellbe_stvlx : (u64)&sse_cellbe_stvlx_v0 }, - { "__stvrx", s_use_ssse3 ? (u64)&sse_cellbe_stvrx : (u64)&sse_cellbe_stvrx_v0 }, - { "__resupdate", (u64)&vm::reservation_update }, - { "sys_config_io_event", (u64)ppu_get_syscall(523) }, + { "__mptr", reinterpret_cast(&vm::g_base_addr) }, + { "__cptr", reinterpret_cast(&vm::g_exec_addr) }, + { "__trap", reinterpret_cast(&ppu_trap) }, + { "__error", reinterpret_cast(&ppu_error) }, + { "__check", reinterpret_cast(&ppu_check) }, + { "__trace", reinterpret_cast(&ppu_trace) }, + { "__syscall", reinterpret_cast(ppu_execute_syscall) }, + { "__get_tb", reinterpret_cast(get_timebased_time) }, + { "__lwarx", reinterpret_cast(ppu_lwarx) }, + { "__ldarx", reinterpret_cast(ppu_ldarx) }, + { "__stwcx", reinterpret_cast(ppu_stwcx) }, + { "__stdcx", reinterpret_cast(ppu_stdcx) }, + { "__vexptefp", reinterpret_cast(sse_exp2_ps) }, + { "__vlogefp", reinterpret_cast(sse_log2_ps) }, + { "__vperm", s_use_ssse3 ? reinterpret_cast(sse_altivec_vperm) : reinterpret_cast(sse_altivec_vperm_v0) }, // Obsolete + { "__lvsl", reinterpret_cast(sse_altivec_lvsl) }, + { "__lvsr", reinterpret_cast(sse_altivec_lvsr) }, + { "__lvlx", s_use_ssse3 ? reinterpret_cast(sse_cellbe_lvlx) : reinterpret_cast(sse_cellbe_lvlx_v0) }, + { "__lvrx", s_use_ssse3 ? reinterpret_cast(sse_cellbe_lvrx) : reinterpret_cast(sse_cellbe_lvrx_v0) }, + { "__stvlx", s_use_ssse3 ? reinterpret_cast(sse_cellbe_stvlx) : reinterpret_cast(sse_cellbe_stvlx_v0) }, + { "__stvrx", s_use_ssse3 ? reinterpret_cast(sse_cellbe_stvrx) : reinterpret_cast(sse_cellbe_stvrx_v0) }, + { "__resupdate", reinterpret_cast(vm::reservation_update) }, + { "sys_config_io_event", reinterpret_cast(ppu_get_syscall(523)) }, }; for (u64 index = 0; index < 1024; index++) { if (auto sc = ppu_get_syscall(index)) { - link_table.emplace(fmt::format("%s", ppu_syscall_code(index)), (u64)sc); - link_table.emplace(fmt::format("syscall_%u", index), (u64)sc); + link_table.emplace(fmt::format("%s", ppu_syscall_code(index)), reinterpret_cast(sc)); + link_table.emplace(fmt::format("syscall_%u", index), reinterpret_cast(sc)); } } @@ -1607,8 +1607,8 @@ extern void ppu_initialize(const ppu_module& info) break; } - globals.emplace_back(fmt::format("__mptr%x", suffix), (u64)vm::g_base_addr); - globals.emplace_back(fmt::format("__cptr%x", suffix), (u64)vm::g_exec_addr); + globals.emplace_back(fmt::format("__mptr%x", suffix), reinterpret_cast(vm::g_base_addr)); + globals.emplace_back(fmt::format("__cptr%x", suffix), reinterpret_cast(vm::g_exec_addr)); // Initialize segments for relocations for (u32 i = 0; i < info.segs.size(); i++) @@ -1739,8 +1739,8 @@ extern void ppu_initialize(const ppu_module& info) // Rewrite global variables while (index < jit_mod.vars.size()) { - *jit_mod.vars[index++] = (u64)vm::g_base_addr; - *jit_mod.vars[index++] = (u64)vm::g_exec_addr; + *jit_mod.vars[index++] = reinterpret_cast(vm::g_base_addr); + *jit_mod.vars[index++] = reinterpret_cast(vm::g_exec_addr); for (const auto& seg : info.segs) { diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index 2019dcd584..bbfb5afcb2 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -2794,7 +2794,7 @@ void PPUTranslator::LHZUX(ppu_opcode_t op) void PPUTranslator::XOR(ppu_opcode_t op) { - const auto result = op.rs == op.rb ? (Value*)m_ir->getInt64(0) : m_ir->CreateXor(GetGpr(op.rs), GetGpr(op.rb)); + const auto result = op.rs == op.rb ? static_cast(m_ir->getInt64(0)) : m_ir->CreateXor(GetGpr(op.rs), GetGpr(op.rb)); SetGpr(op.ra, result); if (op.rc) SetCrFieldSignedCmp(0, result, m_ir->getInt64(0)); } @@ -2896,7 +2896,7 @@ void PPUTranslator::STHX(ppu_opcode_t op) void PPUTranslator::ORC(ppu_opcode_t op) { - const auto result = op.rs == op.rb ? (Value*)m_ir->getInt64(-1) : m_ir->CreateOr(GetGpr(op.rs), m_ir->CreateNot(GetGpr(op.rb))); + const auto result = op.rs == op.rb ? static_cast(m_ir->getInt64(-1)) : m_ir->CreateOr(GetGpr(op.rs), m_ir->CreateNot(GetGpr(op.rb))); SetGpr(op.ra, result); if (op.rc) SetCrFieldSignedCmp(0, result, m_ir->getInt64(0)); } diff --git a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp index 4567bc53ba..a6c254b556 100644 --- a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp @@ -2928,7 +2928,7 @@ void spu_recompiler::ROTQBYBI(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.rldq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.rldq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0xf << 3); c->pshufb(va, asmjit::x86::oword_ptr(*qw0, addr->r64(), 1)); @@ -2943,7 +2943,7 @@ void spu_recompiler::ROTQMBYBI(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.srdq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.srdq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0x1f << 3); c->pshufb(va, asmjit::x86::oword_ptr(*qw0, addr->r64(), 1)); @@ -2958,7 +2958,7 @@ void spu_recompiler::SHLQBYBI(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.sldq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.sldq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0x1f << 3); c->pshufb(va, asmjit::x86::oword_ptr(*qw0, addr->r64(), 1)); @@ -3081,7 +3081,7 @@ void spu_recompiler::ROTQBY(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.rldq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.rldq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0xf); c->shl(*addr, 4); @@ -3097,7 +3097,7 @@ void spu_recompiler::ROTQMBY(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.srdq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.srdq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0x1f); c->shl(*addr, 4); @@ -3113,7 +3113,7 @@ void spu_recompiler::SHLQBY(spu_opcode_t op) } const XmmLink& va = XmmGet(op.ra, XmmType::Int); - c->mov(*qw0, asmjit::imm_ptr((void*)g_spu_imm.sldq_pshufb)); + c->mov(*qw0, asmjit::imm_ptr(+g_spu_imm.sldq_pshufb)); c->mov(*addr, SPU_OFF_32(gpr, op.rb, &v128::_u32, 3)); c->and_(*addr, 0x1f); c->shl(*addr, 4); diff --git a/rpcs3/Emu/Cell/SPUInterpreter.cpp b/rpcs3/Emu/Cell/SPUInterpreter.cpp index d3d8f538b7..ae3cf0b739 100644 --- a/rpcs3/Emu/Cell/SPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/SPUInterpreter.cpp @@ -600,7 +600,7 @@ bool spu_interpreter::ROTQBYBI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(32) const __m128i buf[2]{a, a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (16 - (spu.gpr[op.rb]._u32[3] >> 3 & 0xf)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (16 - (spu.gpr[op.rb]._u32[3] >> 3 & 0xf)))); return true; } @@ -608,7 +608,7 @@ bool spu_interpreter::ROTQMBYBI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{a, _mm_setzero_si128(), _mm_setzero_si128()}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + ((0 - (spu.gpr[op.rb]._u32[3] >> 3)) & 0x1f))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + ((0 - (spu.gpr[op.rb]._u32[3] >> 3)) & 0x1f))); return true; } @@ -616,7 +616,7 @@ bool spu_interpreter::SHLQBYBI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{_mm_setzero_si128(), _mm_setzero_si128(), a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (32 - (spu.gpr[op.rb]._u32[3] >> 3 & 0x1f)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (32 - (spu.gpr[op.rb]._u32[3] >> 3 & 0x1f)))); return true; } @@ -700,7 +700,7 @@ bool spu_interpreter::ROTQBY(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(32) const __m128i buf[2]{a, a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (16 - (spu.gpr[op.rb]._u32[3] & 0xf)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (16 - (spu.gpr[op.rb]._u32[3] & 0xf)))); return true; } @@ -708,7 +708,7 @@ bool spu_interpreter::ROTQMBY(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{a, _mm_setzero_si128(), _mm_setzero_si128()}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + ((0 - spu.gpr[op.rb]._u32[3]) & 0x1f))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + ((0 - spu.gpr[op.rb]._u32[3]) & 0x1f))); return true; } @@ -716,7 +716,7 @@ bool spu_interpreter::SHLQBY(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{_mm_setzero_si128(), _mm_setzero_si128(), a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (32 - (spu.gpr[op.rb]._u32[3] & 0x1f)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (32 - (spu.gpr[op.rb]._u32[3] & 0x1f)))); return true; } @@ -806,7 +806,7 @@ bool spu_interpreter::ROTQBYI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(32) const __m128i buf[2]{a, a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (16 - (op.i7 & 0xf)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (16 - (op.i7 & 0xf)))); return true; } @@ -814,7 +814,7 @@ bool spu_interpreter::ROTQMBYI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{a, _mm_setzero_si128(), _mm_setzero_si128()}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + ((0 - op.i7) & 0x1f))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + ((0 - op.i7) & 0x1f))); return true; } @@ -822,7 +822,7 @@ bool spu_interpreter::SHLQBYI(spu_thread& spu, spu_opcode_t op) { const auto a = spu.gpr[op.ra].vi; alignas(64) const __m128i buf[3]{_mm_setzero_si128(), _mm_setzero_si128(), a}; - spu.gpr[op.rt].vi = _mm_loadu_si128((__m128i*)((u8*)buf + (32 - (op.i7 & 0x1f)))); + spu.gpr[op.rt].vi = _mm_loadu_si128(reinterpret_cast(reinterpret_cast(buf) + (32 - (op.i7 & 0x1f)))); return true; } @@ -1172,7 +1172,7 @@ bool spu_interpreter::BGX(spu_thread& spu, spu_opcode_t op) { for (s32 i = 0; i < 4; i++) { - const s64 result = (u64)spu.gpr[op.rb]._u32[i] - (u64)spu.gpr[op.ra]._u32[i] - (u64)(1 - (spu.gpr[op.rt]._u32[i] & 1)); + const s64 result = u64{spu.gpr[op.rb]._u32[i]} - spu.gpr[op.ra]._u32[i] - (1 - (spu.gpr[op.rt]._u32[i] & 1)); spu.gpr[op.rt]._u32[i] = result >= 0; } return true; @@ -1692,7 +1692,7 @@ static bool SHUFB_(spu_thread& spu, spu_opcode_t op) // Select bytes for (int i = 0; i < 16; i++) { - res._u8[i] = ((u8*)+ab)[x._u8[i]]; + res._u8[i] = reinterpret_cast(ab)[x._u8[i]]; } // Select special values @@ -1956,7 +1956,7 @@ bool spu_interpreter_precise::FCGT(spu_thread& spu, spu_opcode_t op) if (a_zero) pass = b >= 0x80800000; else if (b_zero) - pass = (s32)a >= 0x00800000; + pass = static_cast(a) >= 0x00800000; else if (a >= 0x80000000) pass = (b >= 0x80000000 && a < b); else @@ -2307,7 +2307,7 @@ bool spu_interpreter_precise::FESD(spu_thread& spu, spu_opcode_t op) } else { - spu.gpr[op.rt]._d[i] = (double)a; + spu.gpr[op.rt]._d[i] = a; } } return true; @@ -2329,7 +2329,7 @@ bool spu_interpreter_precise::FRDS(spu_thread& spu, spu_opcode_t op) else { feclearexcept(FE_ALL_EXCEPT); - spu.gpr[op.rt]._f[i * 2 + 1] = (float)a; + spu.gpr[op.rt]._f[i * 2 + 1] = static_cast(a); const u32 e = _mm_getcsr(); if (e & _MM_EXCEPT_OVERFLOW) spu.fpscr.setDoublePrecisionExceptionFlags(i, FPSCR_DOVF); @@ -2405,7 +2405,7 @@ bool spu_interpreter_precise::CFLTS(spu_thread& spu, spu_opcode_t op) else if (scaled < -2147483648.0f) result = 0x80000000; else - result = (s32)scaled; + result = static_cast(scaled); spu.gpr[op.rt]._s32[i] = result; } return true; @@ -2428,7 +2428,7 @@ bool spu_interpreter_precise::CFLTU(spu_thread& spu, spu_opcode_t op) else if (scaled < 0.0f) result = 0; else - result = (u32)scaled; + result = static_cast(scaled); spu.gpr[op.rt]._u32[i] = result; } return true; @@ -2441,7 +2441,7 @@ bool spu_interpreter_precise::CSFLT(spu_thread& spu, spu_opcode_t op) for (int i = 0; i < 4; i++) { const s32 a = spu.gpr[op.ra]._s32[i]; - spu.gpr[op.rt]._f[i] = (float)a; + spu.gpr[op.rt]._f[i] = static_cast(a); u32 exp = ((spu.gpr[op.rt]._u32[i] >> 23) & 0xff) - scale; @@ -2465,7 +2465,7 @@ bool spu_interpreter_precise::CUFLT(spu_thread& spu, spu_opcode_t op) for (int i = 0; i < 4; i++) { const u32 a = spu.gpr[op.ra]._u32[i]; - spu.gpr[op.rt]._f[i] = (float)a; + spu.gpr[op.rt]._f[i] = static_cast(a); u32 exp = ((spu.gpr[op.rt]._u32[i] >> 23) & 0xff) - scale; diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 8fd7192d32..26d5aabd53 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -115,7 +115,7 @@ namespace spu void acquire_pc_address(spu_thread& spu, u32 pc, u32 timeout_ms = 3) { - const u8 max_concurrent_instructions = (u8)g_cfg.core.preferred_spu_threads; + const u32 max_concurrent_instructions = g_cfg.core.preferred_spu_threads; const u32 pc_offset = pc >> 2; if (atomic_instruction_table[pc_offset].load(std::memory_order_consume) >= max_concurrent_instructions) @@ -175,7 +175,7 @@ namespace spu { if (g_cfg.core.preferred_spu_threads > 0) { - acquire_pc_address(spu, pc, (u32)g_cfg.core.spu_delay_penalty); + acquire_pc_address(spu, pc, g_cfg.core.spu_delay_penalty); active = true; } } @@ -1546,9 +1546,9 @@ bool spu_thread::do_list_transfer(spu_mfc_cmd& args) const v128 data1 = v128::fromV(_mm_loadu_si128(src + 1)); const v128 data2 = v128::fromV(_mm_loadu_si128(src + 2)); - ((v128*)+bufitems)[0] = data0; - ((v128*)+bufitems)[1] = data1; - ((v128*)+bufitems)[2] = data2; + reinterpret_cast(bufitems)[0] = data0; + reinterpret_cast(bufitems)[1] = data1; + reinterpret_cast(bufitems)[2] = data2; } const u32 size = items[index].ts & 0x7fff; @@ -2360,7 +2360,7 @@ s64 spu_thread::get_ch_value(u32 ch) case SPU_RdDec: { - u32 out = ch_dec_value - (u32)(get_timebased_time() - ch_dec_start_timestamp); + u32 out = ch_dec_value - static_cast(get_timebased_time() - ch_dec_start_timestamp); //Polling: We might as well hint to the scheduler to slot in another thread since this one is counting down if (g_cfg.core.spu_loop_detection && out > spu::scheduler::native_jiffy_duration_us) @@ -2506,7 +2506,7 @@ bool spu_thread::set_ch_value(u32 ch, u32 value) ch_in_mbox.set_values(1, CELL_OK); - if (!queue->send(SYS_SPU_THREAD_EVENT_USER_KEY, id, ((u64)spup << 32) | (value & 0x00ffffff), data)) + if (!queue->send(SYS_SPU_THREAD_EVENT_USER_KEY, id, (u64{spup} << 32) | (value & 0x00ffffff), data)) { ch_in_mbox.set_values(1, CELL_EBUSY); } @@ -2536,7 +2536,7 @@ bool spu_thread::set_ch_value(u32 ch, u32 value) } // TODO: check passing spup value - if (!queue->send(SYS_SPU_THREAD_EVENT_USER_KEY, id, ((u64)spup << 32) | (value & 0x00ffffff), data)) + if (!queue->send(SYS_SPU_THREAD_EVENT_USER_KEY, id, (u64{spup} << 32) | (value & 0x00ffffff), data)) { LOG_WARNING(SPU, "sys_spu_thread_throw_event(spup=%d, data0=0x%x, data1=0x%x) failed (queue is full)", spup, (value & 0x00ffffff), data); } diff --git a/rpcs3/Emu/Io/KeyboardHandler.cpp b/rpcs3/Emu/Io/KeyboardHandler.cpp index 0c247437d8..46bc510703 100644 --- a/rpcs3/Emu/Io/KeyboardHandler.cpp +++ b/rpcs3/Emu/Io/KeyboardHandler.cpp @@ -111,7 +111,7 @@ void KeyboardHandlerBase::Key(u32 code, bool pressed) } } - data.len = std::min(data.len + 1, (int)CELL_KB_MAX_KEYCODES); + data.len = std::min(data.len + 1, CELL_KB_MAX_KEYCODES); } else { diff --git a/rpcs3/Emu/Io/PadHandler.cpp b/rpcs3/Emu/Io/PadHandler.cpp index 9abae1a2d9..5c7e49a922 100644 --- a/rpcs3/Emu/Io/PadHandler.cpp +++ b/rpcs3/Emu/Io/PadHandler.cpp @@ -99,7 +99,7 @@ long PadHandlerBase::FindKeyCodeByString(const std::unordered_map(std::clamp(raw_value, minimum, maximum) - minimum) / (abs(maximum) + abs(minimum)); return 255.0f * val; } @@ -107,7 +107,7 @@ float PadHandlerBase::ScaleStickInput(s32 raw_value, int minimum, int maximum) float PadHandlerBase::ScaleStickInput2(s32 raw_value, int minimum, int maximum) { // value based on max range converted to [0, 1] - float val = float(std::clamp(raw_value, minimum, maximum) - minimum) / float(abs(maximum) + abs(minimum)); + float val = static_cast(std::clamp(raw_value, minimum, maximum) - minimum) / (abs(maximum) + abs(minimum)); return (510.0f * val) - 255.0f; } @@ -124,7 +124,7 @@ u16 PadHandlerBase::NormalizeTriggerInput(u16 value, int threshold) } else { - return (u16)(float(trigger_max) * float(value - threshold) / float(trigger_max - threshold)); + return static_cast(static_cast(trigger_max) * (value - threshold) / (trigger_max - threshold)); } } @@ -137,7 +137,7 @@ u16 PadHandlerBase::NormalizeDirectedInput(s32 raw_value, s32 threshold, s32 max return static_cast(0); } - float val = float(std::clamp(raw_value, 0, maximum)) / float(maximum); // value based on max range converted to [0, 1] + float val = static_cast(std::clamp(raw_value, 0, maximum)) / maximum; // value based on max range converted to [0, 1] if (threshold <= 0) { @@ -145,7 +145,7 @@ u16 PadHandlerBase::NormalizeDirectedInput(s32 raw_value, s32 threshold, s32 max } else { - float thresh = float(threshold) / float(maximum); // threshold converted to [0, 1] + float thresh = static_cast(threshold) / maximum; // threshold converted to [0, 1] return static_cast(255.0f * std::min(1.0f, (val - thresh) / (1.0f - thresh))); } } @@ -169,7 +169,7 @@ u16 PadHandlerBase::NormalizeStickInput(u16 raw_value, int threshold, int multip // return is new x and y values in 0-255 range std::tuple PadHandlerBase::NormalizeStickDeadzone(s32 inX, s32 inY, u32 deadzone) { - const float dzRange = deadzone / float((std::abs(thumb_max) + std::abs(thumb_min))); + const float dzRange = deadzone / static_cast((std::abs(thumb_max) + std::abs(thumb_min))); float X = inX / 255.0f; float Y = inY / 255.0f; @@ -224,8 +224,8 @@ u16 PadHandlerBase::ConvertAxis(float value) std::tuple PadHandlerBase::ConvertToSquirclePoint(u16 inX, u16 inY, int squircle_factor) { // convert inX and Y to a (-1, 1) vector; - const f32 x = ((f32)inX - 127.5f) / 127.5f; - const f32 y = ((f32)inY - 127.5f) / 127.5f; + const f32 x = (inX - 127.5f) / 127.5f; + const f32 y = (inY - 127.5f) / 127.5f; // compute angle and len of given point to be used for squircle radius const f32 angle = std::atan2(y, x); @@ -233,7 +233,7 @@ std::tuple PadHandlerBase::ConvertToSquirclePoint(u16 inX, u16 inY, in // now find len/point on the given squircle from our current angle and radius in polar coords // https://thatsmaths.com/2016/07/14/squircles/ - const f32 newLen = (1 + std::pow(std::sin(2 * angle), 2.f) / (float(squircle_factor) / 1000.f)) * r; + const f32 newLen = (1 + std::pow(std::sin(2 * angle), 2.f) / (squircle_factor / 1000.f)) * r; // we now have len and angle, convert to cartesian const int newX = Clamp0To255(((newLen * std::cos(angle)) + 1) * 127.5f); diff --git a/rpcs3/Emu/Io/usb_device.cpp b/rpcs3/Emu/Io/usb_device.cpp index 760418dc61..13d0175c96 100644 --- a/rpcs3/Emu/Io/usb_device.cpp +++ b/rpcs3/Emu/Io/usb_device.cpp @@ -111,13 +111,13 @@ void usb_device_passthrough::control_transfer(u8 bmRequestType, u8 bRequest, u16 libusb_fill_control_setup(transfer->setup_buf.data(), bmRequestType, bRequest, wValue, wIndex, buf_size); memcpy(transfer->setup_buf.data() + 8, buf, buf_size); - libusb_fill_control_transfer(transfer->transfer, lusb_handle, transfer->setup_buf.data(), callback_transfer, (void*)transfer, 0); + libusb_fill_control_transfer(transfer->transfer, lusb_handle, transfer->setup_buf.data(), callback_transfer, transfer, 0); libusb_submit_transfer(transfer->transfer); } void usb_device_passthrough::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoint, UsbTransfer* transfer) { - libusb_fill_interrupt_transfer(transfer->transfer, lusb_handle, endpoint, buf, buf_size, callback_transfer, (void*)transfer, 0); + libusb_fill_interrupt_transfer(transfer->transfer, lusb_handle, endpoint, buf, buf_size, callback_transfer, transfer, 0); libusb_submit_transfer(transfer->transfer); } @@ -125,7 +125,7 @@ void usb_device_passthrough::isochronous_transfer(UsbTransfer* transfer) { // TODO actual endpoint // TODO actual size? - libusb_fill_iso_transfer(transfer->transfer, lusb_handle, 0x81, (u8*)transfer->iso_request.buf.get_ptr(), 0xFFFF, transfer->iso_request.num_packets, callback_transfer, (void*)transfer, 0); + libusb_fill_iso_transfer(transfer->transfer, lusb_handle, 0x81, static_cast(transfer->iso_request.buf.get_ptr()), 0xFFFF, transfer->iso_request.num_packets, callback_transfer, transfer, 0); for (u32 index = 0; index < transfer->iso_request.num_packets; index++) { @@ -158,7 +158,7 @@ s32 usb_device_emulated::get_descriptor(u8 type, u8 index, u8* ptr, u32 max_size { if (index < strings.size()) { - u8 string_len = (u8)strings[index].size(); + u8 string_len = ::narrow(strings[index].size()); ptr[0] = (string_len * 2) + 2; ptr[1] = USB_DESCRIPTOR_STRING; for (u32 i = 0; i < string_len; i++) @@ -166,7 +166,7 @@ s32 usb_device_emulated::get_descriptor(u8 type, u8 index, u8* ptr, u32 max_size ptr[2 + (i * 2)] = strings[index].data()[i]; ptr[3 + (i * 2)] = 0; } - return (s32)ptr[0]; + return ptr[0]; } } else diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index acd5566444..82ebb5efcc 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -19,34 +19,34 @@ namespace vm { - static u8* memory_reserve_4GiB(std::uintptr_t _addr = 0) + static u8* memory_reserve_4GiB(void* _addr, u64 size = 0x100000000) { - for (u64 addr = _addr + 0x100000000;; addr += 0x100000000) + for (u64 addr = reinterpret_cast(_addr) + 0x100000000;; addr += 0x100000000) { - if (auto ptr = utils::memory_reserve(0x100000000, (void*)addr)) + if (auto ptr = utils::memory_reserve(size, reinterpret_cast(addr))) { return static_cast(ptr); } } // TODO: a condition to break loop - return static_cast(utils::memory_reserve(0x100000000)); + return static_cast(utils::memory_reserve(size)); } // Emulated virtual memory - u8* const g_base_addr = memory_reserve_4GiB(0x2'0000'0000); + u8* const g_base_addr = memory_reserve_4GiB(reinterpret_cast(0x2'0000'0000)); // Unprotected virtual memory mirror - u8* const g_sudo_addr = memory_reserve_4GiB((std::uintptr_t)g_base_addr); + u8* const g_sudo_addr = memory_reserve_4GiB(g_base_addr); // Auxiliary virtual memory for executable areas - u8* const g_exec_addr = memory_reserve_4GiB((std::uintptr_t)g_sudo_addr); + u8* const g_exec_addr = memory_reserve_4GiB(g_sudo_addr, 0x200000000); // Stats for debugging - u8* const g_stat_addr = memory_reserve_4GiB((std::uintptr_t)g_exec_addr); + u8* const g_stat_addr = memory_reserve_4GiB(g_exec_addr); // Reservation stats (compressed x16) - u8* const g_reservations = memory_reserve_4GiB((std::uintptr_t)g_stat_addr); + u8* const g_reservations = memory_reserve_4GiB(g_stat_addr); // Memory locations std::vector> g_locations; @@ -128,7 +128,7 @@ namespace vm if (LIKELY(test_addr(g_addr_lock.load(), addr, end))) { // Optimistic path (hope that address range is not locked) - _ret = _register_range_lock((u64)end << 32 | addr); + _ret = _register_range_lock(u64{end} << 32 | addr); if (LIKELY(test_addr(g_addr_lock.load(), addr, end))) { @@ -140,7 +140,7 @@ namespace vm { ::reader_lock lock(g_mutex); - _ret = _register_range_lock((u64)end << 32 | addr); + _ret = _register_range_lock(u64{end} << 32 | addr); } return _ret; @@ -540,7 +540,7 @@ namespace vm if (!block) { - fmt::throw_exception("Invalid memory location (%u)" HERE, (uint)location); + fmt::throw_exception("Invalid memory location (%u)" HERE, +location); } return block->alloc(size, align); @@ -552,7 +552,7 @@ namespace vm if (!block) { - fmt::throw_exception("Invalid memory location (%u, addr=0x%x)" HERE, (uint)location, addr); + fmt::throw_exception("Invalid memory location (%u, addr=0x%x)" HERE, +location, addr); } return block->falloc(addr, size); @@ -564,7 +564,7 @@ namespace vm if (!block) { - fmt::throw_exception("Invalid memory location (%u, addr=0x%x)" HERE, (uint)location, addr); + fmt::throw_exception("Invalid memory location (%u, addr=0x%x)" HERE, +location, addr); } return block->dealloc(addr); @@ -576,7 +576,7 @@ namespace vm if (!block) { - LOG_ERROR(MEMORY, "vm::dealloc(): invalid memory location (%u, addr=0x%x)\n", (uint)location, addr); + LOG_ERROR(MEMORY, "vm::dealloc(): invalid memory location (%u, addr=0x%x)\n", +location, addr); return; } diff --git a/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp b/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp index 521831b4f0..0184366f00 100644 --- a/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp +++ b/rpcs3/Emu/RSX/CgBinaryFragmentProgram.cpp @@ -69,7 +69,7 @@ std::string CgBinaryDisasm::AddRegDisAsm(u32 index, int fp16) std::string CgBinaryDisasm::AddConstDisAsm() { - u32* data = (u32*)&m_buffer[m_offset + m_size + 4 * sizeof(u32)]; + u32* data = reinterpret_cast(&m_buffer[m_offset + m_size + 4 * sizeof(u32)]); m_step = 2 * 4 * sizeof(u32); const u32 x = GetData(data[0]); @@ -224,7 +224,7 @@ template std::string CgBinaryDisasm::GetSrcDisAsm(T src) void CgBinaryDisasm::TaskFP() { m_size = 0; - u32* data = (u32*)&m_buffer[m_offset]; + u32* data = reinterpret_cast(&m_buffer[m_offset]); verify(HERE), ((m_buffer_size - m_offset) % sizeof(u32) == 0); for (u32 i = 0; i < (m_buffer_size - m_offset) / sizeof(u32); i++) { diff --git a/rpcs3/Emu/RSX/CgBinaryProgram.h b/rpcs3/Emu/RSX/CgBinaryProgram.h index 06aca47021..b1fcb89b82 100644 --- a/rpcs3/Emu/RSX/CgBinaryProgram.h +++ b/rpcs3/Emu/RSX/CgBinaryProgram.h @@ -288,15 +288,15 @@ public: { auto& fprog = GetCgRef(prog.program); m_arb_shader += "\n"; - m_arb_shader += fmt::format("# binaryFormatRevision 0x%x\n", (u32)prog.binaryFormatRevision); + m_arb_shader += fmt::format("# binaryFormatRevision 0x%x\n", prog.binaryFormatRevision); m_arb_shader += fmt::format("# profile sce_fp_rsx\n"); - m_arb_shader += fmt::format("# parameterCount %d\n", (u32)prog.parameterCount); - m_arb_shader += fmt::format("# instructionCount %d\n", (u32)fprog.instructionCount); - m_arb_shader += fmt::format("# attributeInputMask 0x%x\n", (u32)fprog.attributeInputMask); - m_arb_shader += fmt::format("# registerCount %d\n\n", (u32)fprog.registerCount); + m_arb_shader += fmt::format("# parameterCount %d\n", prog.parameterCount); + m_arb_shader += fmt::format("# instructionCount %d\n", fprog.instructionCount); + m_arb_shader += fmt::format("# attributeInputMask 0x%x\n", fprog.attributeInputMask); + m_arb_shader += fmt::format("# registerCount %d\n\n", fprog.registerCount); CgBinaryParameterOffset offset = prog.parameterArray; - for (u32 i = 0; i < (u32)prog.parameterCount; i++) + for (u32 i = 0; i < prog.parameterCount; i++) { auto& fparam = GetCgRef(offset); @@ -344,16 +344,16 @@ public: { auto& vprog = GetCgRef(prog.program); m_arb_shader += "\n"; - m_arb_shader += fmt::format("# binaryFormatRevision 0x%x\n", (u32)prog.binaryFormatRevision); + m_arb_shader += fmt::format("# binaryFormatRevision 0x%x\n", prog.binaryFormatRevision); m_arb_shader += fmt::format("# profile sce_vp_rsx\n"); - m_arb_shader += fmt::format("# parameterCount %d\n", (u32)prog.parameterCount); - m_arb_shader += fmt::format("# instructionCount %d\n", (u32)vprog.instructionCount); - m_arb_shader += fmt::format("# registerCount %d\n", (u32)vprog.registerCount); - m_arb_shader += fmt::format("# attributeInputMask 0x%x\n", (u32)vprog.attributeInputMask); - m_arb_shader += fmt::format("# attributeOutputMask 0x%x\n\n", (u32)vprog.attributeOutputMask); + m_arb_shader += fmt::format("# parameterCount %d\n", prog.parameterCount); + m_arb_shader += fmt::format("# instructionCount %d\n", vprog.instructionCount); + m_arb_shader += fmt::format("# registerCount %d\n", vprog.registerCount); + m_arb_shader += fmt::format("# attributeInputMask 0x%x\n", vprog.attributeInputMask); + m_arb_shader += fmt::format("# attributeOutputMask 0x%x\n\n", vprog.attributeOutputMask); CgBinaryParameterOffset offset = prog.parameterArray; - for (u32 i = 0; i < (u32)prog.parameterCount; i++) + for (u32 i = 0; i < prog.parameterCount; i++) { auto& vparam = GetCgRef(offset); @@ -371,7 +371,7 @@ public: m_arb_shader += "\n"; m_offset = prog.ucode; - u32* vdata = (u32*)&m_buffer[m_offset]; + u32* vdata = reinterpret_cast(&m_buffer[m_offset]); verify(HERE), (m_buffer_size - m_offset) % sizeof(u32) == 0; for (u32 i = 0; i < (m_buffer_size - m_offset) / sizeof(u32); i++) { diff --git a/rpcs3/Emu/RSX/Common/BufferUtils.cpp b/rpcs3/Emu/RSX/Common/BufferUtils.cpp index 488560f251..5bcf7d6cdb 100644 --- a/rpcs3/Emu/RSX/Common/BufferUtils.cpp +++ b/rpcs3/Emu/RSX/Common/BufferUtils.cpp @@ -44,13 +44,13 @@ namespace template gsl::span as_span_workaround(gsl::span unformated_span) { - return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) }; + return{ reinterpret_cast(unformated_span.data()), unformated_span.size_bytes() / sizeof(T) }; } template gsl::span as_const_span(gsl::span unformated_span) { - return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) }; + return{ reinterpret_cast(unformated_span.data()), unformated_span.size_bytes() / sizeof(T) }; } } @@ -81,8 +81,8 @@ namespace 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3); - __m128i* dst_ptr = (__m128i*)dst; - __m128i* src_ptr = (__m128i*)src; + auto dst_ptr = static_cast<__m128i*>(dst); + auto src_ptr = static_cast(src); const u32 dword_count = (vertex_count * (stride >> 2)); const u32 iterations = dword_count >> 2; @@ -116,8 +116,8 @@ namespace if (remaining) { - u32 *src_ptr2 = (u32 *)src_ptr; - u32 *dst_ptr2 = (u32 *)dst_ptr; + auto src_ptr2 = reinterpret_cast(src_ptr); + auto dst_ptr2 = reinterpret_cast(dst_ptr); for (u32 i = 0; i < remaining; ++i) dst_ptr2[i] = se_storage::swap(src_ptr2[i]); @@ -132,8 +132,8 @@ namespace 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - __m128i* dst_ptr = (__m128i*)dst; - __m128i* src_ptr = (__m128i*)src; + auto dst_ptr = static_cast<__m128i*>(dst); + auto src_ptr = static_cast(src); const u32 word_count = (vertex_count * (stride >> 1)); const u32 iterations = word_count >> 3; @@ -166,8 +166,8 @@ namespace if (remaining) { - u16 *src_ptr2 = (u16 *)src_ptr; - u16 *dst_ptr2 = (u16 *)dst_ptr; + auto src_ptr2 = reinterpret_cast(src_ptr); + auto dst_ptr2 = reinterpret_cast(dst_ptr); for (u32 i = 0; i < remaining; ++i) dst_ptr2[i] = se_storage::swap(src_ptr2[i]); @@ -182,8 +182,8 @@ namespace 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3); - char *src_ptr = (char *)src; - char *dst_ptr = (char *)dst; + auto src_ptr = static_cast(src); + auto dst_ptr = static_cast(dst); //Count vertices to copy const bool is_128_aligned = !((dst_stride | src_stride) & 15); @@ -203,9 +203,9 @@ namespace { for (u32 i = 0; i < iterations; ++i) { - const __m128i vector = _mm_loadu_si128((__m128i*)src_ptr); + const __m128i vector = _mm_loadu_si128(reinterpret_cast(src_ptr)); const __m128i shuffled_vector = ssse3_shuffle_epi8(vector, mask); - _mm_storeu_si128((__m128i*)dst_ptr, shuffled_vector); + _mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), shuffled_vector); src_ptr += src_stride; dst_ptr += dst_stride; @@ -215,10 +215,10 @@ namespace { for (u32 i = 0; i < iterations; ++i) { - const __m128i vec0 = _mm_loadu_si128((__m128i*)src_ptr); + const __m128i vec0 = _mm_loadu_si128(reinterpret_cast(src_ptr)); const __m128i vec1 = _mm_or_si128(_mm_slli_epi16(vec0, 8), _mm_srli_epi16(vec0, 8)); const __m128i vec2 = _mm_or_si128(_mm_slli_epi32(vec1, 16), _mm_srli_epi32(vec1, 16)); - _mm_storeu_si128((__m128i*)dst_ptr, vec2); + _mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), vec2); src_ptr += src_stride; dst_ptr += dst_stride; @@ -230,8 +230,11 @@ namespace const u8 attribute_sz = min_block_size >> 2; for (u32 n = 0; n < remainder; ++n) { - for (u32 v= 0; v < attribute_sz; ++v) - ((u32*)dst_ptr)[v] = ((be_t*)src_ptr)[v]; + auto src_ptr2 = reinterpret_cast*>(src_ptr); + auto dst_ptr2 = reinterpret_cast(dst_ptr); + + for (u32 v = 0; v < attribute_sz; ++v) + dst_ptr2[v] = src_ptr[v]; src_ptr += src_stride; dst_ptr += dst_stride; @@ -247,8 +250,8 @@ namespace 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - char *src_ptr = (char *)src; - char *dst_ptr = (char *)dst; + auto src_ptr = static_cast(src); + auto dst_ptr = static_cast(dst); const bool is_128_aligned = !((dst_stride | src_stride) & 15); @@ -267,9 +270,9 @@ namespace { for (u32 i = 0; i < iterations; ++i) { - const __m128i vector = _mm_loadu_si128((__m128i*)src_ptr); + const __m128i vector = _mm_loadu_si128(reinterpret_cast(src_ptr)); const __m128i shuffled_vector = ssse3_shuffle_epi8(vector, mask); - _mm_storeu_si128((__m128i*)dst_ptr, shuffled_vector); + _mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), shuffled_vector); src_ptr += src_stride; dst_ptr += dst_stride; @@ -279,9 +282,9 @@ namespace { for (u32 i = 0; i < iterations; ++i) { - const __m128i vec0 = _mm_loadu_si128((__m128i*)src_ptr); + const __m128i vec0 = _mm_loadu_si128(reinterpret_cast(src_ptr)); const __m128i vec1 = _mm_or_si128(_mm_slli_epi16(vec0, 8), _mm_srli_epi16(vec0, 8)); - _mm_storeu_si128((__m128i*)dst_ptr, vec1); + _mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), vec1); src_ptr += src_stride; dst_ptr += dst_stride; @@ -293,8 +296,11 @@ namespace const u8 attribute_sz = min_block_size >> 1; for (u32 n = 0; n < remainder; ++n) { + auto src_ptr2 = reinterpret_cast*>(src_ptr); + auto dst_ptr2 = reinterpret_cast(dst_ptr); + for (u32 v = 0; v < attribute_sz; ++v) - ((u16*)dst_ptr)[v] = ((be_t*)src_ptr)[v]; + dst_ptr[v] = src_ptr[v]; src_ptr += src_stride; dst_ptr += dst_stride; @@ -304,8 +310,8 @@ namespace inline void stream_data_to_memory_u8_non_continuous(void *dst, const void *src, u32 vertex_count, u8 attribute_size, u8 dst_stride, u8 src_stride) { - char *src_ptr = (char *)src; - char *dst_ptr = (char *)dst; + auto src_ptr = static_cast(src); + auto dst_ptr = static_cast(dst); switch (attribute_size) { @@ -314,7 +320,7 @@ namespace //Read one dword every iteration for (u32 vertex = 0; vertex < vertex_count; ++vertex) { - *(u32*)dst_ptr = *(u32*)src_ptr; + *reinterpret_cast(dst_ptr) = *reinterpret_cast(src_ptr); dst_ptr += dst_stride; src_ptr += src_stride; @@ -327,7 +333,7 @@ namespace //Read one word and one byte for (u32 vertex = 0; vertex < vertex_count; ++vertex) { - *(u16*)dst_ptr = *(u16*)src_ptr; + *reinterpret_cast(dst_ptr) = *reinterpret_cast(src_ptr); dst_ptr[2] = src_ptr[2]; dst_ptr += dst_stride; @@ -341,7 +347,7 @@ namespace //Copy u16 blocks for (u32 vertex = 0; vertex < vertex_count; ++vertex) { - *(u16*)dst_ptr = *(u16*)src_ptr; + *reinterpret_cast(dst_ptr) = *reinterpret_cast(src_ptr); dst_ptr += dst_stride; src_ptr += src_stride; @@ -365,15 +371,15 @@ namespace } template - void copy_whole_attribute_array_impl(void *raw_dst, void *raw_src, u8 dst_stride, u32 src_stride, u32 vertex_count) + void copy_whole_attribute_array_impl(void* raw_dst, const void* raw_src, u8 dst_stride, u32 src_stride, u32 vertex_count) { - char *src_ptr = (char *)raw_src; - char *dst_ptr = (char *)raw_dst; + auto src_ptr = static_cast(raw_src); + auto dst_ptr = static_cast(raw_dst); for (u32 vertex = 0; vertex < vertex_count; ++vertex) { - T* typed_dst = (T*)dst_ptr; - U* typed_src = (U*)src_ptr; + auto typed_dst = reinterpret_cast(dst_ptr); + auto typed_src = reinterpret_cast(src_ptr); for (u32 i = 0; i < N; ++i) { @@ -390,18 +396,18 @@ namespace * e.g repeat 2 vertices over a range of 16 verts, so 8 reps */ template - void copy_whole_attribute_array_repeating_impl(void *raw_dst, void *raw_src, const u8 dst_stride, const u32 src_stride, const u32 vertex_count, const u32 src_vertex_count) + void copy_whole_attribute_array_repeating_impl(void* raw_dst, const void* raw_src, const u8 dst_stride, const u32 src_stride, const u32 vertex_count, const u32 src_vertex_count) { - char *src_ptr = (char *)raw_src; - char *dst_ptr = (char *)raw_dst; + auto src_ptr = static_cast(raw_src); + auto dst_ptr = static_cast(raw_dst); u32 src_offset = 0; u32 src_limit = src_stride * src_vertex_count; for (u32 vertex = 0; vertex < vertex_count; ++vertex) { - T* typed_dst = (T*)dst_ptr; - U* typed_src = (U*)(src_ptr + src_offset); + auto typed_dst = reinterpret_cast(dst_ptr); + auto typed_src = reinterpret_cast(src_ptr + src_offset); for (u32 i = 0; i < N; ++i) { @@ -414,7 +420,7 @@ namespace } template - void copy_whole_attribute_array(void *raw_dst, void *raw_src, const u8 attribute_size, const u8 dst_stride, const u32 src_stride, const u32 vertex_count, const u32 src_vertex_count) + void copy_whole_attribute_array(void* raw_dst, const void* raw_src, const u8 attribute_size, const u8 dst_stride, const u32 src_stride, const u32 vertex_count, const u32 src_vertex_count) { //Eliminate the inner loop by templating the inner loop counter N @@ -471,13 +477,13 @@ void write_vertex_array_data_to_buffer(gsl::span raw_dst_span, gsl::s //Sometimes, we get a vertex attribute to be repeated. Just copy the supplied vertices only //TODO: Stop these requests from getting here in the first place! //TODO: Check if it is possible to have a repeating array with more than one attribute instance - const u32 real_count = (u32)src_ptr.size_bytes() / attribute_src_stride; + const u32 real_count = static_cast(src_ptr.size_bytes()) / attribute_src_stride; if (real_count == 1) attribute_src_stride = 0; //Always fetch src[0] //TODO: Determine favourable vertex threshold where vector setup costs become negligible //Tests show that even with 4 vertices, using traditional bswap is significantly slower over a large number of calls - const u64 src_address = (u64)src_ptr.data(); + const u64 src_address = reinterpret_cast(src_ptr.data()); const bool sse_aligned = ((src_address & 15) == 0); #if !DEBUG_VERTEX_STREAMING @@ -505,7 +511,7 @@ void write_vertex_array_data_to_buffer(gsl::span raw_dst_span, gsl::s else if (use_stream_with_stride) stream_data_to_memory_u8_non_continuous(raw_dst_span.data(), src_ptr.data(), count, vector_element_count, dst_stride, attribute_src_stride); else - copy_whole_attribute_array((void *)raw_dst_span.data(), (void *)src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); + copy_whole_attribute_array(raw_dst_span.data(), src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); return; } @@ -518,9 +524,9 @@ void write_vertex_array_data_to_buffer(gsl::span raw_dst_span, gsl::s else if (use_stream_with_stride) stream_data_to_memory_swapped_u16_non_continuous(raw_dst_span.data(), src_ptr.data(), count, dst_stride, attribute_src_stride); else if (swap_endianness) - copy_whole_attribute_array, u16>((void *)raw_dst_span.data(), (void *)src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); + copy_whole_attribute_array, u16>(raw_dst_span.data(), src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); else - copy_whole_attribute_array((void *)raw_dst_span.data(), (void *)src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); + copy_whole_attribute_array(raw_dst_span.data(), src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); return; } @@ -531,9 +537,9 @@ void write_vertex_array_data_to_buffer(gsl::span raw_dst_span, gsl::s else if (use_stream_with_stride) stream_data_to_memory_swapped_u32_non_continuous(raw_dst_span.data(), src_ptr.data(), count, dst_stride, attribute_src_stride); else if (swap_endianness) - copy_whole_attribute_array, u32>((void *)raw_dst_span.data(), (void *)src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); + copy_whole_attribute_array, u32>(raw_dst_span.data(), src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); else - copy_whole_attribute_array((void *)raw_dst_span.data(), (void *)src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); + copy_whole_attribute_array(raw_dst_span.data(), src_ptr.data(), vector_element_count, dst_stride, attribute_src_stride, count, real_count); return; } @@ -590,8 +596,8 @@ namespace 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - auto src_stream = (const __m128i*)src; - auto dst_stream = (__m128i*)dst; + auto src_stream = static_cast(src); + auto dst_stream = static_cast<__m128i*>(dst); __m128i min = _mm_set1_epi16(0xFFFF); __m128i max = _mm_set1_epi16(0); @@ -622,8 +628,8 @@ namespace 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3); - auto src_stream = (const __m128i*)src; - auto dst_stream = (__m128i*)dst; + auto src_stream = static_cast(src); + auto dst_stream = static_cast<__m128i*>(dst); __m128i min = _mm_set1_epi32(~0u); __m128i max = _mm_set1_epi32(0); @@ -714,8 +720,8 @@ namespace 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - auto src_stream = (const __m256i*)src; - auto dst_stream = (__m256i*)dst; + auto src_stream = static_cast(src); + auto dst_stream = static_cast<__m256i*>(dst); __m256i restart = _mm256_set1_epi16(restart_index); __m256i min = _mm256_set1_epi16(0xffff); @@ -757,8 +763,8 @@ namespace 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1); - auto src_stream = (const __m128i*)src; - auto dst_stream = (__m128i*)dst; + auto src_stream = static_cast(src); + auto dst_stream = static_cast<__m128i*>(dst); __m128i restart = _mm_set1_epi16(restart_index); __m128i min = _mm_set1_epi16(0xffff); @@ -792,8 +798,8 @@ namespace 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3); - auto src_stream = (const __m128i*)src; - auto dst_stream = (__m128i*)dst; + auto src_stream = static_cast(src); + auto dst_stream = static_cast<__m128i*>(dst); __m128i restart = _mm_set1_epi32(restart_index); __m128i min = _mm_set1_epi32(0xffffffff); @@ -903,7 +909,7 @@ namespace } else { - return primitive_restart_impl::upload_untouched(src, dst, (u16)primitive_restart_index, is_primitive_disjointed(draw_mode)); + return primitive_restart_impl::upload_untouched(src, dst, static_cast(primitive_restart_index), is_primitive_disjointed(draw_mode)); } } else @@ -1079,7 +1085,7 @@ u32 get_index_type_size(rsx::index_array_type type) void write_index_array_for_non_indexed_non_native_primitive_to_buffer(char* dst, rsx::primitive_type draw_mode, unsigned count) { - unsigned short *typedDst = (unsigned short *)(dst); + auto typedDst = reinterpret_cast(dst); switch (draw_mode) { case rsx::primitive_type::line_loop: @@ -1166,7 +1172,7 @@ namespace return expand_indexed_quads(src, dst, restart_index_enabled, restart_index); } default: - fmt::throw_exception("Unknown draw mode (0x%x)" HERE, (u32)draw_mode); + fmt::throw_exception("Unknown draw mode (0x%x)" HERE, static_cast(draw_mode)); } } } @@ -1195,8 +1201,8 @@ std::tuple write_index_array_data_to_buffer(gsl::span void stream_vector(void *dst, u32 x, u32 y, u32 z, u32 w) { - __m128i vector = _mm_set_epi32(w, z, y, x); - _mm_stream_si128((__m128i*)dst, vector); + const __m128i vector = _mm_set_epi32(w, z, y, x); + _mm_stream_si128(reinterpret_cast<__m128i*>(dst), vector); } void stream_vector(void *dst, f32 x, f32 y, f32 z, f32 w) @@ -1205,6 +1211,6 @@ void stream_vector(void *dst, f32 x, f32 y, f32 z, f32 w) } void stream_vector_from_memory(void *dst, void *src) { - const __m128i &vector = _mm_loadu_si128((__m128i*)src); - _mm_stream_si128((__m128i*)dst, vector); + const __m128i vector = _mm_loadu_si128(reinterpret_cast<__m128i*>(src)); + _mm_stream_si128(reinterpret_cast<__m128i*>(dst), vector); } diff --git a/rpcs3/Emu/RSX/Common/ProgramStateCache.cpp b/rpcs3/Emu/RSX/Common/ProgramStateCache.cpp index 2bb221c968..adc69397df 100644 --- a/rpcs3/Emu/RSX/Common/ProgramStateCache.cpp +++ b/rpcs3/Emu/RSX/Common/ProgramStateCache.cpp @@ -10,7 +10,7 @@ size_t vertex_program_utils::get_vertex_program_ucode_hash(const RSXVertexProgra { // 64-bit Fowler/Noll/Vo FNV-1a hash code size_t hash = 0xCBF29CE484222325ULL; - const qword *instbuffer = (const qword*)program.data.data(); + const qword* instbuffer = reinterpret_cast(program.data.data()); size_t instIndex = 0; bool end = false; for (unsigned i = 0; i < program.data.size() / 4; i++) @@ -70,7 +70,7 @@ vertex_program_utils::vertex_program_metadata vertex_program_utils::analyse_vert } } - const qword* instruction = (const qword*)&data[current_instrution * 4]; + const qword* instruction = reinterpret_cast(&data[current_instrution * 4]); d1.HEX = instruction->word[1]; d3.HEX = instruction->word[3]; @@ -200,8 +200,8 @@ vertex_program_utils::vertex_program_metadata vertex_program_utils::analyse_vert { for (u32 i = instruction_range.first, count = 0; i <= instruction_range.second; ++i, ++count) { - const qword* instruction = (const qword*)&data[i * 4]; - qword* dst = (qword*)&dst_prog.data[count * 4]; + const qword* instruction = reinterpret_cast(&data[i * 4]); + qword* dst = reinterpret_cast(&dst_prog.data[count * 4]); if (result.instruction_mask[i]) { @@ -265,8 +265,8 @@ bool vertex_program_compare::operator()(const RSXVertexProgram &binary1, const R if (!binary1.skip_vertex_input_check && !binary2.skip_vertex_input_check && binary1.rsx_vertex_inputs != binary2.rsx_vertex_inputs) return false; - const qword *instBuffer1 = (const qword*)binary1.data.data(); - const qword *instBuffer2 = (const qword*)binary2.data.data(); + const qword* instBuffer1 = reinterpret_cast(binary1.data.data()); + const qword* instBuffer2 = reinterpret_cast(binary2.data.data()); size_t instIndex = 0; for (unsigned i = 0; i < binary1.data.size() / 4; i++) { @@ -300,7 +300,7 @@ bool fragment_program_utils::is_constant(u32 sourceOperand) size_t fragment_program_utils::get_fragment_program_ucode_size(void *ptr) { - const qword *instBuffer = (const qword*)ptr; + const qword* instBuffer = reinterpret_cast(ptr); size_t instIndex = 0; while (true) { @@ -325,7 +325,7 @@ size_t fragment_program_utils::get_fragment_program_ucode_size(void *ptr) fragment_program_utils::fragment_program_metadata fragment_program_utils::analyse_fragment_program(void *ptr) { - const qword *instBuffer = (const qword*)ptr; + const qword* instBuffer = reinterpret_cast(ptr); s32 index = 0; s32 program_offset = -1; u32 ucode_size = 0; @@ -388,14 +388,14 @@ fragment_program_utils::fragment_program_metadata fragment_program_utils::analys index++; } - return{ (u32)program_offset, ucode_size, constants_size, textures_mask }; + return{ static_cast(program_offset), ucode_size, constants_size, textures_mask }; } size_t fragment_program_utils::get_fragment_program_ucode_hash(const RSXFragmentProgram& program) { // 64-bit Fowler/Noll/Vo FNV-1a hash code size_t hash = 0xCBF29CE484222325ULL; - const qword *instbuffer = (const qword*)program.addr; + const qword* instbuffer = reinterpret_cast(program.addr); size_t instIndex = 0; while (true) { @@ -447,8 +447,8 @@ bool fragment_program_compare::operator()(const RSXFragmentProgram& binary1, con return false; } - const qword *instBuffer1 = (const qword*)binary1.addr; - const qword *instBuffer2 = (const qword*)binary2.addr; + const qword* instBuffer1 = reinterpret_cast(binary1.addr); + const qword* instBuffer2 = reinterpret_cast(binary2.addr); size_t instIndex = 0; while (true) { diff --git a/rpcs3/Emu/RSX/Common/surface_store.h b/rpcs3/Emu/RSX/Common/surface_store.h index 93529931c9..8803d63b3f 100644 --- a/rpcs3/Emu/RSX/Common/surface_store.h +++ b/rpcs3/Emu/RSX/Common/surface_store.h @@ -12,7 +12,7 @@ namespace template gsl::span as_const_span(gsl::span unformated_span) { - return{ (T*)unformated_span.data(), unformated_span.size_bytes() / sizeof(T) }; + return{ reinterpret_cast(unformated_span.data()), unformated_span.size_bytes() / sizeof(T) }; } } @@ -428,7 +428,7 @@ namespace rsx if (pitch_compatible) { // Preserve memory outside the area to be inherited if needed - split_surface_region(command_list, address, Traits::get(surface), (u16)width, (u16)height, bpp, antialias); + split_surface_region(command_list, address, Traits::get(surface), static_cast(width), static_cast(height), bpp, antialias); old_surface = Traits::get(surface); } @@ -444,7 +444,7 @@ namespace rsx { // Range test const auto aa_factor_v = get_aa_factor_v(antialias); - rsx::address_range range = rsx::address_range::start_length(address, u32(pitch * height * aa_factor_v)); + rsx::address_range range = rsx::address_range::start_length(address, static_cast(pitch * height * aa_factor_v)); *storage_bounds = range.get_min_max(*storage_bounds); // Search invalidated resources for a suitable surface diff --git a/rpcs3/Emu/RSX/Common/surface_utils.h b/rpcs3/Emu/RSX/Common/surface_utils.h index 090aac66f1..9e32ab0f8f 100644 --- a/rpcs3/Emu/RSX/Common/surface_utils.h +++ b/rpcs3/Emu/RSX/Common/surface_utils.h @@ -56,8 +56,8 @@ namespace rsx ret.height = height; ret.transfer_scale_x = transfer_scale_x; ret.transfer_scale_y = transfer_scale_y; - ret.target = (T)(target); - ret.source = (T)(source); + ret.target = static_cast(target); + ret.source = static_cast(source); return ret; } @@ -233,7 +233,7 @@ namespace rsx spp = 4; break; default: - fmt::throw_exception("Unknown AA mode 0x%x", (u32)aa); + fmt::throw_exception("Unknown AA mode 0x%x", static_cast(aa)); } } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_font.cpp b/rpcs3/Emu/RSX/Overlays/overlay_font.cpp index d009b821ee..f7978c58c2 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_font.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_font.cpp @@ -99,7 +99,7 @@ namespace rsx stbtt_PackSetOversampling(&context, oversample, oversample); // Convert pt to px - size_px = ceilf((f32)size * 96.f / 72.f); + size_px = ceilf(size * 96.f / 72.f); size_pt = size; if (!stbtt_PackFontRange(&context, bytes.data(), 0, size_px, 0, 256, pack_info.data())) diff --git a/rpcs3/Emu/RSX/rsx_utils.cpp b/rpcs3/Emu/RSX/rsx_utils.cpp index 9ef064dab0..a13a3028c8 100644 --- a/rpcs3/Emu/RSX/rsx_utils.cpp +++ b/rpcs3/Emu/RSX/rsx_utils.cpp @@ -26,7 +26,7 @@ namespace rsx void clip_image(u8 *dst, const u8 *src, int clip_x, int clip_y, int clip_w, int clip_h, int bpp, int src_pitch, int dst_pitch) { - u8 *pixels_src = (u8*)src + clip_y * src_pitch + clip_x * bpp; + const u8* pixels_src = src + clip_y * src_pitch + clip_x * bpp; u8 *pixels_dst = dst; const u32 row_length = clip_w * bpp; @@ -130,13 +130,13 @@ namespace rsx switch (element_size) { case 1: - scale_image_fallback_impl((u8*)dst, (const u8*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl(static_cast(dst), static_cast(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; case 2: - scale_image_fallback_impl((u16*)dst, (const u16*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl(static_cast(dst), static_cast(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; case 4: - scale_image_fallback_impl((u32*)dst, (const u32*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl(static_cast(dst), static_cast(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; default: fmt::throw_exception("unsupported element size %d" HERE, element_size); @@ -148,13 +148,13 @@ namespace rsx switch (element_size) { case 1: - scale_image_fallback_impl((u8*)dst, (const u8*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl(static_cast(dst), static_cast(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; case 2: - scale_image_fallback_impl>((u16*)dst, (const be_t*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl>(static_cast(dst), static_cast*>(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; case 4: - scale_image_fallback_impl>((u32*)dst, (const be_t*)src, src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); + scale_image_fallback_impl>(static_cast(dst), static_cast*>(src), src_width, src_height, dst_pitch, src_pitch, element_size, samples_u, samples_v); break; default: fmt::throw_exception("unsupported element size %d" HERE, element_size); @@ -191,16 +191,16 @@ namespace rsx switch (element_size) { case 1: - scale_image_impl((u8*)dst, (const u8*)src, src_width, src_height, padding); + scale_image_impl(static_cast(dst), static_cast(src), src_width, src_height, padding); break; case 2: - scale_image_impl((u16*)dst, (const u16*)src, src_width, src_height, padding); + scale_image_impl(static_cast(dst), static_cast(src), src_width, src_height, padding); break; case 4: - scale_image_impl((u32*)dst, (const u32*)src, src_width, src_height, padding); + scale_image_impl(static_cast(dst), static_cast(src), src_width, src_height, padding); break; case 8: - scale_image_impl((u64*)dst, (const u64*)src, src_width, src_height, padding); + scale_image_impl(static_cast(dst), static_cast(src), src_width, src_height, padding); break; default: fmt::throw_exception("unsupported pixel size %d" HERE, element_size); @@ -213,16 +213,16 @@ namespace rsx switch (element_size) { case 1: - scale_image_impl((u8*)dst, (const u8*)src, src_width, src_height, padding); + scale_image_impl(static_cast(dst), static_cast(src), src_width, src_height, padding); break; case 2: - scale_image_impl, N>((u16*)dst, (const be_t*)src, src_width, src_height, padding); + scale_image_impl, N>(static_cast(dst), static_cast*>(src), src_width, src_height, padding); break; case 4: - scale_image_impl, N>((u32*)dst, (const be_t*)src, src_width, src_height, padding); + scale_image_impl, N>(static_cast(dst), static_cast*>(src), src_width, src_height, padding); break; case 8: - scale_image_impl, N>((u64*)dst, (const be_t*)src, src_width, src_height, padding); + scale_image_impl, N>(static_cast(dst), static_cast*>(src), src_width, src_height, padding); break; default: fmt::throw_exception("unsupported pixel size %d" HERE, element_size); @@ -313,8 +313,8 @@ namespace rsx const auto num_iterations = (num_pixels >> 2); - __m128i* dst_ptr = (__m128i*)dst; - __m128i* src_ptr = (__m128i*)src; + __m128i* dst_ptr = static_cast<__m128i*>(dst); + __m128i* src_ptr = static_cast<__m128i*>(src); const __m128 scale_vector = _mm_set1_ps(16777214.f); @@ -332,7 +332,7 @@ namespace rsx for (u32 n = 0; n < num_iterations; ++n) { const __m128i src_vector = _mm_loadu_si128(src_ptr); - const __m128i result = _mm_cvtps_epi32(_mm_mul_ps((__m128&)src_vector, scale_vector)); + const __m128i result = _mm_cvtps_epi32(_mm_mul_ps(_mm_castsi128_ps(src_vector), scale_vector)); const __m128i shuffled_vector = _mm_shuffle_epi8(result, swap_mask); _mm_stream_si128(dst_ptr, shuffled_vector); ++dst_ptr; @@ -350,7 +350,7 @@ namespace rsx for (u32 n = 0; n < num_iterations; ++n) { const __m128i src_vector = _mm_loadu_si128(src_ptr); - const __m128i result = _mm_cvtps_epi32(_mm_mul_ps((__m128&)src_vector, scale_vector)); + const __m128i result = _mm_cvtps_epi32(_mm_mul_ps(_mm_castsi128_ps(src_vector), scale_vector)); const __m128i v1 = _mm_and_si128(result, mask1); const __m128i v2 = _mm_and_si128(_mm_slli_epi32(result, 16), mask2); @@ -370,8 +370,8 @@ namespace rsx const auto num_iterations = (num_pixels >> 2); - __m128i* dst_ptr = (__m128i*)dst; - __m128i* src_ptr = (__m128i*)src; + __m128i* dst_ptr = static_cast<__m128i*>(dst); + __m128i* src_ptr = static_cast<__m128i*>(src); #if defined (_MSC_VER) || defined (__SSSE3__) if (LIKELY(utils::has_ssse3())) @@ -422,8 +422,8 @@ namespace rsx const auto num_iterations = (num_pixels >> 2); - __m128i* dst_ptr = (__m128i*)dst; - __m128i* src_ptr = (__m128i*)src; + __m128i* dst_ptr = static_cast<__m128i*>(dst); + __m128i* src_ptr = static_cast<__m128i*>(src); const __m128 scale_vector = _mm_set1_ps(1.f / 16777214.f); const __m128i mask = _mm_set1_epi32(0x00FFFFFF); @@ -431,7 +431,7 @@ namespace rsx { const __m128 src_vector = _mm_cvtepi32_ps(_mm_and_si128(mask, _mm_loadu_si128(src_ptr))); const __m128 normalized_vector = _mm_mul_ps(src_vector, scale_vector); - _mm_stream_si128(dst_ptr, (__m128i&)normalized_vector); + _mm_stream_si128(dst_ptr, _mm_castps_si128(normalized_vector)); ++dst_ptr; ++src_ptr; } diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 60bb91feb9..bdb4ac77dc 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -1726,7 +1726,7 @@ void Emulator::Resume() { if (vm::check_addr(i)) { - if (auto& data = *(be_t*)(vm::g_stat_addr + i)) + if (auto& data = *reinterpret_cast*>(vm::g_stat_addr + i)) { dis_asm.dump_pc = i; dis_asm.disasm(i);