gametitle=Stretch Panic (NTSC-U) [SLUS-20182] [854D5885]

[Widescreen 16:9]
gsaspectratio=16:9
comment=Widescreen hacks by sergx12 (ISO HEX codes) and Aced14 (pnach version - ELF and 16:10 hacks)

//16:9 widescreen
patch=1,EE,2011FB4C,extended,08047EE0 //0441000C - j $0011fb80 - Jump over game logic for PADMAN.IRX debug error message to prevent conflicts
patch=1,EE,2012BFD0,extended,08047ED5 //C60D0174 - j $0011fb54 - Jump to injected MIPS instructions for widescreen logic
patch=1,EE,2011FB54,extended,12600004 //3C02006A - beq s3, zero, $0011fb68 - Branch to the end of the widescreen logic if a cutscene is running (by checking if s3 register is 0)
patch=1,EE,2011FB58,extended,3C013FAA //0C046690 - lui at, $3faa - Set $f31 register to 1.333333373 #1
patch=1,EE,2011FB5C,extended,3421AAAB //2444B2E0 - ori at, at, $aaab - Set $f31 register to 1.333333373 #2
patch=1,EE,2011FB60,extended,4481F800 //3C02006A - mtc1 at, $f31 - Set $f31 register to 1.333333373 #3
patch=1,EE,2011FB64,extended,461F6302 //2444B2C0 - mul.s $f12, $f12, $f31 - Multiply $f12 by $f31 and store the result in $f12 (positive X FOV)
patch=1,EE,2011FB68,extended,0804AFF6 //70002E28 - j $0012bfd8 - Jump to 2 lines after the overwritten MIPS instruction
patch=1,EE,2011FB6C,extended,46006347 //0C043184 - neg.s $f13, $f12 - Negate $f12 and store the result in $f13 (negative X FOV)

//16:10 widescreen (normal)
//patch=1,EE,2011FB4C,extended,08047EE0 //0441000C - j $0011fb80 - Jump over game logic for PADMAN.IRX debug error message to prevent conflicts
//patch=1,EE,2012BFD0,extended,08047ED5 //C60D0174 - j $0011fb54 - Jump to injected MIPS instructions for widescreen logic
//patch=1,EE,2011FB54,extended,12600004 //3C02006A - beq s3, zero, $0011fb68 - Branch to the end of the widescreen logic if a cutscene is running (by checking if s3 register is 0)
//patch=1,EE,2011FB58,extended,3C013F99 //0C046690 - lui at, $3f99 - Set $f31 register to 1.2 #1
//patch=1,EE,2011FB5C,extended,3421999A //2444B2E0 - ori at, at, $999a - Set $f31 register to 1.2 #2
//patch=1,EE,2011FB60,extended,4481F800 //3C02006A - mtc1 at, $f31 - Set $f31 register to 1.2 #3
//patch=1,EE,2011FB64,extended,461F6302 //2444B2C0 - mul.s $f12, $f12, $f31 - Multiply $f12 by $f31 and store the result in $f12 (positive X FOV)
//patch=1,EE,2011FB68,extended,0804AFF6 //70002E28 - j $0012bfd8 - Jump to 2 lines after the overwritten MIPS instruction
//patch=1,EE,2011FB6C,extended,46006347 //0C043184 - neg.s $f13, $f12 - Negate $f12 and store the result in $f13 (negative X FOV)

//16:10 widescreen (ultra)
//patch=1,EE,2011FB08,extended,08047ECE //0441000B - j $0011fb38 - Jump over game logic for SIO2MAN.IRX debug error message to prevent conflicts
//patch=1,EE,2011FB4C,extended,08047EE0 //0441000C - j $0011fb80 - Jump over game logic for PADMAN.IRX debug error message to prevent conflicts
//patch=1,EE,2012BFD8,extended,08047ECA //C60F017C - j $0011fb28 - Jump to injected MIPS instructions for cutscene/playing check
//patch=1,EE,2011FB28,extended,52600013 //0C043184 - beql s3, zero, $0011fb78 - Branch to the end of the widescreen logic if a cutscene is running (by checking if s3 register is 0)
//patch=1,EE,2011FB2C,extended,00000000 //70003628 - nop - Nop delay slot (to avoid a "branch XXXXXXXX in delay slot!" warning in PCSX2's log)
//patch=1,EE,2011FB30,extended,08047ED5 //0440FFF7 - j $0011fb54 - Jump to injected MIPS instructions for widescreen logic
//patch=1,EE,2011FB54,extended,3C013FAA //3C02006A - lui at, $3faa - Set $f31 register to 1.333333373 #1
//patch=1,EE,2011FB58,extended,3421AAAB //0C046690 - ori at, at, $aaab - Set $f31 register to 1.333333373 #2
//patch=1,EE,2011FB5C,extended,4481F800 //2444B2E0 - mtc1 at, $f31 - Set $f31 register to 1.333333373 #3
//patch=1,EE,2011FB60,extended,461F6302 //3C02006A - mul.s $f12, $f12, $f31 - Multiply $f12 by $f31 and store the result in $f12 (positive X FOV)
//patch=1,EE,2011FB64,extended,46006347 //2444B2C0 - neg.s $f13, $f12 - Negate $f12 and store the result in $f13 (negative X FOV)
//patch=1,EE,2011FB68,extended,3C013F8E //70002E28 - lui at, $3f8e - Set $f31 register to 1.111111164 #1
//patch=1,EE,2011FB6C,extended,342138E4 //0C043184 - ori at, at, $38e4 - Set $f31 register to 1.111111164 #2
//patch=1,EE,2011FB70,extended,4481F800 //70003628 - mtc1 at, $f31 - Set $f31 register to 1.111111164 #3
//patch=1,EE,2011FB74,extended,461F7382 //0440FFF7 - mul.s $f14, $f14, $f31 - Multiply $f14 by $f31 and store the result in $f14 (negative Y FOV)
//patch=1,EE,2011FB78,extended,0804AFF8 //00000000 - j $0012bfe0 - Jump to 2 lines after the overwritten MIPS instruction
//patch=1,EE,2011FB7C,extended,460073C7 //00000000 - neg.s $f15, $f14 - Negate $f14 to make it positive and store the result in $f15 (positive Y FOV)


