No interlacing codes
(06-18-2020, 09:29 AM)tomsea64 Wrote: I tried using the elf search tool but everytime i tried to search the code i got an error and it said PNACH and raw code results require replace patterns
Sorry, corrected tutorial i forget separate values, first line is for search box and the second is for reemplace.
Reply

Sponsored links

So i found the first code for pac man world 2 and it stopped the jittering for the loading screens but still has it during gameplay. I then tried and disabled the andi code and added it to the pnatch but it still jitters. Pcsx2 said it found 2 cheats so i know it sees them but pac man world 2 uses a custom routine i guess. I am going to try other games as i need more skill to figure this one out.

when i nop the instruction do i replace the 1 with a 0? I just want to be sure i am doing the right thing. If i can figure this out then maybe i can make a little video showing what i was able to do so other people can try the same thing.


I attached the pnatch file for the US version of .hack infection. This pnatch fixes fmv jittering. Please let me know if you encounter any issues. Im early into the game but so far i have no issues.


.pnach   38A894C6.pnach (Size: 136 bytes / Downloads: 316)
Reply
(06-18-2020, 09:06 AM)felixthecat1970 Wrote: umm, ok, more simple ways to understand and find this codes, also for people who wants to understand more about it.
(by the way i dont have the game but look this type code HEX, asasega maybe use step 2.2, for basic understand recommend you lectures in the end this post)

Disclaimer: this are my findings and understandings about it, nothing is granted to work perfect.
prepare for spend many hours in testing, lectures for grasp some logic o check end faq.
post 1 this thread by Asasega and other threads in PCSX2 forums help me to understand more, this are my guessings, in the end i leave many usefull lectures.

PS2 interleacing is implemented by next 3 (functions / instructions / routines ):

1 > sony official sceGsSetHalfOffset = daddiu v0, v0, $0008 only
2 > sony official sceGsSetHalfOffset + custom game programer rutine = daddiu v0, v0, $0008 and ????????? custom routine or routines
3 > custom game programer routine only = ????????? custom routine or routines

so, we need to find adresses that write in registers values generally are 0,1 1,0 0,8 8,0
to find this follow steps order:

(you need to know how to create pnach codes here in forums are many tutorials)
Step 1 > easy mode:
Download this tool https://www.ps2-home.com/forum/viewtopic.php?t=6182 >
with 7zip compressor app open you game iso dump and extract
the SLPM / SLUS / SLES executable ps2 file in tool folder > in tool: browse the file > in search box and reemplace box put next values:

Search Box:
38290500 08004264
Replace Box:
38290500 00000000

Select pnach and press search:
Result:
>values appear create a pnach with values and test, game run with no interleacing at all ok, you are lucky end tutorial.
>values appear, tested, but some parts in game shake (almost menus, videos or 3d gameplay ) go to > step 2
>no values appear go to > step 2

Step 2 > medium mode:
after find 1 step codes (or no find anything) you need to search for custom routine adresses mainly with values 0,1,8 in HEX 4/8 bytes
(00001 / 0000 / 0008) and null / nop (put 0) in adresses

run game > PCSX2 debugger > breakpoint

2.1 put 12001000 (read) *game will pause > rigth panel PCSX2 debugger near selected addres look for andi 0x00001 values > asemble opcode (second click in adresss) null 1 value (put 0) disable breakpoint and test, game run with no interleacing (create pnach copy that address and hex value with second click); game crash or no pause go to > step 2.2
Special case: Devil may Cry 3 code (Signature)

(you need to learn basic cheat engine / config first and basics mips)
2.2 put 12000090 (write) *game will pause > run cheat engine, hook pcsx2 process  memory scan start to 20100000 stop 2fffffff, in PCSX2 press RUN the game advance 1 frame you see image up and down a little> in cheatengine put 0 and firts scan, thousand adresses will find then in PCSX2 debugger press run again and cheat engine change value to 1 a press next scan, keep doign this till you find less adresses that write 0 and 1 each step when you press RUN, (if you not find any inverse the search operation 1,0 or 0,8, 8,0)
now with this adresses you need to create write (breakpoints) individuallly in PCSX2 debugger for each adress (dont forget disable 12000090 or 12000070 breakpoint) if game interrup again use that adress if not use next find address,
next in left panel (PCSX2 debugger) each time game interrup you will see in registers v0, v1, a0.. etc some change 0,1 you need to deduce/analyze with this info near adresses or the interrupt address are writing 0,1 in left panel values; select adress and check again with left panel supected / analyzed  adresses values changing 0, 1 select and try assemble opcode only registers (bytes) v0,v1,a0,a1 etc with "zero" editing example: li v0,v1.0x0040 > li v0,zero,0x0040 etc (also sometimes need to change mips instruction) li v0,v1.0x0040 > or v0,zero,zero etc (many variables so you need to deduce - learn basic mips)
disable breakpoint then test; game run no interleacing copy address and hex edit and create pnach file.
Special case my code for ValKyrie Profile 2 PAL.

Game no pause go to step 2.3; game crash or no find anything go to > step 3.
Basically we are finding what adresses are writing 0 and 1 in each frame step in cheat engine then in PCSX2 debugger find what instructions are writing this 0,1 values and cancel / nop / null / zero the value (you understand more when you learn more about cheat engine use);

2.3 put 12000070 (write) *game will pause, repeat step 2.2 instructions; game crash or no pause go to > step 3

Step 3 > hard mode
this is more difficult, you need understand about Ps2 Privileged GsRegisters, Good use Cheatengine, Mips values changes like li, OR, ORI, XOR, etc
find hide routines like scegsparam or similar, manipulate framebuffers / backbuffers, progressive interleaced modes opcodes, a loot of logic and analytic mind Smile , this step is more difficult to explain (even with images) so, i left this in continue (or if some more skilled can teach us another tutorial more advanced about manipulate this gs registers for framebuffers, frame sizes, progressive modes etc). basically you need to find framebuffer and progressive configs and modify.
in the end this step is litle more dificult to grasp / understand but i put some lectures for learn more about it.
Special case: my code for Rumble Roses (Japan).

Faq:
In Easy mode step i find others executable files with .ELF in game iso dump i need to patch this too?
its recomended patch this too because some games load another executable .ELF file, but if you use the ELF tool it will not work with pnach code
(it work with ELF tool if you patch each elf and build the iso again) in this cases is recomended use cheatengine > find memory > select array codes
and start 20100000 > find adreess 1 or 2 findings > verify the adress in PCSX debugger (daddiu  v0,v0,0x0008) create pnach, also in cheat engine need to watch
adreess because PS2 re-write part memory or all memory when you play with this type games (you old adreess change another new values
it will crash or corrupt the game) so you need to find values again when adresses change, for this cases need learn to make hooks with codes DXXXXXXX or EXXXXXXX, more info end this guide.
Special case: my code for Samurai Showdown Anthology

what it means add adresses breakpoint write / read?
it means this adresses are reserved Gs registers (all games have that adresses perform same functions) are commonly writen - reading each frame displayed in game, by many adresses - instructions etc with many values 0-9 a-f, for filter no interleacing we need to find adresses who write values 0,1, - 1,0 - 0,8 - 8,0  4bytes 8bytes with ram searcher like cheatengine after filtered adresses need to be checked in PCSX2 debugger like explain step 2.3 find instruction who writes the mentioned values.

what is null, nop, zero?
null=0 nop(not operant)=0 zero=0 many values to put 0

why not a image / video tutorial?
sorry, but i dont like video tutorials, images will make this post a large ilustration book more o less, i left some lectures below, they have some
images and videos.

this is too hard for me what another easy solution for no interleacing?
Buy PS3 recomended FAT 20gb - 60gb USA/JAP version because they have full ps2 hardware chips integrated, next models (fat 60gb (pal)
Fat 80gb, only have ps2 emotion engine chip=less compactible, slim, superslim only psnclassics (cfw/han can enable disc and iso dumps) and only software emulation = less and less compactibility
if you find FAT model alive check here for NEC-TOKIN capacitors reemplacement fix for prevent or fix (almost) yellow ligth / overheating problem / noise problems
PS3 integrate null routine for all ps2 games, also they run in 480p / 526p(PAL) progressive mode, so, no interleacing and all, disvantage is
only native resolution 3d games looks ugly (less ugly that ps2 hardware) otherwise 2d games looks ok

This only work for no interleacing?
No always, when you start know how ps2 works and modding the game code, routines etc, give you ideas for enhace games, example code activators (joker codes) with PAD or framebuffer manipulation (my No Hud Mod for Devil may cry) autofixes, fixes (armore core nexus no need for HW hacks) sharp framebuffer display etc.
Special cases: my code for Granturismo 4 USA
                     my code No HUD Devil may cry (Signature)

Lectures:

Good reading about what are you hacking-modding
https://www.copetti.org/projects/console...station-2/

In PS2 Section guides about how to hex editing,mips,codes, etc
https://gamehacking.org/library

No every code explanation works but D and E code making works
https://gamehacking.org/wiki/Code_Types_(Playstation_2)

Deep insigth about PS2 Registers
https://psi-rockin.github.io/ps2tek/

Another mips assembly explanation with ps2dis tool
https://theelitegamers.darkbb.com/t47-le...ips-to-use
Can one of the moderators pin this? this is really helpful and has taught me how to make no interlacing codes for some games. I think this info is really useful
Reply
(06-18-2020, 11:07 AM)tomsea64 Wrote: So i found the first code for pac man world 2 and it stopped the jittering for the loading screens but still has it during gameplay. I then tried and disabled the andi code and added it to the pnatch but it still jitters. Pcsx2 said it found 2 cheats so i know it sees them but pac man world 2 uses a custom routine i guess. I am going to try other games as i need more skill to figure this one out.

when i nop the instruction do i replace the 1 with a 0? I just want to be sure i am doing the right thing. If i can figure this out then maybe i can make a little video showing what i was able to do so other people can try the same thing.


I attached the pnatch file for the US version of .hack infection. This pnatch fixes fmv jittering. Please let me know if you encounter any issues. Im early into the game but so far i have no issues.
Pacman world 2 can be that games who need find / guest the custom routine in the step 2.2 when you find adresses create a write read point for each adress (when you are doing ok cheatengine find almost 4, 5 or 2 adresse) then in the debugger press run *game will pause, see left panel in the registers if someone change values 1,0 each time you press RUN now look in the selected adress if have same mips registers example ; adress pause game you see register left panel S2 change 0 to 1 each time you press RUN in the rigth panel the interrumped adress has the same register S2 > "sw s2,0x4(v1)" assemble opcode to sw zero,0x4(v1) disable breakpoint and test; if not see near adresses put write breakpoints and test, also when you learn basic mips you can know what type of register need to be modified for no broke the line code (hard)
Reply
(06-18-2020, 02:54 PM)felixthecat1970 Wrote: Pacman world 2 can be that games who need find / guest the custom routine in the step 2.2 when you find adresses create a write read point for each adress (when you are doing ok cheatengine find almost 4, 5 or 2 adresse) then in the debugger press run *game will pause, see left panel in the registers if someone change values 1,0 each time you press RUN now look in the selected adress if have same mips registers example ; adress pause game you see register left panel S2 change 0 to 1 each time you press RUN in the rigth panel the interrumped adress has the same register S2 > "sw s2,0x4(v1)" assemble opcode to sw zero,0x4(v1) disable breakpoint and test; if not see near adresses put write breakpoints and test, also when you learn basic mips you can know what type of register need to be modified for no broke the line code (hard)
I update the tutorial with better example.
Reply
(Pac-Man World 2 USA codes ported from asasega's JP version)

Pac-Man World 2 SLUS-20224 (Black) = 047D8AA6
Pac-Man World 2 SLUS-20224 (GH)    = E7EA3288


Attached Files
.pnach   047D8AA6.pnach (Size: 277 bytes / Downloads: 224)
.pnach   E7EA3288.pnach (Size: 293 bytes / Downloads: 227)
Reply
Hot Shots Golf Fore- SCUS-97401 = D7F42600
Hot Shots Golf 3-      SCUS-97130 = 9794BFEF

update - these two patches may not work correctly on the newest revisions of PCSX2. Use these only on 1.6 and earlier.


Attached Files
.pnach   D7F42600.pnach (Size: 150 bytes / Downloads: 353)
.pnach   9794BFEF.pnach (Size: 146 bytes / Downloads: 321)
Reply
(06-18-2020, 04:56 PM)someother1ne Wrote: (Pac-Man World 2 USA codes ported from asasega's JP version)

Pac-Man World 2 SLUS-20224 (Black) = 047D8AA6
Pac-Man World 2 SLUS-20224 (GH)    = E7EA3288
The pac man world 2 pnatch breaks all FMV'S


Edit: I encountered a weird issue. First you need large framebuffer enabled and if you open up the graphics config then the fmv stays on a black screen.
Reply
(06-19-2020, 04:15 AM)tomsea64 Wrote: The pac man world 2 pnatch breaks all FMV'S


Edit: I encountered a weird issue. First you need large framebuffer enabled and if you open up the graphics config then the fmv stays on a black screen.

Yes this is the same behavior of asasega's original JP code as well. Didn't find a proper fix for it yet but setting manual gamefix "Switch to SW mode for FMV" and also "Pre-load Frame data" in the GSDX plugin seems to work sometimes.
Reply
(06-19-2020, 04:15 AM)tomsea64 Wrote: The pac man world 2 pnatch breaks all FMV'S


Edit: I encountered a weird issue. First you need large framebuffer enabled and if you open up the graphics config then the fmv stays on a black screen.
I take a look in the code, indeed is a framebuffer code, make some workaround for test, also add some codes too, let me know if work OK.
-Also i recomend use lastest PCSX2 1.6 stable or Dev builds 1.7

Pacman world 2 SLUS_202.24 Game CRC = E7EA3288


Attached Files
.pnach   E7EA3288.pnach (Size: 1.011 bytes / Downloads: 300)
Reply




Users browsing this thread: 9 Guest(s)