First Commit
This commit is contained in:
58
patches/SLUS-20887_058849D1.pnach
Normal file
58
patches/SLUS-20887_058849D1.pnach
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
||||
Reference in New Issue
Block a user