From 4d8c262dafec2f03a63e07af5957b8b071a97c49 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 28 Jun 2026 21:02:37 +0200 Subject: [PATCH] Use pos param of read_from_ptr and write_to_ptr where possible --- rpcs3/Emu/Cell/Modules/cellGifDec.cpp | 4 ++-- rpcs3/Emu/Cell/Modules/cellJpgDec.cpp | 21 +++++++++++---------- rpcs3/Emu/Cell/SPUCommonRecompiler.cpp | 2 +- rpcs3/Emu/Cell/lv2/sys_fs.cpp | 2 +- rpcs3/Emu/Io/Dimensions.cpp | 4 ++-- rpcs3/Emu/NP/np_handler.cpp | 2 +- rpcs3/Emu/NP/rpcn_client.cpp | 12 ++++++------ rpcs3/Emu/NP/rpcn_client.h | 2 +- rpcs3/Emu/RSX/NV47/HW/nv4097.cpp | 6 +++--- rpcs3/rpcs3qt/kamen_rider_dialog.cpp | 2 +- 10 files changed, 29 insertions(+), 28 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellGifDec.cpp b/rpcs3/Emu/Cell/Modules/cellGifDec.cpp index faf8defa6d..03566183e6 100644 --- a/rpcs3/Emu/Cell/Modules/cellGifDec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGifDec.cpp @@ -289,8 +289,8 @@ error_code cellGifDecReadHeader(vm::ptr mainHandle, vm::ptr>(buffer + 0) != 0x47494638u || - (read_from_ptr>(buffer + 4) != 0x6139u && read_from_ptr>(buffer + 4) != 0x6137u)) // Error: The first 6 bytes are not a valid GIF signature + if (read_from_ptr>(buffer, 0) != 0x47494638u || + (read_from_ptr>(buffer, 4) != 0x6139u && read_from_ptr>(buffer, 4) != 0x6137u)) // Error: The first 6 bytes are not a valid GIF signature { return CELL_GIFDEC_ERROR_STREAM_FORMAT; // Surprisingly there is no error code related with headerss } diff --git a/rpcs3/Emu/Cell/Modules/cellJpgDec.cpp b/rpcs3/Emu/Cell/Modules/cellJpgDec.cpp index 5123ec68cf..a6a656e698 100644 --- a/rpcs3/Emu/Cell/Modules/cellJpgDec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellJpgDec.cpp @@ -125,26 +125,26 @@ error_code cellJpgDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptrinfo; // Write the header to buffer - std::unique_ptr buffer(new u8[fileSize]); + std::vector buffer(fileSize); switch (subHandle_data->src.srcSelect) { case CELL_JPGDEC_BUFFER: - std::memcpy(buffer.get(), vm::base(subHandle_data->src.streamPtr), fileSize); + std::memcpy(buffer.data(), vm::base(subHandle_data->src.streamPtr), fileSize); break; case CELL_JPGDEC_FILE: { auto file = idm::get_unlocked(fd); file->file.seek(0); - file->file.read(buffer.get(), fileSize); + file->file.read(buffer.data(), fileSize); break; } default: break; // TODO } - if (read_from_ptr>(buffer.get() + 0) != 0xE0FFD8FF || // Error: Not a valid SOI header - read_from_ptr(buffer.get() + 6) != "JFIF"_u32) // Error: Not a valid JFIF string + if (read_from_ptr>(buffer, 0) != 0xE0FFD8FF || // Error: Not a valid SOI header + read_from_ptr(buffer, 6) != "JFIF"_u32) // Error: Not a valid JFIF string { return CELL_JPGDEC_ERROR_HEADER; } @@ -154,7 +154,7 @@ error_code cellJpgDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptr= fileSize) return CELL_JPGDEC_ERROR_HEADER; - u16 block_length = buffer[i] * 0xFF + buffer[i + 1]; + u16 block_length = ::at32(buffer, i) * 0xFF + ::at32(buffer, i + 1); while (true) { @@ -165,15 +165,16 @@ error_code cellJpgDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptr spu_thread::discover_functions(u32 base_addr, std::span>(ls.data(), i - base_addr); + const v128 inst = read_from_ptr>(ls, i - base_addr); const v128 cleared_i16 = gv_and32(inst, v128::from32p(std::rotl(~0xffff, 7))); const v128 eq_brsl = gv_eq32(cleared_i16, v128::from32p(0x66u << 23)); const v128 eq_brasl = gv_eq32(cleared_i16, brasl_mask); diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.cpp b/rpcs3/Emu/Cell/lv2/sys_fs.cpp index 79bd85206d..61f8ab45f1 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_fs.cpp @@ -658,7 +658,7 @@ void lv2_file::save(utils::serial& ar) sys_fs.error("Read less than expected! (new-size=0x%x)", read_size); stats.size = read_size; ar.data.resize(old_end + stats.size); - write_to_ptr(&ar.data[patch_stats_pos], stats); + write_to_ptr(ar.data, patch_stats_pos, stats); } } diff --git a/rpcs3/Emu/Io/Dimensions.cpp b/rpcs3/Emu/Io/Dimensions.cpp index 84a604a86e..fb3327779d 100644 --- a/rpcs3/Emu/Io/Dimensions.cpp +++ b/rpcs3/Emu/Io/Dimensions.cpp @@ -214,7 +214,7 @@ u32 dimensions_toypad::scramble(const std::array& uid, u8 count) } ::at32(to_scramble, count * 4 - 1) = 0xaa; - return read_from_ptr>(dimensions_randomize(to_scramble, count).data()); + return read_from_ptr>(dimensions_randomize(to_scramble, count)); } std::array dimensions_toypad::dimensions_randomize(const std::vector& key, u8 count) @@ -522,7 +522,7 @@ bool dimensions_toypad::create_blank_character(std::array& buf, else { // Page 38 is used as verification for blank tags - write_to_ptr>(buf.data(), 38 * 4, 1); + write_to_ptr>(buf, 38 * 4, 1); } return true; diff --git a/rpcs3/Emu/NP/np_handler.cpp b/rpcs3/Emu/NP/np_handler.cpp index 6b4ada8e84..df67c47990 100644 --- a/rpcs3/Emu/NP/np_handler.cpp +++ b/rpcs3/Emu/NP/np_handler.cpp @@ -359,7 +359,7 @@ namespace np return; } - u32 given_size = read_from_ptr>(data() + 4); + u32 given_size = read_from_ptr>(data(), 4); if ((given_size + 8) != size()) { ticket_log.error("Size mismatch (gs: %d vs s: %d)", given_size, size()); diff --git a/rpcs3/Emu/NP/rpcn_client.cpp b/rpcs3/Emu/NP/rpcn_client.cpp index da590278f5..410713209b 100644 --- a/rpcs3/Emu/NP/rpcn_client.cpp +++ b/rpcs3/Emu/NP/rpcn_client.cpp @@ -503,8 +503,8 @@ namespace rpcn { if (msg.size() == 6) { - const u32 new_addr_sig = read_from_ptr>(&msg[0]); - const u16 new_port_sig = read_from_ptr>(&msg[4]); + const u32 new_addr_sig = read_from_ptr>(msg, 0); + const u16 new_port_sig = read_from_ptr>(msg, 4); const u32 old_addr_sig = addr_sig; const u32 old_port_sig = port_sig; @@ -533,7 +533,7 @@ namespace rpcn // We don't really need ipv6 info stored so we just update the pong data // std::array new_ipv6_addr; // std::memcpy(new_ipv6_addr.data(), &msg[3], 16); - // const u32 new_ipv6_port = read_from_ptr>(&msg[16]); + // const u32 new_ipv6_port = read_from_ptr>(msg, 16); last_pong_time_ipv6 = now; } @@ -626,9 +626,9 @@ namespace rpcn } const u8 packet_type = header[0]; - const auto command = static_cast(static_cast(read_from_ptr>(&header[1]))); - const u32 packet_size = read_from_ptr>(&header[3]); - const u64 packet_id = read_from_ptr>(&header[7]); + const auto command = static_cast(static_cast(read_from_ptr>(header, 1))); + const u32 packet_size = read_from_ptr>(header, 3); + const u64 packet_id = read_from_ptr>(header, 7); if (packet_size < RPCN_HEADER_SIZE) return error_and_disconnect("Invalid packet size"); diff --git a/rpcs3/Emu/NP/rpcn_client.h b/rpcs3/Emu/NP/rpcn_client.h index e37b1bb2e0..f95fb282b4 100644 --- a/rpcs3/Emu/NP/rpcn_client.h +++ b/rpcs3/Emu/NP/rpcn_client.h @@ -67,7 +67,7 @@ public: error = true; return static_cast(0); } - T res = read_from_ptr>(&vec[i]); + T res = read_from_ptr>(vec, i); i += sizeof(T); return res; } diff --git a/rpcs3/Emu/RSX/NV47/HW/nv4097.cpp b/rpcs3/Emu/RSX/NV47/HW/nv4097.cpp index 3cc40efed1..fb64f6870f 100644 --- a/rpcs3/Emu/RSX/NV47/HW/nv4097.cpp +++ b/rpcs3/Emu/RSX/NV47/HW/nv4097.cpp @@ -183,11 +183,11 @@ namespace rsx const usz first_index_off = 0; const usz second_index_off = (((rcount / 4) - 1) / 2) * 4; - const u64 src_op1_2 = read_from_ptr>(fifo_span.data() + first_index_off); - const u64 src_op2_2 = read_from_ptr>(fifo_span.data() + second_index_off); + const u64 src_op1_2 = read_from_ptr>(fifo_span, first_index_off); + const u64 src_op2_2 = read_from_ptr>(fifo_span, second_index_off); // Fast comparison - if (src_op1_2 != read_from_ptr(out_ptr + first_index_off) || src_op2_2 != read_from_ptr(out_ptr + second_index_off)) + if (src_op1_2 != read_from_ptr(out_ptr, first_index_off) || src_op2_2 != read_from_ptr(out_ptr, second_index_off)) { to_set_dirty = rsx::pipeline_state::vertex_program_ucode_dirty; } diff --git a/rpcs3/rpcs3qt/kamen_rider_dialog.cpp b/rpcs3/rpcs3qt/kamen_rider_dialog.cpp index 20202a68f2..e4884d6e64 100644 --- a/rpcs3/rpcs3qt/kamen_rider_dialog.cpp +++ b/rpcs3/rpcs3qt/kamen_rider_dialog.cpp @@ -234,7 +234,7 @@ kamen_rider_creator_dialog::kamen_rider_creator_dialog(QWidget* parent) std::array figure_data = {static_cast(dist(mt)), 0x03, 0x00, 0x00, 0x01, 0x0e, 0x0a, 0x0a, static_cast(fig_id & 0xff), static_cast((fig_id >> 8) & 0xff), static_cast((fig_id >> 16) & 0xff), static_cast((fig_id >> 24) & 0xff)}; - write_to_ptr>(figure_data.data(), 0xC, kamen_rider_crc32(figure_data)); + write_to_ptr>(figure_data, 0xC, kamen_rider_crc32(figure_data)); memcpy(&buf[16], figure_data.data(), figure_data.size()); fig_file.write(buf.data(), buf.size()); fig_file.close();