gametitle=Twisted Metal: Black [Preview] (NTSC-U) [SLPS-20001] [AF3E4E18]

[Widescreen 16:9]
gsaspectratio=16:9
comment=Widescreen hacks by Aced14

//16:9 Widescreen

//FMV
//patch=1,EE,101CE61C,extended,00000000 //24070028 - FMV Top Y Offset (WIP) (40 -> 0)

//Main Menu
patch=1,EE,206D11B0,extended,43C00000 //44000000 - Menu Master X FOV
patch=1,EE,206D11D0,extended,3FAAAAAB //3F800000 - Menu Master Y FOV
patch=1,EE,101A87C8,extended,0000003B //2405002C - Menu Game Descriptions Font Width (44 -> 59)
patch=1,EE,101A8AD4,extended,0000003B //2405002C - Menu High Score Font Width (44 -> 59)
patch=1,EE,106D1734,extended,0000009D //001400D1 - Menu Loading Bar Width (209 -> 157)

//1 Player
patch=1,EE,206D0B80,extended,43E40000 //44180000 - 1P Master X FOV
patch=1,EE,206D0BA0,extended,3F206D39 //3EF0A3D7 - 1P Master Y FOV
patch=1,EE,206EEF28,extended,C01F1AA0 //BFF28F5C - 1P Master X Radar
patch=1,EE,206EEF34,extended,40076C8B //3FBFF6F5 - 1P Master X Weapon
patch=1,EE,10144D28,extended,0000004F //2411006C - 1P Radar Closest Enemy Name X Position (108 -> 79)
patch=1,EE,10142BE0,extended,00000284 //24050219 - 1P Machine Gun Counter X Position (537 -> 644)
patch=1,EE,10142E94,extended,00000235 //24050226 - 1P Endurance "KILLS:%d" X Position (550 -> 565)
patch=1,EE,10142E9C,extended,00000005 //2406000A - 1P Endurance "KILLS:%d" Y Position (10 -> 5)

//1 Player - Large Rear View
patch=1,EE,206D15D0,extended,43E40000 //44180000 - 1P Large Rear View Master X Rear FOV
patch=1,EE,206D15F0,extended,3F206D39 //3EF0A3D7 - 1P Large Rear View Master Y Rear FOV
patch=1,EE,206D1680,extended,43E40000 //44180000 - 1P Large Rear View Master X Front FOV
patch=1,EE,206D16A0,extended,3F206D39 //3EF0A3D7 - 1P Large Rear View Master Y Front FOV
patch=1,EE,206EEF08,extended,3E46A7F0 //3E19999A - 1P Large Rear View Master X Radar
patch=1,EE,206EEF1C,extended,3ED47AE1 //3E99999A - 1P Large Rear View Master X Weapon
patch=1,EE,206EEF24,extended,3EE66666 //3EB33333 - 1P Large Rear View Master Y Weapon
patch=1,EE,10144D10,extended,00000047 //24110061 - 1P Large Rear View Radar Closest Enemy Name X Position (97 -> 71)
patch=1,EE,10142BA0,extended,0000028C //24050221 - 1P Large Rear View Machine Gun Counter X Position (545 -> 652)
patch=1,EE,10142BA8,extended,00000041 //24060048 - 1P Large Rear View Machine Gun Counter Y Position (72 -> 65)

//1 Player - Large Rear View + 2 Players - Horizontal Splitscreen
patch=1,EE,1014746C,extended,0000017F //240501A2 - 1P Large Rear View + 2P Horizontal Reticle Counter X Position (418 -> 383)
patch=1,EE,10147474,extended,0000000E //2406000A - 1P Large Rear View + 2P Horizontal Reticle Counter Y Position (10 -> 14)

//1 Player - Small Rear View
patch=1,EE,206D1520,extended,44100000 //44400000 - 1P Small Rear View Master X FOV
patch=1,EE,206D1540,extended,3F206D3A //3EF0A3D7 - 1P Small Rear View Master Y FOV
patch=1,EE,106D152C,extended,000001AC //000801A8 - 1P Small Rear View Viewport X Position (424 -> 428)
patch=1,EE,106D152E,extended,0000000E //C0000008 - 1P Small Rear View Viewport Y Position (8 -> 14)
patch=1,EE,206D1530,extended,450D0000 //450CC000 - 1P Small Rear View Camera X Position
patch=1,EE,206D1534,extended,44F6C000 //44F60000 - 1P Small Rear View Camera Y Position
patch=1,EE,206D1538,extended,000008D0 //000008CC - 1P Small Rear View Borders X Position (2252 -> 2256)
patch=1,EE,206D153C,extended,000007B6 //000007B0 - 1P Small Rear View Borders Y Position (1968 -> 1974)
patch=1,EE,10143220,extended,00000002 //24840001 - 1P Small Rear View Right Border X Position (Bug Fix) (2 -> 1)

//2 Players - Horizontal Splitscreen
patch=1,EE,206D0C30,extended,43E40000 //44180000 - 2P Horizontal P1 Master X FOV
patch=1,EE,206D0C50,extended,3F206D39 //3EF0A3D7 - 2P Horizontal P1 Master Y FOV
patch=1,EE,206D0CE0,extended,43E40000 //44180000 - 2P Horizontal P2 Master X FOV
patch=1,EE,206D0D00,extended,3F206D39 //3EF0A3D7 - 2P Horizontal P2 Master Y FOV
patch=1,EE,206EEF40,extended,C043645A //C0147AE1 - 2P Horizontal Master X Radar
patch=1,EE,10142634,extended,0000401D //3C013FE0 - 2P Horizontal Master X Weapon
patch=1,EE,10144D3C,extended,0000003F //24110057 - 2P Horizontal Radar Closest Enemy Name X Position (87 -> 63)
patch=1,EE,10142C20,extended,0000028C //24050221 - 2P Horizontal Machine Gun Counter X Position (545 -> 652)

//2 Players - Vertical Splitscreen
patch=1,EE,206D0D90,extended,43C00000 //44000000 - 2P Vertical P1 Master X FOV
patch=1,EE,206D0DB0,extended,3F206D3A //3EF0A3D7 - 2P Vertical P1 Master Y FOV
patch=1,EE,206D0E40,extended,43C00000 //44000000 - 2P Vertical P2 Master X FOV
patch=1,EE,206D0E60,extended,3F206D3A //3EF0A3D7 - 2P Vertical P2 Master Y FOV
patch=1,EE,206EEF54,extended,BFCF1AA0 //BF9F5C29 - 2P Vertical Master X Radar
patch=1,EE,206EEF60,extended,3F900000 //3F428F5C - 2P Vertical Master X Weapon
patch=1,EE,10144D4C,extended,0000003F //24110054 - 2P Vertical Radar Closest Enemy Name X Position (84 -> 63)
patch=1,EE,10147958,extended,00000029 //24A50036 - 2P Vertical Notification Center Offset X Position (54 -> 41)
patch=1,EE,10142C64,extended,000000A4 //240600A6 - 2P Vertical Machine Gun Counter Y Position (166 -> 164)
patch=1,EE,101474BC,extended,000000BB //24050102 - 2P Vertical Reticle Counter X Position (258 -> 187)
patch=1,EE,101474C4,extended,0000003F //24060035 - 2P Vertical Reticle Counter Y Position (53 -> 63)

//3-4 Players
patch=1,EE,206D1260,extended,44040000 //44300000 - 4P P1 Master X FOV
patch=1,EE,206D1280,extended,3F206D3A //3EF0A3D7 - 4P P1 Master Y FOV
patch=1,EE,206D1310,extended,44040000 //44300000 - 4P P2 Master X FOV
patch=1,EE,206D1330,extended,3F206D3A //3EF0A3D7 - 4P P2 Master Y FOV
patch=1,EE,206D13C0,extended,44040000 //44300000 - 4P P3 Master X FOV
patch=1,EE,206D13E0,extended,3F206D3A //3EF0A3D7 - 4P P3 Master Y FOV
patch=1,EE,206D1470,extended,44040000 //44300000 - 4P P4 Master X FOV
patch=1,EE,206D1490,extended,3F206D3A //3EF0A3D7 - 4P P4 Master Y FOV
patch=1,EE,206EEF68,extended,C006978D //BFCF5C29 - 4P Master X Radar
patch=1,EE,206EEF74,extended,3FBDF3B6 //3F83D70A - 4P Master X Weapon
patch=1,EE,101429C0,extended,00000111 //24060102 - 4P Master X Turbo Bar (258 -> 273)
patch=1,EE,101429C8,extended,00000025 //2408002E - 4P Master Width Turbo Bar (46 -> 37)
patch=1,EE,101429DC,extended,00000111 //24060102 - 4P Master X Energy Bar (258 -> 273)
patch=1,EE,101429E4,extended,00000025 //2408002E - 4P Master Width Energy Bar (46 -> 37)
patch=1,EE,101429F8,extended,0000012D //24060128 - 4P Master X Health Bar (296 -> 301)
patch=1,EE,101429FC,extended,00000010 //2407000F - 4P Master Y Health Bar (15 -> 16)
patch=1,EE,10142A00,extended,00000008 //2408000A - 4P Master Width Health Bar (10 -> 8) (Set to 9 to look better on real PS2s/PCSX2 GSdx software mode)
patch=1,EE,10171AD0,extended,0000019D //2405018A - 4P Team Play Scoreboard - RED TEAM HIT PTS # X Position (394 -> 413)
patch=1,EE,20171AD8,extended,0C07459E //0C074592 - 4P Team Play Scoreboard - RED TEAM HIT PTS # Use fontSpritePrintCenteredXY Instead of fontSpritePrintXY
patch=1,EE,10171BC8,extended,0000019D //2405018A - 4P Team Play Scoreboard - WHITE TEAM HIT PTS # X Position (394 -> 413)
patch=1,EE,10171BD0,extended,0C07459E //0C074592 - 4P Team Play Scoreboard - WHITE TEAM HIT PTS # Use fontSpritePrintCenteredXY Instead of fontSpritePrintXY
patch=1,EE,10171F9C,extended,0000019D //240501BC - 4P Free For All Scoreboard - HIT PTS # X Position (444 -> 413)

//Moving Enemy Health Bars
patch=1,EE,10144BF8,extended,00000020 //2408002A - Moving Enemy Health Bar Width (42 -> 32)
patch=1,EE,10144C00,extended,00000010 //24C60015 - Moving Enemy Health Bar X Position Offset (21 -> 16)

//Moving Enemy Indicator Arrows
patch=1,EE,10144694,extended,0000FFF7 //26A6FFF4 - Moving Enemy Indicator Arrow Left Width (-12 -> -9)
patch=1,EE,101446BC,extended,00000009 //26A9000C - Moving Enemy Indicator Arrow Right Width (9 -> 12)

//Sprites
patch=1,EE,20245DF0,extended,43E40000 //44180000 - "Hollow" Sprite Width (Non-Interactive Trees, Signal Lights, Etc...)
//patch=1,EE,20245B28,extended,43E40000 //44180000 - "Physical" Sprite Size (Interactive Bushy Trees, Weapon Pickups/Street Lights Glow, Etc...) (WIP)
//patch=1,EE,20245B48,extended,43640000 //43980000 - "Physical" Sprite Rotation (Interactive Bushy Trees, Weapon Pickups/Street Lights Glow, Etc...) (WIP)

//Generic Font
patch=1,EE,101D14E4,extended,00000007 //24060005 - Most In-Game Text Widths (Notifications, Machine Gun Counter, Start Menu, Scoreboards, Etc...) (5 -> 7)

//Radar - Closest Enemy Names Widths (hudCarWidths)
patch=1,EE,20251288,extended,09070707 //0C0A0A09 - Closest Enemy Names Pixel Widths ("OutLaw", "Yellow-J", "RoadKill", "         " - Initial Empty Name for "WarHawk") (12 -> 9, 10 -> 7, 10 -> 7, 9 -> 7)
patch=1,EE,2025128C,extended,06080808 //090B0B0B - Closest Enemy Names Pixel Widths ("Brimstone", "S-TOOTH", "Crazy 8", "Spectre") (9 -> 6, 11 -> 8, 11 -> 8, 11 -> 8)
patch=1,EE,20251290,extended,09070807 //0C0A0B09 - Closest Enemy Names Pixel Widths ("Axel", "Mr.Grimm", "Shadow", "Junk-Dog") (12 -> 9, 10 -> 7, 11 -> 8, 9 -> 7)
patch=1,EE,20251294,extended,08060707 //0B090A0A - Closest Enemy Names Pixel Widths ("Minion", "M-Slaught", "DarkSide", "W-Knight") (11 -> 8, 9 -> 6, 10 -> 7, 10 -> 7)
patch=1,EE,10251298,extended,00000808 //00000A0B - Closest Enemy Names Pixel Widths ("Tanker", "WarHawk") (10 -> 8, 11 -> 8)

//Radar - Coordinates Positioning
patch=1,EE,10145154,extended,00004134 //3C014170 - Radar X Axis Coordinates Width
patch=1,EE,20145180,extended,08086090 //46051082 - j $00218240 - Jump to injected MIPS instructions
patch=1,EE,20218240,extended,3C014170 //0080302D - lui at, $4170 - Set radar Y axis coordinate height #1
patch=1,EE,20218244,extended,44812800 //24030070 - mtc1 at, $f5 - Set radar Y axis coordinate height #2
patch=1,EE,20218248,extended,08051462 //2404001C - j $00145188 - Jump to 2 lines after the overwritten MIPS instruction
patch=1,EE,2021824C,extended,46051082 //70C31818 - mul.s $f2, $f2, $f5 - Restore overwritten MIPS instruction from initial jump

//Left-Aligned Text Positioning (fontSpritePrintXY)
patch=1,EE,201D164C,extended,08086094 //00041940 - j $00218250 - Jump to injected MIPS instructions
patch=1,EE,20218250,extended,4485F800 //00A42018 - mtc1 a1, $f31 - Convert int to float #1
patch=1,EE,20218254,extended,4680FFE0 //27BDFFF0 - cvt.s.w $f31, $f31 - Convert int to float #2
patch=1,EE,20218258,extended,3C0142D5 //3C020075 - lui at, $42d5 - Set $f30 register to 106.666687 #1
patch=1,EE,2021825C,extended,34215558 //FFBF0000 - ori at, at, $5556 - Set $f30 register to 106.666687 #2
patch=1,EE,20218260,extended,4481F000 //2442A310 - mtc1 at, $f30 - Set $f30 register to 106.666687 #3
patch=1,EE,20218264,extended,461EFFC0 //00832021 - add.s $f31, $f31, $f30 - Add $f30 to $f31
patch=1,EE,20218268,extended,3C013F40 //00441021 - lui at, $3f40 - Set $f30 register to .75 #1
patch=1,EE,2021826C,extended,4481F000 //8C430010 - mtc1 at, $f30 - Set $f30 register to .75 #2
patch=1,EE,20218270,extended,461EFFC2 //10600004 - mul.s $f31, $f31, $f30 - Multiply $f31 by $f30
patch=1,EE,20218274,extended,3C013F00 //0000102D - lui at, $3f00 - Set $f30 register to .5 #1
patch=1,EE,20218278,extended,4481F000 //0C086078 - mtc1 at, $f30 - Set $f30 register to .5 #2
patch=1,EE,2021827C,extended,461EFFC0 //00C0202D - add.s $f31, $f31, $f30 - Add .5 for rounding
patch=1,EE,20218280,extended,4600FFE4 //8C420058 - cvt.w.s $f31, $f31 - Convert float to int #1
patch=1,EE,20218284,extended,4405F800 //DFBF0000 - mfc1 a1, $f31 - Convert float to int #2
patch=1,EE,20218288,extended,08074595 //03E00008 - j $001d1654 - Jump to 2 lines after the overwritten MIPS instruction
patch=1,EE,2021828C,extended,00041940 //27BD0010 - sll v1, a0, 5 - Restore overwritten MIPS instruction from initial jump

//Sub Pixel Font Width/Spacing (fontSetCharSizesInSubPixels)
patch=1,EE,201D18A4,extended,08074634 //00042140 - j $001d18d0 - Jump to injected MIPS instructions
patch=1,EE,201D18D0,extended,3C013F40 //2442ACB0 - lui at, $3f40 - Set $f29 register to .75 #1
patch=1,EE,201D18D4,extended,4481E800 //00042140 - mtc1 at, $f29 - Set $f29 register to .75 #2
patch=1,EE,201D18D8,extended,3C013F00 //24424540 - lui at, $3f00 - Set $f30 register to .5 #1
patch=1,EE,201D18DC,extended,4481F000 //00822021 - mtc1 at, $f30 - Set $f30 register to .5 #2
patch=1,EE,201D18E0,extended,4485F800 //9483000E - mtc1 a1, $f31 - Convert int to float #1
patch=1,EE,201D18E4,extended,4680FFE0 //9482000C - cvt.s.w $f31, $f31 - Convert int to float #2
patch=1,EE,201D18E8,extended,461DFFC2 //00A32818 - mul.s $f31, $f31, $f29 - Multiply $f31 by $f29
patch=1,EE,201D18EC,extended,461EFFC0 //70C23018 - add.s $f31, $f31, $f30 - Add .5 for rounding
patch=1,EE,201D18F0,extended,4600FFE4 //A4850010 - cvt.w.s $f31, $f31 - Convert float to int #1
patch=1,EE,201D18F4,extended,4405F800 //A4860012 - mfc1 a1, $f31 - Convert float to int #2
patch=1,EE,201D18F8,extended,4487F800 //03E00008 - mtc1 a3, $f31 - Convert int to float #1
patch=1,EE,201D18FC,extended,4680FFE0 //A4850014 - cvt.s.w $f31, $f31 - Convert int to float #2
patch=1,EE,201D1900,extended,461DFFC2 //2442ACB0 - mul.s $f31, $f31, $f29 - Multiply $f31 by $f29
patch=1,EE,201D1904,extended,461EFFC1 //00042140 - sub.s $f31, $f31, $f30 - Subtract .5 for rounding
patch=1,EE,201D1908,extended,4600FFE4 //24424540 - cvt.w.s $f31, $f31 - Convert float to int #1
patch=1,EE,201D190C,extended,4407F800 //00822021 - mfc1 a3, $f31 - Convert float to int #2
patch=1,EE,201D1910,extended,0807462B //9483000E - j $001d18ac - Jump to 2 lines after the overwritten MIPS instruction
patch=1,EE,201D1914,extended,00042140 //9482000C - sll a0, a0, 5 - Restore overwritten MIPS instruction from initial jump

//Sub Pixel-Based Text Positioning (fontSetCursorAtSubPixel)
patch=1,EE,201D195C,extended,08074646 //00042140 - j $001d1918 - Jump to injected MIPS instructions
patch=1,EE,201D1918,extended,4485F800 //00C33018 - mtc1 a1, $f31 - Convert int to float #1
patch=1,EE,201D191C,extended,4680FFE0 //70A22818 - cvt.s.w $f31, $f31 - Convert int to float #2
patch=1,EE,201D1920,extended,3C0144D5 //A4860010 - lui at, $44d5 - Set $f30 register to 1708.333374 #1
patch=1,EE,201D1924,extended,34218AAB //A4850012 - ori at, at, $8aab - Set $f30 register to 1708.333374 #2
patch=1,EE,201D1928,extended,4481F000 //03E00008 - mtc1 at, $f30 - Set $f30 register to 1708.333374 #3
patch=1,EE,201D192C,extended,461EFFC0 //A4860014 - add.s $f31, $f31, $f30 - Add $f30 to $f31
patch=1,EE,201D1930,extended,3C013F40 //2442ACB0 - lui at, $3f40 - Set $f30 register to .75 #1
patch=1,EE,201D1934,extended,4481F000 //00042140 - mtc1 at, $f30 - Set $f30 register to .75 #2
patch=1,EE,201D1938,extended,461EFFC2 //24424540 - mul.s $f31, $f31, $f30 - Multiply $f31 by $f30
patch=1,EE,201D193C,extended,3C013F00 //00052900 - lui at, $3f00 - Set $f30 register to .5 #1
patch=1,EE,201D1940,extended,4481F000 //00822021 - mtc1 at, $f30 - Set $f30 register to .5 #2
patch=1,EE,201D1944,extended,461EFFC0 //00063100 - add.s $f31, $f31, $f30 - Add .5 for rounding
patch=1,EE,201D1948,extended,4600FFE4 //A4860012 - cvt.w.s $f31, $f31 - Convert float to int #1
patch=1,EE,201D194C,extended,4405F800 //A4850010 - mfc1 a1, $f31 - Convert float to int #2
patch=1,EE,201D1950,extended,08074659 //03E00008 - j $001d1964 - Jump to 2 lines after the overwritten MIPS instruction
patch=1,EE,201D1954,extended,00042140 //A4850014 - sll a0, a0, 5 - Restore overwritten MIPS instruction from initial jump

//Tweaks - Table of Contents - Top Page
patch=1,EE,1020A98C,extended,00000018 //24050082 - "Table Of Contents" X Position (130 -> 24)
patch=1,EE,1020A9A8,extended,0000FF9E //2405000A - "---------------------------------------------" X Position (10 -> -98)
patch=1,EE,1020AED8,extended,0000FF9A //24050005 - List X Position (5 -> -102)

//Tweaks - Table of Contents - Active Page
patch=1,EE,1020AA00,extended,00000021 //2405008C - "Page %2d of %d - %s" X Position (140 -> 33)
patch=1,EE,1020ABA0,extended,0000FF9A //24050005 - List X Position (5 -> -102)

//Tweaks - Stats
patch=1,EE,201FF0AC,extended,2405FF95 //0000282D - "Enable Stats?" 1+2 Text X Position (0 -> -107)

//Tweaks - View FOV
patch=1,EE,102108B0,extended,00004140 //3C014180 - FOV View Plane Dist. Increment/Decrement Number
patch=1,EE,102108BC,extended,00004340 //3C014380 - FOV View Plane Dist. Minimum Number
patch=1,EE,102108C8,extended,00004440 //3C014480 - FOV View Plane Dist. Maximum Number
patch=1,EE,102108D4,extended,00004307 //3C014334 - FOV Degrees Maximum Number


