mirror of
				https://github.com/hedge-dev/UnleashedRecomp.git
				synced 2025-10-30 07:11:05 +00:00 
			
		
		
		
	 d36aa26bac
			
		
	
	
		d36aa26bac
		
			
		
	
	
	
	
		
			
			* Specialization constant implementation for Vulkan. * Implement DXIL library linking. * Implement proper reverse Z & fix motion blur flicker. * Mirage API mapping. * Initial work for async PSO. * Further async PSO work. * Set pipeline names. * Handle special layers writing depth. * Handle bones in shadow pipeline. * Fix additive mode setting wrong pipeline field. * Pass models to compilation threads through shared pointers. * Safety improvements. * Allow DXIL linking to happen in parallel. * Display more debug information. * Queue unique models for compilation immediately. * Put async PSO debug printing behind a macro. * Kick off terrain models to pipeline compilation thread the moment they are made. * Hook a different function to do waiting in. * Fix pipelines getting dropped. * Account for ConstTexCoord. * Fix async PSO accounting for alpha to coverage even when MSAA is off. * Remove "has bone" specialization constant. * Sky shader compilation & more debugging helpers. * Assign names to shaders during loading. * Fix string symbol definitions. * Print description of recently compiled render thread pipelines. * Switch to an enum library that doesn't murder IntelliSense. * Precompile pipelines for object icons. * Skip fur pipelines. * Skip printing info for pipelines compiled during loading. * Precompile pipelines for Sonic's mouth, motion blur, and forced transparent objects. * Precompile planar reflection shaders. * Precompile sparkle shaders in loading screens. * Precompile fur shader. * Refactor model traversing to enqueue every single compilation to worker threads. * Dynamically create pipeline threads depending on hardware concurrency. * Fix MSAA depth resolve not accounting for reverse Z. * Integrate smol-v. * Implement PSO caching. * Update ShaderRecomp & remove unused function.
		
			
				
	
	
		
			449 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			449 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
| [main]
 | |
| file_path = "../private/default.xex"
 | |
| out_directory_path = "../ppc"
 | |
| switch_table_file_path = "SWA_switch_tables.toml"
 | |
| 
 | |
| skip_lr = true
 | |
| skip_msr = true
 | |
| ctr_as_local = true
 | |
| xer_as_local = true
 | |
| reserved_as_local = true
 | |
| cr_as_local = true
 | |
| non_argument_as_local = true
 | |
| non_volatile_as_local = true
 | |
| 
 | |
| restgprlr_14_address = 0x831B0B40
 | |
| savegprlr_14_address = 0x831B0AF0
 | |
| restfpr_14_address = 0x831B144C
 | |
| savefpr_14_address = 0x831B1400
 | |
| restvmx_14_address = 0x831B36E8
 | |
| savevmx_14_address = 0x831B3450
 | |
| restvmx_64_address = 0x831B377C
 | |
| savevmx_64_address = 0x831B34E4
 | |
| 
 | |
| longjmp_address = 0x831B6790
 | |
| setjmp_address = 0x831B6AB0
 | |
| 
 | |
| # These functions do not exist in .pdata and do
 | |
| # not analyze properly due to having jump tables
 | |
| functions = [
 | |
|     { address = 0x824E7EF0, size = 0x98 },
 | |
|     { address = 0x824E7F28, size = 0x60 },
 | |
|     { address = 0x82C980E8, size = 0x110 },
 | |
|     { address = 0x82CF7080, size = 0x80 },
 | |
|     { address = 0x82D9AC08, size = 0x78 },
 | |
|     { address = 0x82E86770, size = 0x98 },
 | |
|     { address = 0x82E97E50, size = 0x84 },
 | |
|     { address = 0x82EE2D08, size = 0x154 },
 | |
|     { address = 0x82EF5C38, size = 0x64 },
 | |
|     { address = 0x82EF5D78, size = 0x3F8 },
 | |
|     { address = 0x82F08730, size = 0x2B0 },
 | |
|     { address = 0x82F098C0, size = 0x19C },
 | |
|     { address = 0x82F13980, size = 0xF4 },
 | |
|     { address = 0x82F1D668, size = 0x1E8 },
 | |
|     { address = 0x82F22908, size = 0x20C },
 | |
|     { address = 0x82F25FD8, size = 0x240 },
 | |
|     { address = 0x82F852A0, size = 0xCC },
 | |
|     { address = 0x830DADA0, size = 0x150 },
 | |
|     { address = 0x831487D0, size = 0xD4 },
 | |
|     { address = 0x831530C8, size = 0x258 },
 | |
|     { address = 0x831539E0, size = 0xD0 },
 | |
|     { address = 0x83168940, size = 0x100 },
 | |
|     { address = 0x83168A48, size = 0x11C },
 | |
|     { address = 0x83168B70, size = 0x128 },
 | |
|     { address = 0x83168F18, size = 0x254 },
 | |
|     { address = 0x8316C678, size = 0x78 },
 | |
|     { address = 0x8317CD30, size = 0x50 },
 | |
|     { address = 0x83180700, size = 0x74 },
 | |
|     { address = 0x8319ED58, size = 0x98 },
 | |
|     { address = 0x82455E70, size = 0x84 },
 | |
|     { address = 0x82456DC8, size = 0xD4 },
 | |
|     { address = 0x826ABB70, size = 0x70 },
 | |
|     { address = 0x82893088, size = 0x45C },
 | |
|     { address = 0x82C49540, size = 0x114 },
 | |
|     { address = 0x82DE35D8, size = 0x68 },
 | |
|     { address = 0x82DE3640, size = 0x64 },
 | |
|     { address = 0x82DE36A8, size = 0x5C },
 | |
|     { address = 0x82DE3708, size = 0x198 },
 | |
|     { address = 0x82DE38A0, size = 0x16C },
 | |
|     { address = 0x830B7DD0, size = 0x74 },
 | |
|     { address = 0x831B0BA0, size = 0xA0 },
 | |
|     { address = 0x8305D168, size = 0x278 }
 | |
| ]
 | |
| 
 | |
| invalid_instructions = [
 | |
|     { data = 0x00000000, size = 4 }, # Padding
 | |
|     { data = 0x831B1C90, size = 8 }, # C++ Frame Handler
 | |
|     { data = 0x8324B3BC, size = 8 }, # C Specific Frame Handler
 | |
|     { data = 0x831C8B50, size = 8 },
 | |
|     { data = 0x00485645, size = 44 } # End of .text
 | |
| ]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "IndexBufferLengthMidAsmHook"
 | |
| address = 0x82E26244
 | |
| registers = ["r3"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "SetShadowResolutionMidAsmHook"
 | |
| address = 0x82BAD87C
 | |
| registers = ["r11"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraAspectRatioMidAsmHook"
 | |
| address = 0x82468E84
 | |
| registers = ["r31"]
 | |
| jump_address_on_true = 0x82468E88
 | |
| jump_address_on_false = 0x82468EE0
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraBoostAspectRatioMidAsmHook"
 | |
| address = 0x8246BDA8
 | |
| registers = ["r31", "f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CSDAspectRatioMidAsmHook"
 | |
| address = 0x830C0A28
 | |
| registers = ["f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "ResetScoreOnRestartMidAsmHook"
 | |
| address = 0x82304374
 | |
| 
 | |
| # Disable hint volumes
 | |
| [[midasm_hook]]
 | |
| name = "DisableHintsMidAsmHook"
 | |
| address = 0x827A2504
 | |
| jump_address_on_true = 0x827A251C
 | |
| 
 | |
| # Disable hint rings
 | |
| [[midasm_hook]]
 | |
| name = "DisableHintsMidAsmHook"
 | |
| address = 0x827A2E34
 | |
| jump_address_on_true = 0x827A2E4C
 | |
| 
 | |
| # Disable navigation volumes
 | |
| [[midasm_hook]]
 | |
| name = "DisableControlTutorialMidAsmHook"
 | |
| address = 0x827AA5EC
 | |
| jump_address_on_true = 0x827AA604
 | |
| 
 | |
| # Disable Werehog button prompts
 | |
| [[midasm_hook]]
 | |
| name = "DisableEvilControlTutorialMidAsmHook"
 | |
| address = 0x823A4FF0
 | |
| registers = ["r4", "r5"]
 | |
| return_on_false = true
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "SetXButtonHomingMidAsmHook"
 | |
| address = 0x8237AC88
 | |
| registers = ["r30"]
 | |
| 
 | |
| # Down force HFR fix
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x8234AB94
 | |
| registers = ["f1"]
 | |
| 
 | |
| # 2D spline HFR fix
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x82345468
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x8234547C
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x823454B0
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x82345534
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x823455EC
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x8234564C
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x823457A8
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x823458A0
 | |
| registers = ["f1"]
 | |
| 
 | |
| # Lever/door/panchinko pad acceleration fix
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x82418350
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x824178A0
 | |
| registers = ["f1"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "HighFrameRateDeltaTimeFixMidAsmHook"
 | |
| address = 0x82419408
 | |
| registers = ["f1"]
 | |
| 
 | |
| # 3D camera HFR fixes
 | |
| [[midasm_hook]]
 | |
| name = "CameraDeltaTimeFixMidAsmHook"
 | |
| address = 0x8247DD38 # Slope
 | |
| registers = ["f0", "f31"]
 | |
| jump_address = 0x8247DD3C
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247DD48 # Slope
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247DDFC # Dash path binormal
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E280 # Target front offset
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E300 # Target
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E3C8 # Target
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E4A0 # Target up positive
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E4E8 # Target up negative
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247E9FC # Position
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247EA84 # Position up negative
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247EA50 # Position up positive
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraDeltaTimeFixMidAsmHook"
 | |
| address = 0x8247ED30 # Distance offset 1
 | |
| registers = ["f0", "f12"]
 | |
| jump_address = 0x8247ED34
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247ED40 # Distance offset 1
 | |
| registers = ["f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraDeltaTimeFixMidAsmHook"
 | |
| address = 0x8247ED54 # Distance offset 2
 | |
| registers = ["f13"]
 | |
| jump_address = 0x8247ED58
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraLerpFixMidAsmHook"
 | |
| address = 0x8247ED64 # Distance offset 2
 | |
| registers = ["f13"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraTargetSideOffsetLerpFixMidAsmHook"
 | |
| address = 0x8247F12C # Target side offset
 | |
| registers = ["v13", "v62"]
 | |
| 
 | |
| # 2D camera HFR fixes
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x824761AC # Player velocity
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x824761B0
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x824762AC # Player position
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x824762B0
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x8247645C # Spherical position
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x82476460
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x82476514 # Target up offset
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x82476518
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x824768A0 # Spherical position
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x824768A4
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DLerpFixMidAsmHook"
 | |
| address = 0x824768C8 # Spherical position
 | |
| registers = ["f0", "f28"]
 | |
| jump_address = 0x824768CC
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "CameraDeltaTimeFixMidAsmHook"
 | |
| address = 0x82476768 # Slope
 | |
| registers = ["f1", "f30"]
 | |
| jump_address = 0x8247676C
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "Camera2DSlopeLerpFixMidAsmHook"
 | |
| address = 0x82476778 # Slope
 | |
| registers = ["f1", "f28"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "GetStageIDMidAsmHook"
 | |
| address = 0x82528198
 | |
| registers = ["r5"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostUnleashMidAsmHook"
 | |
| address = 0x823C6788
 | |
| registers = ["r30"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "MovieRendererMidAsmHook"
 | |
| address = 0x82AE3200
 | |
| registers = ["r3"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "WerehogBattleMusicMidAsmHook"
 | |
| address = 0x82B47278
 | |
| registers = ["r11"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "WerehogBattleMusicMidAsmHook"
 | |
| address = 0x82B47728
 | |
| registers = ["r11"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "MotionBlurMidAsmHook"
 | |
| address = 0x82BA99D0
 | |
| jump_address_on_false = 0x82BAA544
 | |
| 
 | |
| # Bloom glare resolution fix
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA3E9C
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA3EF4
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA3F4C
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA3F9C
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA4000
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BA4064
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| # Light shaft resolution fix
 | |
| [[midasm_hook]]
 | |
| name = "PostProcessResolutionFix"
 | |
| address = 0x82BB0EE0
 | |
| registers = ["r4", "f1", "f2"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "LightShaftAspectRatioFix"
 | |
| address = 0x82BB1314
 | |
| registers = ["f28", "f0"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "ParticleTestIndexBufferMidAsmHook"
 | |
| address = 0x827D20A0
 | |
| registers = ["r30"]
 | |
| jump_address_on_true = 0x827D20EC
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "ParticleTestDrawIndexedPrimitiveMidAsmHook"
 | |
| address = 0x827D25AC
 | |
| registers = ["r7"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "LoadingScreenSpeedFixMidAsmHook"
 | |
| address = 0x824DAB60
 | |
| registers = ["r4"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "MotionBlurPrevInvViewProjectionMidAsmHook"
 | |
| address = 0x82BA9E7C
 | |
| registers = ["r10"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "GetDatabaseDataMidAsmHook"
 | |
| address = 0x82E38688 # Model
 | |
| registers = ["r1", "r31"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "GetDatabaseDataMidAsmHook"
 | |
| address = 0x82E39650 # Terrain Model
 | |
| registers = ["r1", "r31"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "GetDatabaseDataMidAsmHook"
 | |
| address = 0x827D614C # Particle Material Binary
 | |
| registers = ["r1", "r29"]
 | |
| 
 | |
| [[midasm_hook]]
 | |
| name = "GetDatabaseDataMidAsmHook"
 | |
| address = 0x827D6018 # Particle Material XML
 | |
| registers = ["r1", "r30"]
 |