diff --git a/src/xenia/gpu/gl4/command_processor.cc b/src/xenia/gpu/gl4/command_processor.cc index 43669624b..fdb69e693 100644 --- a/src/xenia/gpu/gl4/command_processor.cc +++ b/src/xenia/gpu/gl4/command_processor.cc @@ -2523,7 +2523,7 @@ bool CommandProcessor::IssueCopy() { uint32_t copy_dest_number = (copy_dest_info >> 13) & 0x7; // assert_true(copy_dest_number == 0); // ? uint32_t copy_dest_bias = (copy_dest_info >> 16) & 0x3F; - assert_true(copy_dest_bias == 0); + // assert_true(copy_dest_bias == 0); uint32_t copy_dest_swap = (copy_dest_info >> 25) & 0x1; uint32_t copy_dest_base = regs[XE_GPU_REG_RB_COPY_DEST_BASE].u32; @@ -2586,10 +2586,18 @@ bool CommandProcessor::IssueCopy() { GLenum read_format; GLenum read_type; switch (copy_dest_format) { + case ColorFormat::k_2_10_10_10: + read_format = GL_RGB10_A2; + read_type = GL_UNSIGNED_INT_10_10_10_2; + break; case ColorFormat::k_4_4_4_4: read_format = GL_RGBA4; read_type = GL_UNSIGNED_SHORT_4_4_4_4; break; + case ColorFormat::k_5_6_5: + read_format = GL_RGB565; + read_type = GL_UNSIGNED_SHORT_5_6_5; + break; case ColorFormat::k_8: read_format = GL_R8; read_type = GL_UNSIGNED_BYTE; diff --git a/src/xenia/gpu/ucode_disassembler.cc b/src/xenia/gpu/ucode_disassembler.cc index 3822d7f3a..af3cab469 100644 --- a/src/xenia/gpu/ucode_disassembler.cc +++ b/src/xenia/gpu/ucode_disassembler.cc @@ -43,7 +43,7 @@ namespace gpu { using namespace xe::gpu::ucode; using namespace xe::gpu::xenos; -const int OUTPUT_CAPACITY = 32 * 1024; +const int OUTPUT_CAPACITY = 256 * 1024; struct Output { char buffer[OUTPUT_CAPACITY]; size_t capacity; @@ -54,6 +54,7 @@ struct Output { va_start(args, format); int len = vsnprintf(buffer + offset, capacity - offset, format, args); va_end(args); + assert_true(offset + len < capacity); offset += len; buffer[offset] = 0; }