From 144e2eb51c9460dc871df132e41adcaeebb54c42 Mon Sep 17 00:00:00 2001 From: Cancerous Date: Thu, 5 Dec 2019 09:33:30 -0500 Subject: [PATCH] - adjusting XAMEnumerate buffer size to fix Angry Birds and Resonance of Fate - thanks Gliniak --- src/xenia/kernel/xam/xam_info.cc | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/xenia/kernel/xam/xam_info.cc b/src/xenia/kernel/xam/xam_info.cc index 750078dc7..0405a787d 100644 --- a/src/xenia/kernel/xam/xam_info.cc +++ b/src/xenia/kernel/xam/xam_info.cc @@ -353,20 +353,9 @@ dword_result_t XamEnumerate(dword_t handle, dword_t flags, lpvoid_t buffer, } } - size_t actual_buffer_length = (uint32_t)buffer_length; - if (buffer_length == e->items_per_enumerate()) { - actual_buffer_length = e->item_size() * e->items_per_enumerate(); - // Known culprits: - // Final Fight: Double Impact (saves) - XELOGW( - "Broken usage of XamEnumerate! buffer length={:X} vs actual " - "length={:X} " - "(item size={:X}, items per enumerate={})", - (uint32_t)buffer_length, actual_buffer_length, e->item_size(), - e->items_per_enumerate()); - } - - //buffer.Zero(actual_buffer_length); + // Don't trust buffer_length. It might be invalid (Based on "Resonance of fate") + // also fixes "Angry Birds" - Thanks Gliniak + size_t actual_buffer_length = e->item_count() * e->item_size(); X_RESULT result; uint32_t item_count = 0;