Fix enemy scan text on aspect ratios different then 16:9
This commit is contained in:
parent
e69a91d83e
commit
98ed61b776
|
@ -116,6 +116,8 @@ void MainContext::FF13_InitializeGameAddresses()
|
||||||
ff13_base_controller_input_address_ptr = (byte**)(baseAddr + 0x02411220);
|
ff13_base_controller_input_address_ptr = (byte**)(baseAddr + 0x02411220);
|
||||||
ff13_vibration_low_set_zero_address = baseAddr + 0x4210DF;
|
ff13_vibration_low_set_zero_address = baseAddr + 0x4210DF;
|
||||||
ff13_vibration_high_set_zero_address = baseAddr + 0x4210F3;
|
ff13_vibration_high_set_zero_address = baseAddr + 0x4210F3;
|
||||||
|
ff13_internal_res_w = (uint32_t*)(baseAddr + 0x22E5168);
|
||||||
|
ff13_internal_res_h = ff13_internal_res_w + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainContext::FF13_OneTimeFixes() {
|
void MainContext::FF13_OneTimeFixes() {
|
||||||
|
@ -167,12 +169,12 @@ void MainContext::FF13_FixMissingEnemyScan() {
|
||||||
// The game incorrectly uses the same values here regardless of the resolution.
|
// The game incorrectly uses the same values here regardless of the resolution.
|
||||||
|
|
||||||
PrintLog("Patching libra info box instructions to take in account the game resolution...");
|
PrintLog("Patching libra info box instructions to take in account the game resolution...");
|
||||||
|
const float originalHeight = 720.0F;
|
||||||
|
const float resolutionFactorH = (float)*ff13_internal_res_h / originalHeight;
|
||||||
|
|
||||||
const float resolutionFactor = (float)context.backbufferWidth / 1280.0F;
|
const uint32_t rectHeight = (uint32_t)ceil(130.0F * resolutionFactorH);
|
||||||
|
const uint32_t rectWidth = *ff13_internal_res_w;
|
||||||
const uint32_t rectHeight = (uint32_t)ceil(130.0F * resolutionFactor);
|
const uint32_t rectPosY = (uint32_t)(496.0F * resolutionFactorH);
|
||||||
const uint32_t rectWidth = context.backbufferWidth;
|
|
||||||
const uint32_t rectPosY = (uint32_t)(496.0F * resolutionFactor);
|
|
||||||
|
|
||||||
context.ChangeMemoryProtectionToReadWriteExecute(ff13_enemy_scan_box_code_address, 18);
|
context.ChangeMemoryProtectionToReadWriteExecute(ff13_enemy_scan_box_code_address, 18);
|
||||||
|
|
||||||
|
@ -375,7 +377,7 @@ void MainContext::ChangeMemoryProtectionToReadWriteExecute(void* address, const
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainContext::PrintVersionInfo() {
|
void MainContext::PrintVersionInfo() {
|
||||||
PrintLog("FF13Fix 1.4.0 https://github.com/rebtd7/FF13Fix");
|
PrintLog("FF13Fix 1.4.1 https://github.com/rebtd7/FF13Fix");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainContext::AreAlmostTheSame(float a, float b) {
|
bool MainContext::AreAlmostTheSame(float a, float b) {
|
||||||
|
|
|
@ -113,7 +113,6 @@ bool MainContext::ApplyPresentationParameters(D3DPRESENT_PARAMETERS* pPresentati
|
||||||
{
|
{
|
||||||
if (pPresentationParameters)
|
if (pPresentationParameters)
|
||||||
{
|
{
|
||||||
context.backbufferWidth = pPresentationParameters->BackBufferWidth;
|
|
||||||
if (config.GetTripleBuffering())
|
if (config.GetTripleBuffering())
|
||||||
{
|
{
|
||||||
pPresentationParameters->BackBufferCount = 3;
|
pPresentationParameters->BackBufferCount = 3;
|
||||||
|
|
|
@ -85,6 +85,8 @@ private:
|
||||||
byte** ff13_base_controller_input_address_ptr = NULL;
|
byte** ff13_base_controller_input_address_ptr = NULL;
|
||||||
byte* ff13_vibration_high_set_zero_address = NULL;
|
byte* ff13_vibration_high_set_zero_address = NULL;
|
||||||
byte* ff13_vibration_low_set_zero_address = NULL;
|
byte* ff13_vibration_low_set_zero_address = NULL;
|
||||||
|
uint32_t* ff13_internal_res_w;
|
||||||
|
uint32_t* ff13_internal_res_h;
|
||||||
|
|
||||||
byte* FF13_2_SET_FRAME_RATE_INJECTED_CODE = NULL;
|
byte* FF13_2_SET_FRAME_RATE_INJECTED_CODE = NULL;
|
||||||
byte* ff13_2_continuous_scan_instruction_address;
|
byte* ff13_2_continuous_scan_instruction_address;
|
||||||
|
@ -99,8 +101,6 @@ private:
|
||||||
const float FF13_2_MAX_FRAME_CAP = 1000.0F;
|
const float FF13_2_MAX_FRAME_CAP = 1000.0F;
|
||||||
XInputManager* xinputManager;
|
XInputManager* xinputManager;
|
||||||
|
|
||||||
UINT backbufferWidth = 0;
|
|
||||||
|
|
||||||
void FixBehaviorFlagConflict(const DWORD flags_in, DWORD* flags_out);
|
void FixBehaviorFlagConflict(const DWORD flags_in, DWORD* flags_out);
|
||||||
static const std::map<const AutoFixes, const uint32_t> behaviorflags_fixes;
|
static const std::map<const AutoFixes, const uint32_t> behaviorflags_fixes;
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ void XInputManager::VibrationLoop()
|
||||||
const float vibrationStrengthLowFrequency = *vibration_address_low_frequency;
|
const float vibrationStrengthLowFrequency = *vibration_address_low_frequency;
|
||||||
const float vibrationStrengthHighFrequency = *vibration_address_high_frequency;
|
const float vibrationStrengthHighFrequency = *vibration_address_high_frequency;
|
||||||
if (vibrationStrengthLowFrequency || vibrationStrengthHighFrequency) {
|
if (vibrationStrengthLowFrequency || vibrationStrengthHighFrequency) {
|
||||||
SetControllerVibration(vibrationStrengthLowFrequency * maxVibrationStrength, vibrationStrengthHighFrequency * maxVibrationStrength);
|
SetControllerVibration((WORD)(vibrationStrengthLowFrequency * maxVibrationStrength), (WORD)(vibrationStrengthHighFrequency * maxVibrationStrength));
|
||||||
wasVibrating = true;
|
wasVibrating = true;
|
||||||
}
|
}
|
||||||
else if(wasVibrating) {
|
else if(wasVibrating) {
|
||||||
|
|
Loading…
Reference in a new issue