Files
pcsx2-patches/patches/SLUS-20887_058849D1.pnach
2025-11-18 14:20:05 -07:00

59 lines
2.7 KiB
Plaintext

gametitle=The Adventures of Jimmy Neutron Boy Genius - Attack of the Twonkies (U)(SLUS-20887)
[Widescreen 16:9]
gsaspectratio=16:9
author=Arapapa
//Widescreen hack 16:9
//X-Fov
//c2090746 c2380346
patch=1,EE,0025c038,word,08030000 //460709c2
patch=1,EE,000c0000,word,460709c2
patch=1,EE,000c0004,word,3c013f40
patch=1,EE,000c0008,word,4481f000
patch=1,EE,000c000c,word,461e39c2
patch=1,EE,000c0010,word,0809700f
//Render fix
//003f023c 6000bfff 00008244
patch=1,EE,00158dc4,word,3c023f2b //3c023f00
[Skippable Cutscenes]
author=Souzooka
description=Press the START or X Button to skip cutscenes.
// NOTE: This works by setting the cutscene length to 0, which is only checked every second or so.
// Set up a call site to a code cave slightly above the cutscene length check
// at this point in the code we know a cutscene is running,
// and this code runs unconditonally every frame at that point
patch=0,EE,202C3008,extended,C61400A4 // lwc1 f20,0xA4(s0) ; moved up one slot into branch delay
patch=0,EE,202C300C,extended,4615A040 // add.s f01,f20,f21 ; moved up one slot
patch=0,EE,202C3010,extended,E60100A4 // swc1 f01,0xA4(s0) ; moved up one slot
patch=0,EE,202C3014,extended,0C040920 // jal z_un_00102480 ; Jump to sceDmaSendI (believed to be orphaned)
patch=0,EE,202C3018,extended,02002021 // addu a0,s0,zero ; pointer variable used in code cave
patch=0,EE,202C301C,extended,02002021 // addu a0,s0,zero ; restore spoiled a0
patch=0,EE,202C3020,extended,14400119 // bne v0,zero,0x002C3488 ; Code cave now returns branch condition
patch=0,EE,202C3024,extended,C60100A4 // lwc1 f01,0xA4(s0) ; restore spoiled f01
// Code cave (at sceDmaSendI / 0x102480)
patch=0,EE,20102480,extended,3C010049 // lui at,0x0049
patch=0,EE,20102484,extended,8024B7C2 // lb a0,-0x483E(at)
patch=0,EE,20102488,extended,30840008 // andi a0,a0,0x0008 ; check START Button
patch=0,EE,2010248C,extended,00801021 // addu v0,a0,zero
patch=0,EE,20102490,extended,8024B7C3 // lb a0,-0x483D(at)
patch=0,EE,20102494,extended,30840040 // andi a0,a0,0x0040 ; check X Button
patch=0,EE,20102498,extended,00441025 // or v0,v0,a0
patch=0,EE,2010249C,extended,54400001 // bnel v0,zero,0x001024A4
patch=0,EE,201024A0,extended,AE0000AC // sw zero,0xAC(s0) ; Set cutscene length to 0 if either were pressed. Checked every second or so.
// The below recreates a condition overwritten at the call site
patch=0,EE,201024A4,extended,C60100A4 // lwc1 f01,0xA4(s0)
patch=0,EE,201024A8,extended,C60000A8 // lwc1 f00,0xA8(s0)
patch=0,EE,201024AC,extended,46010036 // c.le.s f00,f01
patch=0,EE,201024B0,extended,00001021 // addu v0,zero,zero
patch=0,EE,201024B4,extended,45020001 // bc1fl 0x001024BC
patch=0,EE,201024B8,extended,24020001 // addiu v0,zero,0x1
patch=0,EE,201024BC,extended,03E00008 // jr ra
patch=0,EE,201024C0,extended,00000000 // nop