First Commit

This commit is contained in:
2025-11-18 14:20:05 -07:00
parent be7e8f8ef8
commit 09b8f3a3b8
4463 changed files with 100427 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
gametitle=Michigan - Report from Hell (PAL-M4) (SLES-53073)
[Widescreen 16:9]
gsaspectratio=16:9
author=nemesis2000
// Added conditions for PAL50 and PAL60 (ElHecht)
// 16:9
patch=1,EE,e0011450,extended,0029c3b8 // xxxxxxxx check 0029c3b8 matches value (0000)1450
patch=1,EE,201a70d0,extended,240400c0 // 8444ca00 hor fov pal
patch=1,EE,e0011446,extended,0029c3b8 // xxxxxxxx check 0029c3b8 matches value (0000)1446
patch=1,EE,201a70d0,extended,240400a8 // 8444ca00 hor fov ntsc
patch=1,EE,00184df0,word,3c023f06 // render fix
[No-Interlacing]
gsinterlacemode=1
description=Enhancement test
//No interleacing
patch=1,EE,20103604,extended,64420000
patch=1,EE,201038CC,extended,64420000
[Fog Effect Restoration]
author=Souzooka
description=Restores fog effects which were removed from the PAL release
//The game lacks the call to draw the fog effect in the update loop (in pBattle::Main).
//Thankfully, the draw code still exists due to an (unused?) reference still existing to it in the code.
//Adding the call back reveals that for an unknown reason, the effect is drawn 16 times more opaque than should be.
//However, even without finding the underlying reason for this, we can work around it
//(however this comes with the unfortunate caveat that fog alpha is 16x less precise than the JP version).
//To restore the fog draw, we can remove an unnecessary signed division check for alpha (alpha = (alpha - 1) / 8),
//and use it to draw fog if the alpha is not zero. We expect the range of alpha to be 0x0...0x800 here,
//and the 0x0 case does not use this branch.
//However we still need one extra instruction to preserve the alpha of the fog for the call to
//nWorldFogGenerator::SetFogAlfa.
patch=0,EE,201B1DD8,extended,3C110001 // lui s1,0x0001 // this has to be saved over a function call (s1 is saved, but unused at this point)
//then at 1B1DE4 we can write some instructions to conditionally call the draw function
//while preserving the alpha argument:
patch=0,EE,201B1DE4,extended,02511021 // addu v0,s2,s1
patch=0,EE,201B1DE8,extended,8C43D0A0 // lw v1,-0x2F60(v0)
patch=0,EE,201B1DEC,extended,00031200 // sll v0,v1,0x08
patch=0,EE,201B1DF0,extended,00431023 // subu v0,v0,v1
patch=0,EE,201B1DF4,extended,10400003 // beq v0,zero,0x001B1E04
patch=0,EE,201B1DF8,extended,00028AC3 // sra s1,v0,0x0B
patch=0,EE,201B1DFC,extended,0C05DFC8 // jal z_un_00177f20 // (nWorldFogGenerator::Draw)
patch=0,EE,201B1E00,extended,26440820 // addiu a0,s2,0x820
patch=0,EE,201B1E04,extended,02202821 // addu a1,s1,zero
//Now, the fog is 16 times as opaque due to the unknown bug mentioned previously,
//but this can be worked around by modifying the return value of nWorldFogGenerator::GetAlpha.
//Specifically at 00178064 replace `andi v0, 0xFF` with `sra v0, 4`.
//If the underlying bug is found and fixed, this instruction can be restored to its original form.
patch=0,EE,20178064,extended,00021103 // sra v0,v0,0x04