Editing Official Configuration Files
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 4: | Line 4: | ||
| type = style | | type = style | ||
| text = To Do: | | text = To Do: | ||
There should be something between 50 and 60 <nowiki>{{official}}</nowiki> <span class="plainlinks">[{{ps3wikiurl}}User_talk:Roxanne#Notebook "PS2 Classics"]</span> {{InvertibleImage|Icon_ps3.png|24px|This Article leads towards PS3 Developer Wiki}} released by Sony.<br>Are there duplicates used for several releases or why we list only | There should be something between 50 and 60 <nowiki>{{official}}</nowiki> <span class="plainlinks">[{{ps3wikiurl}}User_talk:Roxanne#Notebook "PS2 Classics"]</span> {{InvertibleImage|Icon_ps3.png|24px|This Article leads towards PS3 Developer Wiki}} released by Sony.<br>Are there duplicates used for several releases or why we list only 41 here? | ||
Please take a look. Thank you. | Please take a look. Thank you. | ||
}} | }} | ||
Line 10: | Line 10: | ||
====ADK Damashii==== | ====ADK Damashii==== | ||
<br> | '''CLI''' | ||
<br>SLPS-25906 | |||
<pre> | <pre> | ||
--gs-uprender=none | --gs-uprender=none | ||
Line 16: | Line 17: | ||
--force-frame-blend=1 | --force-frame-blend=1 | ||
</pre> | </pre> | ||
====Ape Escape 2==== | |||
<br>SCES-50885 | |||
<br>CLI | |||
<pre> | |||
--gs-use-mipmap=1 | |||
--gs-kernel-cl="mipmap" | |||
--gs-kernel-cl-up="mipmap2x2" | |||
--gs-scanout-offsetx=27 | |||
--vu1-injection=1 | |||
--gs-packed15-fmv-opt=1 | |||
--gs-skip-dirty-flush-on-mipmap=1 | |||
--cop2-accurate-addsub-range=0x3151e8,0x315414 | |||
</pre> | |||
<br>SCES-50885 | |||
<br>LUA | <br>LUA | ||
<pre> | <pre> | ||
local gpr = require("ee-gpr-alias") | |||
-- | require( "ee-hwaddr" ) | ||
-- | apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | ||
local eeObj = getEEObject() | |||
-- -- never gonna die | |||
-- eeInsnReplace( 0x2bd0a0, 0x27bdfff0, 0x03e00008) -- addiu sp,sp,-16 | |||
-- eeInsnReplace( 0x2bd0a4, 0x3c02003e, 0x00000000) -- lui v0,0x3e | |||
local | -- performance fix bug #9789 | ||
local emuObj = getEmuObject() | |||
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } ) | |||
emuObj.SetGsTitleFix( "includeAreaUpdate", "reserved" , {alpha = 0x80000048 } ) | |||
emuObj.SetGsTitleFix( "ignoreUpRender", 50 , { } ) | |||
</pre> | |||
====Arc the Lad: Twilight of the Spirits™==== | |||
SCUS 972.31 | |||
------------ | <br>Cli | ||
<pre> | |||
--gs-force-bilinear=1 | |||
--gs-kernel-cl-up="up2x2Simple" | |||
--lopnor-config=1 | |||
</pre> | |||
SCUS 972.31 | |||
<br>lua | |||
<pre> | |||
require("ee-gpr-alias") | |||
apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | |||
eeObj = getEEObject() | |||
if | -- Bug#8359 (see bugzilla for the detail) | ||
-- Skip FadeSet call if map is 'Scrappe Plateau' and the latest loaded script file is 'evt03B_07_0.moc'. | |||
-- This game seems to have a problem (sensitive) with frame count on the script engine. | |||
-- On our emulator, frame counting is slightly different from the original. | |||
-- therefore it reads out 'overun' script command, which is 'cmd_fade' to fade-in. | |||
-- At here, we will skip FADE-IN command if the situation meets the requirement. | |||
skip_fade_flag = { map_name = false, file_name = false } | |||
-- fade skip Bug#8359. skip FadeSet if skip_fade_flag meets the requirement. | |||
eeObj.AddHook( 0x13c464, 0x8e0500c0, function() | |||
-- print(skip_fade_flag.map_name) | |||
-- print(skip_fade_flag.file_name) | |||
if skip_fade_flag.map_name and skip_fade_flag.file_name then | |||
-- print("SKIP FADE") | |||
eeObj.SetPc(0x13c470) | |||
skip_fade_flag.map_name = false | |||
skip_fade_flag.file_name = false | |||
end | |||
end) | |||
-- | -- cmd_read_file(const char* filename) | ||
eeObj.AddHook(0x13dad0, 0x27bdffc0, function() | |||
local | local filename = eeObj.ReadMemStr(eeObj.GetGpr(gpr.a0)) | ||
-- print(string.format("cmd_read_file %s", filename)) | |||
if "chara/evt_camera/evt03B_07_0.moc" == filename then | |||
-- print("skip_fade!") | |||
skip_fade_flag.file_name = true | |||
else | |||
skip_fade_flag.file_name = false | |||
end | |||
end) | |||
-- | -- cmd_map_name(const char* mapname) | ||
eeObj.AddHook(0x13f138, 0x0080282d, function() | |||
local mapname = eeObj.ReadMemStr(eeObj.GetGpr(gpr.a0)) | |||
local | -- print(string.format("cmd_map_name %s", mapname)) | ||
if "Scrappe Plateau" == mapname then | |||
-- print("skip_fade!") | |||
skip_fade_flag.map_name = true | |||
else | |||
skip_fade_flag.map_name = false | |||
end | |||
end) | |||
</pre> | |||
====Canis Canem Edit (Bully)==== | |||
<br>CLI | |||
<pre>--fpu-accurate-mul-fast=1 | |||
--fpu-muldiv-range=0x3fa5c0,0x3fa5c0 | |||
--gs-flush-ad-xyz=SafeZWrite | |||
--vu1-opt-vf00=2 | |||
--vu1-di-bits=0 | |||
--ee-hook=0x001f3ef4,FastForwardClock | |||
--gs-use-deferred-l2h=0 | |||
--vu1-injection=1 | |||
--vu1-mpg-cycles=2500 | |||
--fpu-rsqrt-fast-estimate=0 | |||
--safe-area-min=1.0</pre> | |||
SLES 535.61 | |||
local | <br>LUA | ||
local | <pre>apiRequest(0.1) | ||
-- EA sports cricket 07 bug 9392 | |||
-- Performance fix | |||
local emuObj = getEmuObject() | |||
local thresholdArea = 600 | |||
emuObj.SetGsTitleFix( "ignoreUpRender", thresholdArea , {alpha=0x80000044 , zmsk=1 , tw=4, th=4 } )</pre> | |||
-- | SLUS-21269 | ||
<br>SLUS-21269_features.lua | |||
<pre>This is a substantial file. Over 150 lines with an extensive performance fix. I'm sharing the file itself as a download link. | |||
https://drive.google.com/file/d/12gt2fONqMP1rmEB9UMw3rIpEYbz1dQq8/view | |||
#Official widescreen support.</pre> | |||
====Destroy All Humans==== | |||
SLUS_209.45 | |||
<br>CLI | |||
<pre>--gs-use-mipmap=1 | |||
--gs-kernel-cl="mipmap" | |||
--gs-kernel-cl-up="mipmap2x2" | |||
--gs-ignore-dirty-page-border=1 | |||
--fpu-accurate-addsub-range=0x28bf00,0x28c100 | |||
#Fix for graphical glitches.</pre> | |||
SLUS_209.45 | |||
<br>SLUS-20945_features.lua | |||
<pre>-- Lua 5.3 | |||
-- Title: Destroy All Humans! PS2 - SLUS-20945 (USA) | |||
-- Author: Ernesto Corvi, Adam McInnis | |||
-- Changelog: | |||
apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | |||
local eeObj = getEEObject() | |||
local emuObj = getEmuObject() | |||
local gpr = require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"]) | |||
-- Widescreen | |||
eeObj.AddHook(0x308270, 0x3c0336c5, function() -- Graphics::Script::SetScreenRatio | |||
local | local mode = eeObj.GetGpr(gpr.v0) | ||
-- print(string.format("mode: %08x", mode)) | |||
if mode == 0x36c59d2b then -- widescreen | |||
emuObj.SetDisplayAspectWide() | |||
elseif mode == 0x855a87ef then -- standard | |||
emuObj.SetDisplayAspectNormal() | |||
-- print(string.format(" | |||
if | |||
end | end | ||
end) | |||
eeObj.AddHook(0x3078F4, 0xae0000f4, function() -- Graphics::Renderer::Renderer | |||
local renderer = eeObj.GetGpr(gpr.s0) | |||
eeObj.WriteMemFloat(renderer+0x200, 1.3333333) | |||
eeObj.WriteMemFloat(renderer+0x204, 1.7777777) | |||
eeObj.WriteMem32(renderer+0x208, 2) | |||
end) | |||
emuObj.SetDisplayAspectWide() | |||
-- CRC "settings.display.widescreen" = 0xbcf14d81 | |||
-- $s2 = SaveType (1 = new save) | |||
local overlay = InsnOverlay({ | |||
0x27bdffe0, -- addiu $sp, -0x20 | |||
0xffbf0010, -- sd $ra, 0x10($sp) | |||
0x0c0d49d8, -- jal Core::Memset(void *,int,uint) | |||
0x00000000, -- nop | |||
0x24030001, -- li $v1, 1 | |||
0x1472000b, -- bne $s2, $v1, +11 | |||
0x00000000, -- nop | |||
0x0c09dacc, -- jal UFO::Progress::Get(void) | |||
0x00000000, -- nop | |||
0x3c01bcf1, -- lui $at, 0xbcf1 | |||
0x34214d81, -- ori $at, $at, 0x4d81 | |||
0xafa10000, -- sw $at, 0($sp) | |||
0x24030001, -- li $v1, 1 | |||
0xa3a30004, -- sb $v1, 4($sp) | |||
0x03a0282d, -- move $a1, $sp | |||
0x0c09dd4c, -- jal UFO::Progress::Record::AddKey(UFO::Progress::Content const&) | |||
0x0040202d, -- move $a0, $v0 | |||
0xdfbf0010, -- ld $ra, 0x10($sp) | |||
0x03e00008, -- jr $ra | |||
0x27bd0020 -- addiu $sp, 0x20 | |||
}) | |||
local call_overlay = 0x0c000000 | (overlay >> 2) | |||
eeInsnReplace(0x2789F8, 0x0c0d49d8, call_overlay) -- UFO::Progress::Storage::PrepareWrite | |||
#Official widescreen support.</pre> | |||
====Destroy All Humans 2==== | |||
SLUS_214.39 | |||
<br>CLI | |||
<pre>--gs-use-mipmap=1 | |||
--gs-kernel-cl="mipmap" | |||
--gs-kernel-cl-up="mipmap2x2" | |||
#Fix for graphical glitches.</pre> | |||
SLUS_214.39 | |||
<br>SLUS-21439_features.lua | |||
<pre>-- Lua 5.3 | |||
-- Title: Destroy All Humans! 2 PS2 - SLUS-21439 (USA) | |||
-- Author: Ernesto Corvi, Adam McInnis | |||
-- Changelog: | |||
apiRequest(0.7) -- request version 0.1 API. Calling apiRequest() is mandatory. | |||
-- | local eeObj = getEEObject() | ||
local emuObj = getEmuObject() | |||
local gpr = require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"]) | |||
if | -- Widescreen | ||
eeObj.AddHook(0x33ca98, 0x3c0436c5, function() -- Graphics::Script::SetScreenRatio | |||
local mode = eeObj.GetGpr(gpr.v0) | |||
-- print(string.format("mode: %08x", mode)) | |||
if mode == 0x36c59d2b then -- widescreen | |||
emuObj.SetDisplayAspectWide() | |||
elseif mode == 0x855a87ef then -- standard | |||
emuObj.SetDisplayAspectNormal() | |||
end | end | ||
end) | |||
-- | eeObj.AddHook(0x33afac, 0x0000282d, function() -- Graphics::Renderer::Renderer | ||
eeObj.SetGpr(gpr.a1, 2) | |||
end) | |||
emuObj.SetDisplayAspectWide() | |||
-- CRC "settings.display.anamorphic" = 0x8b36afe9 | |||
-- $s2 = SaveType (1 = new save) | |||
local overlay = InsnOverlay({ | |||
0x27bdffe0, -- addiu $sp, -0x20 | |||
-- | 0xffbf0010, -- sd $ra, 0x10($sp) | ||
-- | 0x0c059d02, -- memset | ||
0x00000000, -- nop | |||
0x24030001, -- li $v1, 1 | |||
0x1472000b, -- bne $s2, $v1, +11 | |||
0x00000000, -- nop | |||
0x0c09b400, -- jal UFO::Progress::Get(void) | |||
-- | 0x00000000, -- nop | ||
0x3c01bcf1, -- lui $at, 0x8b36 | |||
0x34214d81, -- ori $at, $at, 0xafe9 | |||
0xafa10000, -- sw $at, 0($sp) | |||
0x24030001, -- li $v1, 1 | |||
0xa3a30004, -- sb $v1, 4($sp) | |||
0x03a0282d, -- move $a1, $sp | |||
0x0c09dd4c, -- jal UFO::Progress::Record::AddKey(UFO::Progress::Content const&) | |||
0x0040202d, -- move $a0, $v0 | |||
0xdfbf0010, -- ld $ra, 0x10($sp) | |||
0x03e00008, -- jr $ra | |||
0x27bd0020 -- addiu $sp, 0x20 | |||
}) | |||
local call_overlay = 0x0c000000 | (overlay >> 2) | |||
eeInsnReplace(0x271AD0, 0x0c059d02, call_overlay) -- UFO::Progress::Storage::PrepareWrite | |||
-- Disable Progressive Scan and Adjust Screen Position | |||
-- --------------------------------- | local overlay2 = InsnOverlay({ | ||
0x27bdfff0, -- addiu $sp, -0x10 | |||
0xffbf0000, -- sd $ra, 0(sp) | |||
0xffb00008, -- sd $s0, 8(sp) | |||
0x3c05000f, -- lui $a1, 0x000f | |||
0x34a57000, -- ori $a1, 0x7000 | |||
0x0c0db8b6, -- jal Script::State::DoString | |||
0x0080802d, -- move $s0, $a0 | |||
0x24050001, -- li $a1, 1 | |||
0x0c0dba4c, -- jal Script::State::IsNull(int) | |||
0x0200202d, -- move $a0, $s0 | |||
0xdfb00008, -- ld $s0, 8(sp) | |||
0xdfbf0000, -- ld $ra, 0(sp) | |||
0x03e00008, -- jr ra | |||
0x27bd0010 -- addiu $sp, 0x10 | |||
}) | |||
local call_overlay2 = 0x0c000000 | (overlay2 >> 2) | |||
eeInsnReplace(0x2e5a14, 0x0c0dba4c, call_overlay2) -- Sim::Manager::ProcessScript near Sim::Manager::SetPauseFlag | |||
eeObj.AddHook(0x2e5a10, 0x0240202d, function() -- Sim::Manager::ProcessScript near Sim::Manager::SetPauseFlag | |||
local luaString = [[ | |||
-- disable progressive scan and adjust screen | |||
gui.i.SMOptionsDisplay.table.slots[3] = nil | |||
gui.i.SMOptionsDisplay.table.slots[4] = nil | |||
]] | |||
eeObj.WriteMemStrZ(0xf7000, luaString) | |||
end) | |||
#Official widescreen support.</pre> | |||
====Eternal ring==== | |||
'''CLI''' | |||
<pre> | |||
--pad-analog-to-digital=0 | |||
--gs-use-deferred-l2h=1 | |||
--host-display-mode=16:9 | |||
</pre> | |||
'''LUA''' | |||
<pre> | |||
local gpr = require("ee-gpr-alias") | |||
local PadStick = require("PadStick") | |||
apiRequest(1.5) | |||
local | local eeObj = getEEObject() | ||
local emuObj = getEmuObject() | |||
local patcher = function() | |||
--X-Fov - ELF hack | |||
--803f013c 00a88144 0045013c | |||
eeObj.WriteMem32(0x00100fcc,0x3c013f40) --3c013f80 | |||
-- | --Memory hack | ||
-- | --eeObj.WriteMem32(0x201FF100,0x43c00000) | ||
end | end | ||
emuObj.AddVsyncHook(patcher) | |||
-- | |||
-- | if 1 then | ||
-- bug#10361 (intro slowdown) & bug#9823 (conveyor belt effect) | |||
-- Use Deferred L2H except for conveyor belt effect. | |||
-- Unsure if other convery or similar effects are present, so use permissive match for bypassing deferral. | |||
if | L2H_SetNonDeferred({TRXREG=0x0000000900000080}) -- match any TRXPOS or BITBLTBUF | ||
-- Full specification of conveyor belt effect. | |||
-- L2H_SetNonDeferred({BITBLTBUF=0x0000000013023240,TRXPOS=0x0000000000770000,TRXREG=0x0000000900000080}) | |||
end | end | ||
local PadStickRemap_EternalRing_Default = { | |||
LR=PadStick.AxisRX_Pos, | |||
LL=PadStick.AxisRX_Neg, | |||
LU=PadStick.AxisLY_Neg, | |||
LD=PadStick.AxisLY_Pos, | |||
L1=PadStick.AxisLX_Neg, | |||
local | R1=PadStick.AxisLX_Pos, | ||
L2=PadStick.AxisRY_Neg, | |||
R2=PadStick.AxisRY_Pos, | |||
} | |||
local PadStickRemap_EternalRing_InvertY = { | |||
L2=PadStick.AxisRY_Pos, | |||
R2=PadStick.AxisRY_Neg, | |||
} | |||
emuObj.PadPressureStickRemap(0, PadStickRemap_EternalRing_Default) | |||
-- Supporting Inverted Y Axis requires smoe menu changes, and should be done via features.lua | |||
--emuObj.PadPressureStickRemap(0, PadStickRemap_EternalRing_InvertY) </pre> | |||
====Everybody's Tennis/Hot Shots Tennis==== | |||
SCES_545.35 | |||
<br>CLI | |||
<pre>--gs-use-deferred-l2h=0 | |||
--l2h-2d-params=0x0000000800000010,0x00000000300a1400,256 | |||
--gs-motion-factor=50 | |||
--mtap1=always | |||
--gs-opt-frbuff-switch=1 | |||
--gs-ignore-dirty-page-border=1 | |||
--gs-ignore-rect-correction=1 | |||
--ee-native-function=memcpy,0x11e328 | |||
--ee-native-function=memset,0x11e4e0 | |||
#performance and visual fix(?)</pre> | |||
SCES_545.35 | |||
<br>LUA | |||
<pre>local gpr = require("ee-gpr-alias") | |||
require( "ee-hwaddr" ) | |||
apiRequest(1.4) | |||
eeObj | local eeObj = getEEObject() | ||
-- function dump(addr) | |||
-- print(string.format("=== dump %x ===", addr)) | |||
-- for i=0,0x1e do | |||
-- print(string.format(" %08x : %08x %08x %08x %08x", | |||
-- addr + i*16, | |||
-- eeObj.ReadMem32(addr + i*16 + 0), | |||
-- eeObj.ReadMem32(addr + i*16 + 4), | |||
-- eeObj.ReadMem32(addr + i*16 + 8), | |||
-- eeObj.ReadMem32(addr + i*16 +12))) | |||
-- end | |||
-- end | |||
eeObj. | -- Bug#8285 | ||
-- This patch changes the color of background on : | |||
-- - Language selection | |||
-- - Company logo | |||
-- - Start screen | |||
-- - Some menu | |||
-- which are in menu.bin overlay. Nothing affected in the actual game. | |||
eeObj.DmaAddHook( 1, function() | |||
if eeObj.ReadMem32(vif1_hw.TADR) == 0x1fd1c0 then | |||
-- On language select | |||
if eeObj.ReadMem32(0x4c8ef0) == 0x00ff9090 then | |||
eeObj.WriteMem32(0x4c8ef0, 0) | |||
end | |||
if eeObj.ReadMem32(0x548f30) == 0x00ff9090 then | |||
eeObj.WriteMem32(0x548f30, 0) | |||
end | |||
-- On company logo | |||
if eeObj.ReadMem32(0x4c6d70) == 0x00ff9090 then | |||
eeObj.WriteMem32(0x4c6d70, 0) | |||
end | |||
if eeObj.ReadMem32(0x546db0) == 0x00ff9090 then | |||
eeObj.WriteMem32(0x546db0, 0) | |||
end | |||
end | |||
end) | end) | ||
-- | eeInsnReplace(0x103d58, 0x27bdffc0, 0x03e00008) -- <SyncDCache> | ||
eeInsnReplace(0x103d5c, 0xffb20020, 0x00000000) | |||
eeNativeHook (0x103d58, 0x03e00008,'AdvanceClock',0x600) | |||
eeInsnReplace(0x103dd8, 0x3c02ffff, 0x03e00008) -- <iSyncDCache> | |||
eeInsnReplace(0x103ddc, 0x3442ffc0, 0x00000000) | |||
eeNativeHook (0x103dd8, 0x03e00008,'AdvanceClock',0x600) | |||
eeInsnReplace(0x103e98, 0x27bdffc0, 0x03e00008) -- <InvalidDCache> | |||
eeInsnReplace(0x103e9c, 0xffb20020, 0x00000000) | |||
eeNativeHook (0x103e98, 0x03e00008,'AdvanceClock',0x600) | |||
eeInsnReplace(0x103f18, 0x3c02ffff, 0x03e00008) -- <iInvalidDCache> | |||
eeInsnReplace(0x103f1c, 0x3442ffc0, 0x00000000) | |||
eeNativeHook (0x103f18, 0x03e00008,'AdvanceClock',0x600) | |||
eeInsnReplace(0x106970, 0x3c19ffff, 0x03e00008) -- <sceSifWriteBackDCache> | |||
eeInsnReplace(0x106974, 0x3739ffc0, 0x00000000) | |||
eeNativeHook (0x106970, 0x03e00008,'AdvanceClock',0x1700) | |||
</pre> | |||
====Fahrenheit/Indigo Prophecy==== | |||
SLES_535.39 | |||
<br>CLI | |||
<pre>--ee-hook=0x002097d0,FastForwardClock,0x8c6261fc | |||
--ee-hook=0x1a5570,AdvanceClock,,500000 | |||
--ee-hook=0x00223c48,AdvanceClock,0x0080382d,8000 | |||
--gs-kernel-cl="h2lpool" | |||
--gs-kernel-cl-up="h2lpool2x2" | |||
#Performance fix.</pre> | |||
SLES_535.39 | |||
<br>LUA | |||
<pre>This is a substantial file. Over 20,000 lines with an extensive performance fix. I'm sharing the file itself as a download link. | |||
https://drive.google.com/file/d/1L2YxondID65KIAybKVCBH9KgFegqqOeQ/view | |||
-- Performace fix (bug #9785 ) | |||
-- bug#8571 | |||
-- ignore 'no wait vsync' case. | |||
-- unsyncv causes major slowness on loading screen, because the game pushes LOTS of identical frame data to GS.</pre> | |||
SLES_535.39 | |||
<br>SLES-53539_features.lua | |||
<pre>-- Lua 5.3 | |||
-- Title: Fahrenheit PS2 - SLES-53539 (EUR) | |||
-- Author: Ernesto Corvi, Adam McInnis | |||
-- Changelog: | |||
require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"]) | |||
require( "ee-cpr0-alias" ) -- for EE CPR | |||
apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | |||
local eeObj = getEEObject() | |||
local emuObj = getEmuObject() | |||
local | local L1 = function() -- QDT::SINT::SCRIPT_LOADING_SCREEN::EM::Run | ||
emuObj.ThrottleMax() | |||
end | |||
local L2 = function() -- QDT::SINT::SCRIPT_LOADING_SCREEN::EM::Stop | |||
emuObj.ThrottleNorm() | |||
end | end | ||
local load1 = eeObj.AddHook(0x387040, 0x3c02004b, L1) -- QDT::SINT::SCRIPT_LOADING_SCREEN::Run | |||
local load2 = eeObj.AddHook(0x387090, 0x3c02004b, L2) -- QDT::SINT::SCRIPT_LOADING_SCREEN::Stop | |||
-- Widescreen | |||
eeInsnReplace(0x20a7c0, 0x3c013faa, 0x3c013fe3) | |||
eeInsnReplace(0x20a7c4, 0x3421aaab, 0x34218e39) | |||
emuObj.SetDisplayAspectWide() | |||
-- Skip video mode options | |||
local videomenuVM = { 0x04, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, | |||
0x3B, 0x0D, 0x00, 0x00, 0x3B, 0x0B, 0x00, 0x00, | |||
0x3B, 0x26, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 } | |||
local visualmenuVM = { 0x04, 0x01, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00, | |||
0x3B, 0x19, 0x00, 0x00, 0x3B, 0x18, 0x00, 0x00 } | |||
-- locates src chunk on (dst,cnt). -1 if not found, offset if found | |||
local locateChunk = function(src, dst, count) | |||
local offs = -1 | |||
- | for x = 0, count - #src do | ||
if eeObj.ReadMem8(dst+x) == src[1] then | |||
if | local found = true | ||
for y = 1, #src do | |||
local | if eeObj.ReadMem8(dst+x+y-1) ~= src[y] then | ||
found = false | |||
break | |||
- | |||
end | end | ||
end | |||
if found == true then | |||
offs = x | |||
break | |||
end | end | ||
end | end | ||
end | end | ||
return offs | |||
end | end | ||
eeObj.AddHook( | eeObj.AddHook(0x2812b0, 0x27bdfff0, function() -- QDT::VM::BYTE_CODE::BYTE_CODE | ||
eeObj. | local obj = eeObj.GetGpr(gpr.a1) | ||
local bytecode = eeObj.ReadMem32(obj+0x18) | |||
local count = eeObj.ReadMem32(obj+0x20) | |||
if count > #videomenuVM then | |||
local offs = locateChunk(videomenuVM, bytecode, count) | |||
if offs >= 0 then | |||
print("Skipping video mode menu") | |||
eeObj.WriteMem8(bytecode+offs+4, 8) -- beq 0x44 -> beq 0x8 | |||
end | |||
end | |||
if count > #visualmenuVM then | |||
local offs = locateChunk(visualmenuVM, bytecode, count) | |||
if offs >= 0 then | |||
print("Skipping visual mode video menu") | |||
eeObj.WriteMem8(bytecode+offs+1, 2) -- beq 0xa2 -> bne 0xa2 | |||
end | |||
end | |||
end) | |||
==== | -- Force 60hz | ||
<br>SCES- | eeInsnReplace(0x207ae0, 0x00a0802d, 0x24100001) -- move $s0, $a1 -> li $s0, 1 | ||
-- Fix for bug 9716, which is a bug in the game. | |||
-- Trying to retrieve a COM handle in the game will cause an infinite | |||
-- loop if the handle has been deallocated and the debug server is not | |||
-- connected. There's apparently a small race condition in the Asylum | |||
-- level that sometimes can trigger the bug. | |||
-- The fix involves getting out of the loop. | |||
-- It causes a small visual glitch but otherwise the game continues to work fine. | |||
eeInsnReplace(0x1c5958, 0x10400005, 0) -- QDT::KCOM::COM_SERVICE::RetrieveComHandle | |||
eeInsnReplace(0x1c5b6c, 0x10400005, 0) -- QDT::KCOM::COM_SERVICE::RetrieveComHandle | |||
eeInsnReplace(0x1c5d24, 0x10400005, 0) -- QDT::KCOM::COM_SERVICE::RetrieveComHandle | |||
#Official widescreen support, forced 60Hz/NTSC, along with a game crash bug fix.</pre> | |||
====Fantavision==== | |||
'''CLI''' | |||
<br>SCES-50002 | |||
<pre> | <pre> | ||
--gs-kernel-cl-up="fantavision" | |||
--gs-motion-factor=1 | |||
--gs-kernel-cl-up=" | |||
--gs- | |||
</pre> | </pre> | ||
<br>SCES- | '''LUA''' | ||
<br>SCES-50002 | |||
<pre> | <pre> | ||
require("ee-gpr-alias") | |||
require( "ee-hwaddr" ) | require( "ee-hwaddr" ) | ||
apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory. | ||
eeObj = getEEObject() | |||
-- -- | -- | ||
-- | -- Bug#93709 (JP Bugzilla) | ||
-- | -- Same as Parappa the Rapper 2, it's VIF1 vs GIF xfer timing issue. | ||
-- The game expects PATH3 happens before VU1 xgkick, but actually Olympus doesn't do like that. | |||
-- Game kicks : PATH3(Context1) PATH1(Rendering using Context1&2) PATH3(Context2) | |||
-- | -- Game expects: PATH3(Context1) PATH3(Context2) PATH1(Rendering using Context1&2) | ||
-- Hence VIF1 DMA needs to be delayed. | |||
eeObj.AddHook(0x1b1468, 0xae020000, function() | |||
local ee = eeObj | |||
local s0 = ee.GetGpr(gpr.s0) | |||
if s0 == vif1_hw.CHCR then | |||
local chcr = ee.GetGpr(gpr.v0) | |||
if (chcr & 0x05) == 0x05 then | |||
local tadr = ee.ReadMem32(vif1_hw.TADR) | |||
if tadr == 0x8883e0 or tadr == 0x9f6b60 then | |||
ee.SchedulerDelayEvent("vif1.dma", 0x5000) | |||
end | |||
end | |||
end | |||
end) | |||
-- Performace fix | |||
local emuObj = getEmuObject() | |||
-- twIsLess=5 - texture width is less or eq. than 32 | |||
emuObj.SetGsTitleFix( "forcePointSampling", "reserved", {alpha = 0x80000048, twIsLess=5, thIsLess=5 } ) | |||
</pre> | </pre> | ||
====Fatal Fury: Battle Archives volume 2==== | |||
ALL | |||
<br>CLI | |||
<pre>--gs-uprender=none | |||
--gs-upscale=point | |||
--host-audio-latency=0.010 | |||
--force-frame-blend=1 | |||
#Graphical fix.</pre> | |||
SLUS_217.23 | |||
<br>SLUS-21723_features.lua | |||
<pre>This is a substantial file. Over 500 lines with additional controller/fightstick support and various shader/bezel files. I'm sharing the file itself as a download link. | |||
https://drive.google.com/file/d/1FPPPJiHOazTXaD-H6K3kLACYDSdDeAE1/view | |||
https://drive.google.com/file/d/ | |||
#official widescreen support in the form of screen bezels, along with expanded fightstick support and scanline shaders.</pre> | |||
</pre> | |||
====Fu'un Super Combo!!!==== | ====Fu'un Super Combo!!!==== | ||
Line 9,354: | Line 1,103: | ||
</pre> | </pre> | ||
====Jak 3==== | ====Jak 3==== | ||
'''LUA''' | '''LUA''' | ||
<br>SCUS-97330 | <br>SCUS-97330 | ||
Line 12,319: | Line 4,056: | ||
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { alpha=0x00000000 } ) | emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { alpha=0x00000000 } ) | ||
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { alpha=0x80000048 } ) | emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { alpha=0x80000048 } ) | ||
</pre> | </pre> | ||
Line 13,656: | Line 5,318: | ||
-- Karla Quiros Manager Business Finance & Ops | -- Karla Quiros Manager Business Finance & Ops | ||
-- Special thanks to A-R&D | -- Special thanks to A-R&D | ||
</pre> | </pre> | ||