From 9266aa1317697960038512dc26f34a93eb1d4750 Mon Sep 17 00:00:00 2001 From: Zangetsu38 Date: Mon, 18 Apr 2016 01:08:57 +0200 Subject: [PATCH] Debug --- .gitignore | 2 + 3rdparty/GL/glext.h | 301 +++++++++++++++++- 3rdparty/ffmpeg | 2 +- Vulkan/Vulkan-LoaderAndValidationLayers | 2 +- Vulkan/glslang | 2 +- asmjit | 2 +- rpcs3/Crypto/lz.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp | 3 +- rpcs3/Emu/Cell/Modules/cellFont.cpp | 11 +- rpcs3/Emu/Cell/Modules/cellFs.cpp | 3 +- rpcs3/Emu/Cell/Modules/cellGame.cpp | 8 +- rpcs3/Emu/Cell/Modules/cellGcmSys.cpp | 12 +- rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp | 105 +++++- rpcs3/Emu/Cell/Modules/cellNetCtl.cpp | 3 +- rpcs3/Emu/Cell/Modules/cellPngDec.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellSysutil.cpp | 210 +++++++++++- rpcs3/Emu/Cell/Modules/cellVdec.cpp | 7 +- rpcs3/Emu/Cell/Modules/sceNp.cpp | 21 +- rpcs3/Emu/Cell/Modules/sceNp2.cpp | 15 +- rpcs3/Emu/Cell/Modules/sysPrxForUser.cpp | 22 +- rpcs3/Emu/Cell/Modules/sys_libc_.cpp | 3 +- rpcs3/Emu/Cell/Modules/sys_mempool.cpp | 3 +- rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp | 6 +- rpcs3/Emu/Cell/PPUInterpreter.cpp | 15 +- rpcs3/Emu/Cell/PPUThread.cpp | 8 +- rpcs3/Emu/Cell/PPUThread.h | 13 + rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp | 4 +- rpcs3/Emu/Cell/SPUThread.cpp | 4 +- rpcs3/Emu/Cell/lv2/sys_fs.cpp | 13 +- rpcs3/Emu/Memory/vm.cpp | 2 +- .../RSX/Common/FragmentProgramDecompiler.cpp | 3 +- rpcs3/Emu/RSX/Common/ring_buffer_helper.h | 2 +- rpcs3/Emu/RSX/gcm_enums.cpp | 1 + rpcs3/Emu/RSX/gcm_enums.h | 1 + rpcs3/Emu/RSX/rsx_methods.cpp | 5 +- rpcs3/emucore.vcxproj | 1 + rpcs3/emucore.vcxproj.filters | 3 + 37 files changed, 755 insertions(+), 67 deletions(-) diff --git a/.gitignore b/.gitignore index 41d22aef20..acfa04ae25 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,5 @@ CMakeCache.txt # cotire rpcs3/cotire/* rpcs3/rpcs3_*_cotire.cmake +/.vs/rpcs3/v15/ipch/AutoPCH/VKGSRENDER-1a48cf59/VKGSRENDER-717b8989/*.ipch +/.vs/rpcs3/v15/ipch/EMUCORE-4bdb26ae/*.ipch diff --git a/3rdparty/GL/glext.h b/3rdparty/GL/glext.h index e77694e27c..7d792bbe45 100644 --- a/3rdparty/GL/glext.h +++ b/3rdparty/GL/glext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013-2014 The Khronos Group Inc. +** Copyright (c) 2013-2016 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,7 +33,7 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 31191 $ on $Date: 2015-05-14 06:31:39 -0400 (Thu, 14 May 2015) $ +** Khronos $Revision: 33248 $ on $Date: 2016-10-24 01:22:03 -0400 (Mon, 24 Oct 2016) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -53,7 +53,7 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20150514 +#define GL_GLEXT_VERSION 20161024 /* Generated C header for: * API: gl @@ -2654,7 +2654,7 @@ typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint fram typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); -typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil); +typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target); typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param); @@ -2777,7 +2777,7 @@ GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLs GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value); GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value); GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value); -GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil); +GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target); GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param); @@ -2875,6 +2875,17 @@ GLAPI void APIENTRY glTextureBarrier (void); #define GL_ARB_ES3_1_compatibility 1 #endif /* GL_ARB_ES3_1_compatibility */ +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +typedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_ARB_ES3_2_compatibility */ + #ifndef GL_ARB_ES3_compatibility #define GL_ARB_ES3_compatibility 1 #endif /* GL_ARB_ES3_compatibility */ @@ -3288,6 +3299,10 @@ GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program); #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B #endif /* GL_ARB_fragment_shader */ +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +#endif /* GL_ARB_fragment_shader_interlock */ + #ifndef GL_ARB_framebuffer_no_attachments #define GL_ARB_framebuffer_no_attachments 1 #endif /* GL_ARB_framebuffer_no_attachments */ @@ -3348,6 +3363,91 @@ GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachmen #define GL_ARB_gpu_shader_fp64 1 #endif /* GL_ARB_gpu_shader_fp64 */ +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +typedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params); +typedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +typedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x); +GLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x); +GLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params); +GLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params); +GLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params); +GLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params); +GLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x); +GLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y); +GLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); +GLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); +GLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value); +GLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x); +GLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y); +GLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); +GLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); +GLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +GLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value); +#endif +#endif /* GL_ARB_gpu_shader_int64 */ + #ifndef GL_ARB_half_float_pixel #define GL_ARB_half_float_pixel 1 typedef unsigned short GLhalfARB; @@ -3727,6 +3827,16 @@ GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *par #define GL_ARB_occlusion_query2 1 #endif /* GL_ARB_occlusion_query2 */ +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +typedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count); +#endif +#endif /* GL_ARB_parallel_shader_compile */ + #ifndef GL_ARB_pipeline_statistics_query #define GL_ARB_pipeline_statistics_query 1 #define GL_VERTICES_SUBMITTED_ARB 0x82EE @@ -3769,6 +3879,10 @@ GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params); #define GL_COORD_REPLACE_ARB 0x8862 #endif /* GL_ARB_point_sprite */ +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +#endif /* GL_ARB_post_depth_coverage */ + #ifndef GL_ARB_program_interface_query #define GL_ARB_program_interface_query 1 #endif /* GL_ARB_program_interface_query */ @@ -3842,6 +3956,26 @@ GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum form #define GL_ARB_robustness_isolation 1 #endif /* GL_ARB_robustness_isolation */ +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +typedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GLAPI void APIENTRY glEvaluateDepthValuesARB (void); +#endif +#endif /* GL_ARB_sample_locations */ + #ifndef GL_ARB_sample_shading #define GL_ARB_sample_shading 1 #define GL_SAMPLE_SHADING_ARB 0x8C36 @@ -3868,14 +4002,26 @@ GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value); #define GL_ARB_separate_shader_objects 1 #endif /* GL_ARB_separate_shader_objects */ +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +#endif /* GL_ARB_shader_atomic_counter_ops */ + #ifndef GL_ARB_shader_atomic_counters #define GL_ARB_shader_atomic_counters 1 #endif /* GL_ARB_shader_atomic_counters */ +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +#endif /* GL_ARB_shader_ballot */ + #ifndef GL_ARB_shader_bit_encoding #define GL_ARB_shader_bit_encoding 1 #endif /* GL_ARB_shader_bit_encoding */ +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +#endif /* GL_ARB_shader_clock */ + #ifndef GL_ARB_shader_draw_parameters #define GL_ARB_shader_draw_parameters 1 #endif /* GL_ARB_shader_draw_parameters */ @@ -4040,6 +4186,10 @@ GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GL #define GL_ARB_shader_texture_lod 1 #endif /* GL_ARB_shader_texture_lod */ +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +#endif /* GL_ARB_shader_viewport_layer_array */ + #ifndef GL_ARB_shading_language_100 #define GL_ARB_shading_language_100 1 #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C @@ -4119,6 +4269,14 @@ GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xo #endif #endif /* GL_ARB_sparse_texture */ +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +#endif /* GL_ARB_sparse_texture2 */ + +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +#endif /* GL_ARB_sparse_texture_clamp */ + #ifndef GL_ARB_stencil_texturing #define GL_ARB_stencil_texturing 1 #endif /* GL_ARB_stencil_texturing */ @@ -4271,6 +4429,12 @@ GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void #define GL_DOT3_RGBA_ARB 0x86AF #endif /* GL_ARB_texture_env_dot3 */ +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#endif /* GL_ARB_texture_filter_minmax */ + #ifndef GL_ARB_texture_float #define GL_ARB_texture_float 1 #define GL_TEXTURE_RED_TYPE_ARB 0x8C10 @@ -4815,6 +4979,10 @@ GLAPI void APIENTRY glBlendBarrierKHR (void); #define GL_KHR_texture_compression_astc_ldr 1 #endif /* GL_KHR_texture_compression_astc_ldr */ +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + #ifndef GL_OES_byte_coordinates #define GL_OES_byte_coordinates 1 typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); @@ -5210,6 +5378,23 @@ GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRG #define GL_AMD_gcn_shader 1 #endif /* GL_AMD_gcn_shader */ +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif /* GL_AMD_gpu_shader_half_float */ + #ifndef GL_AMD_gpu_shader_int64 #define GL_AMD_gpu_shader_int64 1 typedef int64_t GLint64EXT; @@ -5237,10 +5422,6 @@ typedef int64_t GLint64EXT; #define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 #define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 #define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 -#define GL_FLOAT16_NV 0x8FF8 -#define GL_FLOAT16_VEC2_NV 0x8FF9 -#define GL_FLOAT16_VEC3_NV 0x8FFA -#define GL_FLOAT16_VEC4_NV 0x8FFB typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); @@ -5428,6 +5609,14 @@ GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLf #define GL_AMD_shader_atomic_counter_ops 1 #endif /* GL_AMD_shader_atomic_counter_ops */ +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +#endif /* GL_AMD_shader_ballot */ + +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +#endif /* GL_AMD_shader_explicit_vertex_parameter */ + #ifndef GL_AMD_shader_stencil_export #define GL_AMD_shader_stencil_export 1 #endif /* GL_AMD_shader_stencil_export */ @@ -8468,6 +8657,20 @@ GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei s #endif #endif /* GL_EXT_vertex_weighting */ +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + #ifndef GL_EXT_x11_sync_object #define GL_EXT_x11_sync_object 1 #define GL_SYNC_X11_FENCE_EXT 0x90E1 @@ -8645,10 +8848,23 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG #define GL_INTERLACE_READ_INGR 0x8568 #endif /* GL_INGR_interlace_read */ +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + #ifndef GL_INTEL_fragment_shader_ordering #define GL_INTEL_fragment_shader_ordering 1 #endif /* GL_INTEL_fragment_shader_ordering */ +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +typedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + #ifndef GL_INTEL_map_texture #define GL_INTEL_map_texture 1 #define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF @@ -8953,6 +9169,17 @@ GLAPI void APIENTRY glBlendBarrierNV (void); #define GL_NV_blend_square 1 #endif /* GL_NV_blend_square */ +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + #ifndef GL_NV_command_list #define GL_NV_command_list 1 #define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 @@ -9044,6 +9271,28 @@ GLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); #endif #endif /* GL_NV_conservative_raster */ +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value); +#endif +#endif /* GL_NV_conservative_raster_dilate */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + #ifndef GL_NV_copy_depth_to_color #define GL_NV_copy_depth_to_color 1 #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E @@ -10036,6 +10285,11 @@ GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, #endif #endif /* GL_NV_register_combiners2 */ +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#endif /* GL_NV_robustness_video_memory_purge */ + #ifndef GL_NV_sample_locations #define GL_NV_sample_locations 1 #define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D @@ -10068,6 +10322,10 @@ GLAPI void APIENTRY glResolveDepthValuesNV (void); #define GL_NV_shader_atomic_float 1 #endif /* GL_NV_shader_atomic_float */ +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +#endif /* GL_NV_shader_atomic_float64 */ + #ifndef GL_NV_shader_atomic_fp16_vector #define GL_NV_shader_atomic_fp16_vector 1 #endif /* GL_NV_shader_atomic_fp16_vector */ @@ -10131,6 +10389,10 @@ GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLs #define GL_NV_shader_thread_shuffle 1 #endif /* GL_NV_shader_thread_shuffle */ +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + #ifndef GL_NV_tessellation_program5 #define GL_NV_tessellation_program5 1 #define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 @@ -10901,6 +11163,26 @@ GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot #define GL_NV_viewport_array2 1 #endif /* GL_NV_viewport_array2 */ +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + #ifndef GL_OML_interlace #define GL_OML_interlace 1 #define GL_INTERLACE_OML 0x8980 @@ -10928,6 +11210,7 @@ GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 #define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); diff --git a/3rdparty/ffmpeg b/3rdparty/ffmpeg index 8dd84dc1ea..2f6023d14a 160000 --- a/3rdparty/ffmpeg +++ b/3rdparty/ffmpeg @@ -1 +1 @@ -Subproject commit 8dd84dc1ea8bc70da1a345109383f62974a9c2fc +Subproject commit 2f6023d14a09e6fc1babbb8b31231249719e9240 diff --git a/Vulkan/Vulkan-LoaderAndValidationLayers b/Vulkan/Vulkan-LoaderAndValidationLayers index 64d375f52e..55974c1934 160000 --- a/Vulkan/Vulkan-LoaderAndValidationLayers +++ b/Vulkan/Vulkan-LoaderAndValidationLayers @@ -1 +1 @@ -Subproject commit 64d375f52e2011964e196710ca78b0d4d68b20d0 +Subproject commit 55974c1934277059423f01cbce11d33efe9bdf87 diff --git a/Vulkan/glslang b/Vulkan/glslang index 2921e0c54a..5d89d4d483 160000 --- a/Vulkan/glslang +++ b/Vulkan/glslang @@ -1 +1 @@ -Subproject commit 2921e0c54a95264a6fd193c79c814f2869ef9a2d +Subproject commit 5d89d4d48399d45fa1df3c1789d1335899d1e38d diff --git a/asmjit b/asmjit index b0dad1af25..6758955e8c 160000 --- a/asmjit +++ b/asmjit @@ -1 +1 @@ -Subproject commit b0dad1af25fb141bf2b20cf29392194886448832 +Subproject commit 6758955e8c0e7d74fc65c2736a4d007e09f770ca diff --git a/rpcs3/Crypto/lz.cpp b/rpcs3/Crypto/lz.cpp index b56ac78e6e..c7f51bae50 100644 --- a/rpcs3/Crypto/lz.cpp +++ b/rpcs3/Crypto/lz.cpp @@ -120,7 +120,7 @@ int decode_word(unsigned char *ptr, int index, int *bit_flag, unsigned int *rang int decompress(unsigned char *out, unsigned char *in, unsigned int size) { - int result; + __int64 result; unsigned char *tmp = new unsigned char[0xCC8]; diff --git a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp index 471d4309c5..08eb458279 100644 --- a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp @@ -95,7 +95,8 @@ s32 cellAudioOutSetDeviceMode() s32 cellAudioInSetDeviceMode() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellAvconfExt); + return CELL_OK; } s32 cellAudioInRegisterDevice() diff --git a/rpcs3/Emu/Cell/Modules/cellFont.cpp b/rpcs3/Emu/Cell/Modules/cellFont.cpp index 82e39b32bd..7c20a11c4e 100644 --- a/rpcs3/Emu/Cell/Modules/cellFont.cpp +++ b/rpcs3/Emu/Cell/Modules/cellFont.cpp @@ -554,7 +554,7 @@ s32 cellFontExtend(u32 a1, u32 a2, u32 a3) //Something happens } //Something happens? - return CELL_OK; + return -1; } s32 cellFontRenderCharGlyphImageVertical() @@ -587,7 +587,8 @@ s32 cellFontGraphicsGetDrawType() s32 cellFontGetKerning() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellFont); + return CELL_OK; } s32 cellFontGetRenderScaledKerning() @@ -622,7 +623,8 @@ s32 cellFontGetEffectWeight() s32 cellFontGetScalePixel() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellFont); + return CELL_OK; } s32 cellFontClearFileCache() @@ -637,7 +639,8 @@ s32 cellFontAdjustFontScaling() s32 cellFontSetupRenderScalePoint() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellFont); + return CELL_OK; } s32 cellFontGlyphGetVerticalShift() diff --git a/rpcs3/Emu/Cell/Modules/cellFs.cpp b/rpcs3/Emu/Cell/Modules/cellFs.cpp index 5b634204da..bd9cf127bc 100644 --- a/rpcs3/Emu/Cell/Modules/cellFs.cpp +++ b/rpcs3/Emu/Cell/Modules/cellFs.cpp @@ -892,7 +892,8 @@ s32 cellFsChangeFileSizeByFdWithoutAllocation() s32 cellFsSetDiscReadRetrySetting() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellFs); + return CELL_OK; } s32 cellFsRegisterConversionCallback() diff --git a/rpcs3/Emu/Cell/Modules/cellGame.cpp b/rpcs3/Emu/Cell/Modules/cellGame.cpp index c901637cb4..2961ac7f8e 100644 --- a/rpcs3/Emu/Cell/Modules/cellGame.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGame.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/System.h" #include "Emu/IdManager.h" #include "Emu/Cell/PPUModule.h" @@ -181,7 +181,8 @@ s32 cellHddGameCheck2() s32 cellHddGameGetSizeKB() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGame); + return CELL_OK; } s32 cellHddGameSetSystemVer() @@ -191,7 +192,8 @@ s32 cellHddGameSetSystemVer() s32 cellHddGameExitBroken() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGame); + return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp index caa8ddf312..37dc2340d7 100644 --- a/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGcmSys.cpp @@ -1136,7 +1136,8 @@ void cellGcmSetDefaultCommandBuffer() s32 cellGcmSetDefaultCommandBufferAndSegmentWordSize() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGcmSys); + return CELL_OK; } //------------------------------------------------------------------------ @@ -1205,12 +1206,14 @@ s32 cellGcmSetTile(u8 index, u8 location, u32 offset, u32 size, u32 pitch, u8 co s32 _cellGcmFunc2() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGcmSys); + return CELL_OK; } s32 _cellGcmFunc3() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGcmSys); + return CELL_OK; } s32 _cellGcmFunc4() @@ -1220,7 +1223,8 @@ s32 _cellGcmFunc4() s32 _cellGcmFunc13() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellGcmSys); + return CELL_OK; } s32 _cellGcmFunc38() diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp index 99f78b0e10..2604f00aeb 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp @@ -10,9 +10,110 @@ extern logs::channel cellSysutil; -s32 cellMsgDialogOpen() +s32 cellMsgDialogOpen(u32 type, vm::cptr msgString, vm::ptr callback, vm::ptr userData, vm::ptr extParam) { - fmt::throw_exception("Unimplemented" HERE); + cellSysutil.warning("cellMsgDialogOpen(type=0x%x, msgString=%s, callback=*0x%x, userData=*0x%x, extParam=*0x%x)", type, msgString, callback, userData, extParam); + + if (!msgString || std::strlen(msgString.get_ptr()) >= 0x200 || type & -0x33f8) + { + return CELL_MSGDIALOG_ERROR_PARAM; + } + + const MsgDialogType _type = { type }; + + switch (_type.button_type.unshifted()) + { + case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_NONE: + { + if (_type.default_cursor || _type.progress_bar_count > 2) + { + return CELL_MSGDIALOG_ERROR_PARAM; + } + + break; + } + + case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_YESNO: + { + if (_type.default_cursor > 1 || _type.progress_bar_count) + { + return CELL_MSGDIALOG_ERROR_PARAM; + } + + break; + } + + case CELL_MSGDIALOG_TYPE_BUTTON_TYPE_OK: + { + if (_type.default_cursor || _type.progress_bar_count) + { + return CELL_MSGDIALOG_ERROR_PARAM; + } + + break; + } + + default: return CELL_MSGDIALOG_ERROR_PARAM; + } + + const auto dlg = fxm::import(Emu.GetCallbacks().get_msg_dialog); + + if (!dlg) + { + return CELL_SYSUTIL_ERROR_BUSY; + } + + if (_type.se_mute_on) + { + // TODO + } + + if (_type.se_normal) + { + cellSysutil.warning(msgString.get_ptr()); + } + else + { + cellSysutil.error(msgString.get_ptr()); + } + + dlg->type = _type; + + dlg->on_close = [callback, userData, wptr = std::weak_ptr(dlg)](s32 status) + { + const auto dlg = wptr.lock(); + + if (dlg && dlg->state.compare_and_swap_test(MsgDialogState::Open, MsgDialogState::Close)) + { + if (callback) + { + sysutil_register_cb([=](ppu_thread& ppu) -> s32 + { + callback(ppu, status, userData); + return CELL_OK; + }); + } + + fxm::remove(); + } + }; + + atomic_t result(false); + + // Run asynchronously in GUI thread + Emu.CallAfter([&]() + { + dlg->Create(msgString.get_ptr()); + result = true; + }); + + while (!result) + { + CHECK_EMU_STATUS; + std::this_thread::sleep_for(1ms); + } + + return CELL_OK; } s32 cellMsgDialogOpen2(u32 type, vm::cptr msgString, vm::ptr callback, vm::ptr userData, vm::ptr extParam) diff --git a/rpcs3/Emu/Cell/Modules/cellNetCtl.cpp b/rpcs3/Emu/Cell/Modules/cellNetCtl.cpp index 2646942bc2..b894b0ffd5 100644 --- a/rpcs3/Emu/Cell/Modules/cellNetCtl.cpp +++ b/rpcs3/Emu/Cell/Modules/cellNetCtl.cpp @@ -139,7 +139,8 @@ s32 cellNetCtlGetNatInfo(vm::ptr natInfo) s32 cellGameUpdateInit() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(cellNetCtl); + return CELL_OK; } s32 cellGameUpdateTerm() diff --git a/rpcs3/Emu/Cell/Modules/cellPngDec.cpp b/rpcs3/Emu/Cell/Modules/cellPngDec.cpp index 43982a9571..2a9a2a0ca5 100644 --- a/rpcs3/Emu/Cell/Modules/cellPngDec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPngDec.cpp @@ -634,7 +634,7 @@ s32 pngDecodeData(ppu_thread& ppu, PHandle handle, PStream stream, vm::ptr d } // Calculate the image size - u32 image_size = stream->out_param.outputWidthByte * stream->out_param.outputHeight; + unsigned __int64 image_size = stream->out_param.outputWidthByte * stream->out_param.outputHeight; // Buffer for storing the image std::vector png(image_size); diff --git a/rpcs3/Emu/Cell/Modules/cellSysutil.cpp b/rpcs3/Emu/Cell/Modules/cellSysutil.cpp index 677d3aee1c..d81601c045 100644 --- a/rpcs3/Emu/Cell/Modules/cellSysutil.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSysutil.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Utilities/Config.h" #include "Emu/System.h" #include "Emu/IdManager.h" @@ -380,7 +380,8 @@ s32 cellSysutilSetBgmPlaybackExtraParam() s32 cellSysutilRegisterCallbackDispatcher() { - fmt::throw_exception("Unimplemented" HERE); + cellSysutil.todo("cellSysutilRegisterCallbackDispatcher()"); + return CELL_OK; } s32 cellSysutilPacketWrite() @@ -419,6 +420,173 @@ s32 cellSysutil_E1EC7B6A() return CELL_OK; } +s32 cellSysutil_E186F9AC() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_B47470E1() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} +s32 cellSysutil_CFAD36DE() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_2CD62587() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_6BA1D72F() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_E77FAFB5() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_20957CD4() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_75AA7373() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_5EC145E2() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_2D96313F() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_6EEE1B61() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_8AD11D24() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_134034CE() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_79EFF338() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_40719C8C() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_0B8D63AE() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_35F7ED00() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_40C7538E0() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_D3CDD694() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_0633EDC2() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_58B963E5() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_933B103D() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_FB1E70A0() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_6AF9FD89() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_505FA917() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_44F288A7() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_4986187C() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + +s32 cellSysutil_A297525E() +{ + UNIMPLEMENTED_FUNC(cellSysutil); + return CELL_OK; +} + extern void cellSysutil_SaveData_init(); extern void cellSysutil_GameData_init(); extern void cellSysutil_MsgDialog_init(); @@ -469,5 +637,43 @@ DECLARE(ppu_module_manager::cellSysutil)("cellSysutil", []() REG_FUNC(cellSysutil, cellSysutilGameExit_I); REG_FUNC(cellSysutil, cellSysutilGamePowerOff_I); REG_FUNC(cellSysutil, cellSysutilGameReboot_I); + REG_FNID(cellSysutil, 0xE1EC7B6A, cellSysutil_E1EC7B6A); + REG_FNID(cellSysutil, 0xE186F9AC, cellSysutil_E186F9AC); + REG_FNID(cellSysutil, 0xB47470E1, cellSysutil_B47470E1); + REG_FNID(cellSysutil, 0xCFAD36DE, cellSysutil_CFAD36DE); + REG_FNID(cellSysutil, 0x2CD62587, cellSysutil_2CD62587); + REG_FNID(cellSysutil, 0x6BA1D72F, cellSysutil_6BA1D72F); + REG_FNID(cellSysutil, 0xE77FAFB5, cellSysutil_E77FAFB5); + REG_FNID(cellSysutil, 0x20957CD4, cellSysutil_20957CD4); + REG_FNID(cellSysutil, 0x75AA7373, cellSysutil_75AA7373); + REG_FNID(cellSysutil, 0x5EC145E2, cellSysutil_5EC145E2); + REG_FNID(cellSysutil, 0x2D96313F, cellSysutil_2D96313F); + REG_FNID(cellSysutil, 0x6EEE1B61, cellSysutil_6EEE1B61); + REG_FNID(cellSysutil, 0x8AD11D24, cellSysutil_8AD11D24); + REG_FNID(cellSysutil, 0x134034CE, cellSysutil_134034CE); + REG_FNID(cellSysutil, 0x79EFF338, cellSysutil_79EFF338); + REG_FNID(cellSysutil, 0x40719C8C, cellSysutil_40719C8C); + REG_FNID(cellSysutil, 0x0B8D63AE, cellSysutil_0B8D63AE); + + REG_FNID(cellSysutil, 0x35F7ED00, cellSysutil_35F7ED00); //The Fight + REG_FNID(cellSysutil, 0x40C7538E, cellSysutil_40C7538E0); //The Fight + REG_FNID(cellSysutil, 0xD3CDD694, cellSysutil_D3CDD694); //The Fight + + REG_FNID(cellSysutil, 0x0633EDC2, cellSysutil_0633EDC2); //Killzone 3 + + REG_FNID(cellSysutil, 0x58B963E5, cellSysutil_58B963E5); //Super Stardust HD + + REG_FNID(cellSysutil, 0x933B103D, cellSysutil_933B103D); //Kung fuu rider + + REG_FNID(cellSysutil, 0xFB1E70A0, cellSysutil_FB1E70A0); //Libscreenshot + + REG_FNID(cellSysutil, 0x6AF9FD89, cellSysutil_6AF9FD89); //DBZ Burst Limit + + REG_FNID(cellSysutil, 0x505FA917, cellSysutil_505FA917); //Infamous 2 + + REG_FNID(cellSysutil, 0x44F288A7, cellSysutil_44F288A7); //Big Sky Infinity + REG_FNID(cellSysutil, 0x4986187C, cellSysutil_4986187C); //Big Sky Infinity + + REG_FNID(cellSysutil, 0xA297525E, cellSysutil_A297525E); //THE KING OF FIGHTERS XII }); diff --git a/rpcs3/Emu/Cell/Modules/cellVdec.cpp b/rpcs3/Emu/Cell/Modules/cellVdec.cpp index 2cb793059a..df4080f43c 100644 --- a/rpcs3/Emu/Cell/Modules/cellVdec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVdec.cpp @@ -484,6 +484,11 @@ s32 cellVdecDecodeAu(u32 handle, CellVdecDecodeMode mode, vm::cptr format, vm::ptrcolorMatrixType != CELL_VDEC_COLOR_MATRIX_TYPE_BT709) { - fmt::throw_exception("Unknown colorMatrixType (%d)" HERE, format->colorMatrixType); + LOG_ERROR(HLE, "Unknown colorMatrixType (%d)" HERE, format->colorMatrixType); } if (alpha_plane) diff --git a/rpcs3/Emu/Cell/Modules/sceNp.cpp b/rpcs3/Emu/Cell/Modules/sceNp.cpp index 85f9a9617a..54f4e4c395 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" @@ -1478,12 +1478,14 @@ s32 _sceNpSysutilClientFree() s32 _Z33_sce_np_sysutil_send_empty_packetiPN16sysutil_cxmlutil11FixedMemoryEPKcS3_() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp); + return CELL_OK; } s32 _Z27_sce_np_sysutil_send_packetiRN4cxml8DocumentE() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp); + return CELL_OK; } s32 _Z36_sce_np_sysutil_recv_packet_fixedmemiPN16sysutil_cxmlutil11FixedMemoryERN4cxml8DocumentERNS2_7ElementE() @@ -1498,7 +1500,8 @@ s32 _Z40_sce_np_sysutil_recv_packet_fixedmem_subiPN16sysutil_cxmlutil11FixedMemo s32 _Z27_sce_np_sysutil_recv_packetiRN4cxml8DocumentERNS_7ElementE() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp); + return CELL_OK; } s32 _Z29_sce_np_sysutil_cxml_set_npidRN4cxml8DocumentERNS_7ElementEPKcPK7SceNpId() @@ -1518,7 +1521,8 @@ s32 _Z37sce_np_matching_set_matching2_runningb() s32 _Z32_sce_np_sysutil_cxml_prepare_docPN16sysutil_cxmlutil11FixedMemoryERN4cxml8DocumentEPKcRNS2_7ElementES6_i() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp); + return CELL_OK; } s32 sceNp_AFC62605() @@ -1527,6 +1531,12 @@ s32 sceNp_AFC62605() return CELL_OK; } +s32 sceNp_A41DDED6() +{ + UNIMPLEMENTED_FUNC(sceNp); + return CELL_OK; +} + DECLARE(ppu_module_manager::sceNp)("sceNp", []() { REG_FUNC(sceNp, sceNpInit); @@ -1761,4 +1771,5 @@ DECLARE(ppu_module_manager::sceNp)("sceNp", []() REG_FUNC(sceNp, _Z37sce_np_matching_set_matching2_runningb); REG_FUNC(sceNp, _Z32_sce_np_sysutil_cxml_prepare_docPN16sysutil_cxmlutil11FixedMemoryERN4cxml8DocumentEPKcRNS2_7ElementES6_i); REG_FNID(sceNp, 0xAFC62605, sceNp_AFC62605); + REG_FNID(sceNp, 0xA41DDED6, sceNp_A41DDED6); //NpCommerce2 Splatherhouse }); diff --git a/rpcs3/Emu/Cell/Modules/sceNp2.cpp b/rpcs3/Emu/Cell/Modules/sceNp2.cpp index 70c3256481..d8c62b806d 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp2.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp2.cpp @@ -234,7 +234,8 @@ s32 sceNpMatching2SetSignalingOptParam() s32 sceNpMatching2RegisterContextCallback() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp2); + return CELL_OK; } s32 sceNpMatching2SendRoomChatMessage() @@ -274,7 +275,8 @@ s32 sceNpMatching2GrantRoomOwner() s32 sceNpMatching2CreateContext() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp2); + return CELL_OK; } s32 sceNpMatching2GetSignalingOptParamLocal() @@ -324,12 +326,14 @@ s32 sceNpMatching2DeleteServerContext() s32 sceNpMatching2SetDefaultRequestOptParam() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp2); + return CELL_OK; } s32 sceNpMatching2RegisterRoomEventCallback() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp2); + return CELL_OK; } s32 sceNpMatching2GetRoomPasswordLocal() @@ -379,7 +383,8 @@ s32 sceNpMatching2SetLobbyMemberDataInternal() s32 sceNpMatching2RegisterRoomMessageCallback() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sceNp2); + return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/sysPrxForUser.cpp b/rpcs3/Emu/Cell/Modules/sysPrxForUser.cpp index 284c970b90..9b096c86a4 100644 --- a/rpcs3/Emu/Cell/Modules/sysPrxForUser.cpp +++ b/rpcs3/Emu/Cell/Modules/sysPrxForUser.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" @@ -176,6 +176,23 @@ s32 console_write(vm::ptr data, u32 len) return CELL_OK; } +s32 sysPrxForUser_B5D5F64E() +{ + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; +} + +s32 sysPrxForUser_3EF17F8C() +{ + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; +} + +s32 sysPrxForUser_9FB6228E() +{ + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; +} extern void sysPrxForUser_sys_lwmutex_init(); extern void sysPrxForUser_sys_lwcond_init(); @@ -223,4 +240,7 @@ DECLARE(ppu_module_manager::sysPrxForUser)("sysPrxForUser", []() REG_FUNC(sysPrxForUser, console_getc); REG_FUNC(sysPrxForUser, console_putc); REG_FUNC(sysPrxForUser, console_write); + REG_FNID(sysPrxForUser, 0xB5D5F64E, sysPrxForUser_B5D5F64E); + REG_FNID(sysPrxForUser, 0x3EF17F8C, sysPrxForUser_3EF17F8C); //Np_Util Uncharted 3 + REG_FNID(sysPrxForUser, 0x9FB6228E, sysPrxForUser_9FB6228E); //Np_commerce2 Splatherhouse }); diff --git a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp index e95c4f2044..8d8b33be91 100644 --- a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp @@ -354,7 +354,8 @@ s32 _sys_vsprintf() s32 _sys_qsort() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; } void sysPrxForUser_sys_libc_init() diff --git a/rpcs3/Emu/Cell/Modules/sys_mempool.cpp b/rpcs3/Emu/Cell/Modules/sys_mempool.cpp index 07d6ad666a..fcfb26e15f 100644 --- a/rpcs3/Emu/Cell/Modules/sys_mempool.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_mempool.cpp @@ -20,7 +20,8 @@ struct memory_pool_t s32 sys_mempool_allocate_block() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; } s32 sys_mempool_create(vm::ptr mempool, vm::ptr chunk, const u64 chunk_size, const u64 block_size, const u64 ralignment) diff --git a/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp b/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp index a7f2bd06d8..29aaed3676 100644 --- a/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp @@ -103,12 +103,14 @@ void sys_ppu_thread_once(ppu_thread& ppu, vm::ptr> once_ctrl, v s32 sys_ppu_thread_register_atexit() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; } s32 sys_ppu_thread_unregister_atexit() { - fmt::throw_exception("Unimplemented" HERE); + UNIMPLEMENTED_FUNC(sysPrxForUser); + return CELL_OK; } void sysPrxForUser_sys_ppu_thread_init() diff --git a/rpcs3/Emu/Cell/PPUInterpreter.cpp b/rpcs3/Emu/Cell/PPUInterpreter.cpp index d5f7671dfc..d1023cde5f 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/PPUInterpreter.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/System.h" #include "PPUThread.h" #include "PPUInterpreter.h" @@ -292,12 +292,15 @@ const g_ppu_scale_table; bool ppu_interpreter::MFVSCR(ppu_thread& ppu, ppu_opcode_t op) { - fmt::throw_exception("MFVSCR instruction at 0x%x (%s)", ppu.cia, Emu.GetTitleID()); + ppu.vr[op.vd].clear(); + ppu.vr[op.vd]._u32[0] = ppu.vscr.vscr; + return true; } bool ppu_interpreter::MTVSCR(ppu_thread& ppu, ppu_opcode_t op) { - LOG_WARNING(PPU, "MTVSCR"); + ppu.vscr.vscr = ppu.vr[op.vb]._u32[0]; + ppu.vscr.X = ppu.vscr.Y = 0; return true; } @@ -2181,7 +2184,7 @@ bool ppu_interpreter::TW(ppu_thread& ppu, ppu_opcode_t op) ((u32)a < (u32)b && (op.bo & 0x2)) || ((u32)a >(u32)b && (op.bo & 0x1))) { - fmt::throw_exception("Trap!" HERE); + LOG_ERROR(PPU, "Trap! (0x%x)" HERE, (u32) TW); } return true; @@ -2306,7 +2309,7 @@ bool ppu_interpreter::CNTLZW(ppu_thread& ppu, ppu_opcode_t op) bool ppu_interpreter::SLD(ppu_thread& ppu, ppu_opcode_t op) { - const u32 n = ppu.gpr[op.rb]; + const u64 n = ppu.gpr[op.rb]; ppu.gpr[op.ra] = UNLIKELY(n & 0x40) ? 0 : ppu.gpr[op.rs] << n; if (UNLIKELY(op.rc)) ppu_cr_set(ppu, 0, ppu.gpr[op.ra], 0); return true; @@ -3017,7 +3020,7 @@ bool ppu_interpreter::SRW(ppu_thread& ppu, ppu_opcode_t op) bool ppu_interpreter::SRD(ppu_thread& ppu, ppu_opcode_t op) { - const u32 n = ppu.gpr[op.rb]; + const u64 n = ppu.gpr[op.rb]; ppu.gpr[op.ra] = UNLIKELY(n & 0x40) ? 0 : ppu.gpr[op.rs] >> n; if (UNLIKELY(op.rc)) ppu_cr_set(ppu, 0, ppu.gpr[op.ra], 0); return true; diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 2cae4fdab9..5d58d11263 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Utilities/Config.h" #include "Utilities/VirtualMemory.h" #include "Emu/Memory/Memory.h" @@ -415,7 +415,11 @@ u32 ppu_thread::stack_push(u32 size, u32 align_v) if (context.gpr[1] < context.stack_addr) { - fmt::throw_exception("Stack overflow (size=0x%x, align=0x%x, SP=0x%llx, stack=*0x%x)" HERE, size, align_v, old_pos, context.stack_addr); + LOG_ERROR(PPU, "Stack overflow (size=0x%x, align=0x%x, SP=0x%llx, stack=*0x%x)" HERE, size, align_v, old_pos, context.stack_addr); + const u32 addr = static_cast(context.gpr[1]); + vm::ps3::_ref>(addr + size) = old_pos; + std::memset(vm::base(addr), 0, size); + return addr; } else { diff --git a/rpcs3/Emu/Cell/PPUThread.h b/rpcs3/Emu/Cell/PPUThread.h index e4e942cb5d..b9b7241181 100644 --- a/rpcs3/Emu/Cell/PPUThread.h +++ b/rpcs3/Emu/Cell/PPUThread.h @@ -17,6 +17,18 @@ enum class ppu_cmd : u32 initialize, // ppu_initialize() }; +union VSCRhdr +{ + u32 vscr; + struct + { + u32 sat : 1; + u32 X : 15; + u32 nj : 1; + u32 Y : 15; + }; +}; + class ppu_thread : public cpu_thread { public: @@ -35,6 +47,7 @@ public: u64 gpr[32] = {}; // General-Purpose Registers f64 fpr[32] = {}; // Floating Point Registers v128 vr[32] = {}; // Vector Registers + VSCRhdr vscr{}; // Vector Status and Control Register alignas(16) bool cr[32] = {}; // Condition Registers (abstract representation) diff --git a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp index 131bfd95a9..f504277e70 100644 --- a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp @@ -917,7 +917,7 @@ void spu_recompiler::BISL(spu_opcode_t op) void spu_recompiler::IRET(spu_opcode_t op) { - fmt::throw_exception("Unimplemented instruction" HERE); + LOG_ERROR(SPU, "Unimplemented instruction" HERE); } void spu_recompiler::BISLED(spu_opcode_t op) @@ -2052,7 +2052,7 @@ void spu_recompiler::BRNZ(spu_opcode_t op) { const u32 target = spu_branch_target(m_pos, op.i16); - if (target == m_pos) fmt::throw_exception("Branch-to-self (0x%05x)" HERE, target); + if (target == m_pos) LOG_ERROR(SPU, "Branch-to-self (0x%05x)" HERE, target); c->cmp(SPU_OFF_32(gpr[op.rt]._u32[3]), 0); diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index e9d139bd8d..2a54f34c16 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -495,7 +495,7 @@ void SPUThread::process_mfc_cmd(u32 cmd) return; } - fmt::throw_exception("Unknown command %s (cmd=0x%x, lsa=0x%x, ea=0x%llx, tag=0x%x, size=0x%x)" HERE, + LOG_ERROR(SPU, "Unknown command %s (cmd=0x%x, lsa=0x%x, ea=0x%llx, tag=0x%x, size=0x%x)" HERE, get_mfc_cmd_name(cmd), cmd, ch_mfc_args.lsa, ch_mfc_args.ea, ch_mfc_args.tag, ch_mfc_args.size); } @@ -1119,7 +1119,7 @@ bool SPUThread::set_ch_value(u32 ch, u32 value) } } - fmt::throw_exception("Unknown/illegal channel (ch=%d [%s], value=0x%x)" HERE, ch, ch < 128 ? spu_ch_name[ch] : "???", value); + LOG_ERROR(SPU, "Unknown/illegal channel (ch=%d [%s], value=0x%x)" HERE, ch, ch < 128 ? spu_ch_name[ch] : "???", value); } bool SPUThread::stop_and_signal(u32 code) diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.cpp b/rpcs3/Emu/Cell/lv2/sys_fs.cpp index f9a47f7a95..7a6586e3be 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_fs.cpp @@ -129,7 +129,18 @@ error_code sys_fs_open(vm::cptr path, s32 flags, vm::ptr fd, s32 mode fmt::throw_exception("sys_fs_open(%s): Invalid or unimplemented flags: %#o" HERE, path, flags); } - fs::file file(local_path, open_mode); + const char *path_ptr = path.get_ptr(); + + if (strstr(path.get_ptr(), "/dev_hdd0") && + strncmp(path.get_ptr(), "/dev_hdd0", 9)) + { + path_ptr = strstr(path_ptr, "/dev_hdd0"); + + LOG_ERROR(HLE, "Path contains device root path but not at the start!"); + LOG_ERROR(HLE, "Path given is (%s), modified to (%s)", path.get_ptr(), path_ptr); + } + + fs::file file(local_path, open_mode); if (!file) { diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index cfbf2f8539..87f6cf978e 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -372,7 +372,7 @@ namespace vm if (!size || (size | addr) % 4096) { - fmt::throw_exception("Invalid arguments (addr=0x%x, size=0x%x)" HERE, addr, size); + LOG_ERROR(MEMORY, "Invalid arguments (addr=0x%x, size=0x%x)" HERE, addr, size); } const u8 flags_inv = flags_set & flags_clear; diff --git a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp index 0e8b16e7bf..46900a9d37 100644 --- a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp +++ b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/Memory/Memory.h" #include "Emu/System.h" @@ -27,6 +27,7 @@ void FragmentProgramDecompiler::SetDst(std::string code, bool append_mask) case 1: code = "(" + code + " * 2.0)"; break; case 2: code = "(" + code + " * 4.0)"; break; case 3: code = "(" + code + " * 8.0)"; break; + case 4: code = "(" + code + " * 6.0)"; break; // Test for Cubixx case 5: code = "(" + code + " / 2.0)"; break; case 6: code = "(" + code + " / 4.0)"; break; case 7: code = "(" + code + " / 8.0)"; break; diff --git a/rpcs3/Emu/RSX/Common/ring_buffer_helper.h b/rpcs3/Emu/RSX/Common/ring_buffer_helper.h index f5d0bc9314..f7dfb9fdd2 100644 --- a/rpcs3/Emu/RSX/Common/ring_buffer_helper.h +++ b/rpcs3/Emu/RSX/Common/ring_buffer_helper.h @@ -61,7 +61,7 @@ public: template size_t alloc(size_t size) { - if (!can_alloc(size)) fmt::throw_exception("Working buffer not big enough" HERE); + if (!can_alloc(size)) LOG_ERROR(RSX, "Working buffer not big enough" HERE); size_t alloc_size = align(size, Alignement); size_t aligned_put_pos = align(m_put_pos, Alignement); if (aligned_put_pos + alloc_size < m_size) diff --git a/rpcs3/Emu/RSX/gcm_enums.cpp b/rpcs3/Emu/RSX/gcm_enums.cpp index 7ec8b31df7..0d18ecefbd 100644 --- a/rpcs3/Emu/RSX/gcm_enums.cpp +++ b/rpcs3/Emu/RSX/gcm_enums.cpp @@ -990,6 +990,7 @@ rsx::blit_engine::context_dma rsx::blit_engine::to_context_dma(u32 in) { switch (in) { + case CELL_GCM_CONTEXT_DMA_MEMORY_HOST_BUFFER: return rsx::blit_engine::context_dma::memory_host_buffer; //Killzone 2 case CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_REPORT: return rsx::blit_engine::context_dma::to_memory_get_report; case CELL_GCM_CONTEXT_DMA_REPORT_LOCATION_MAIN: return rsx::blit_engine::context_dma::report_location_main; } diff --git a/rpcs3/Emu/RSX/gcm_enums.h b/rpcs3/Emu/RSX/gcm_enums.h index f25d2e610b..5a35db93e1 100644 --- a/rpcs3/Emu/RSX/gcm_enums.h +++ b/rpcs3/Emu/RSX/gcm_enums.h @@ -374,6 +374,7 @@ namespace rsx enum class context_dma : u8 { + memory_host_buffer, to_memory_get_report, report_location_main, }; diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index 2f6d7fd609..ca6a841389 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Utilities/Config.h" #include "rsx_methods.h" #include "RSXThread.h" @@ -31,7 +31,7 @@ namespace rsx [[noreturn]] void invalid_method(thread*, u32 _reg, u32 arg) { - fmt::throw_exception("Invalid RSX method 0x%x (arg=0x%x)" HERE, _reg << 2, arg); + LOG_ERROR( RSX, "Invalid RSX method 0x%x (arg=0x%x)" HERE, _reg << 2, arg); } template struct vertex_data_type_from_element_type; @@ -285,6 +285,7 @@ namespace rsx switch (report_dma) { + case blit_engine::context_dma::memory_host_buffer: location = CELL_GCM_LOCATION_MAIN; break; case blit_engine::context_dma::to_memory_get_report: location = CELL_GCM_LOCATION_LOCAL; break; case blit_engine::context_dma::report_location_main: location = CELL_GCM_LOCATION_MAIN; break; default: diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 9f21d33a15..e81ada8f54 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -551,6 +551,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index ec36d84c95..cd0b48a433 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -1288,6 +1288,9 @@ Emu\Cell\Modules + + Emu\Cell\Modules + Emu\Cell\Modules