I'm seraching for 16:9 wide elf code of ICO. nemesis2000 made two type of elf code about ICO. And ps2dis tool can see the mips code in elf as he said.
first, it has some bug in out side of 4:3 screen.
Ico (PAL)
00000000 00000000 03000146 E08087C7 00000000
change to
403F013C 00C08144 03000146 E08087C7 82101846
403F013C lui at, $3f40 //at = 3f400000(0.75)
00C08144 mtc1 at, $f24 //at's 32bit copy to f24, f24 = 3f400000(0.75)
82101846 mul.s $f2, $f2, $f24 //f2 = f2*f24
I guess
$f2 is maybe resister of fov value and f24 is just temporary space. So, $f2 can't be changed and $f24 maybe can be changed.
HG's elf code use 00008144 (mtc1 at, $f0). Maybe $f0 is temporary space in this game. But ICO use $f0 in same sub routine. 03000146 and E08087C7, these seem unimportant.
second, it doesn't work to NTSC-K and PAL.
NTSC-U
(zoom+)
009280AF 8A9B060C 049280AF 803F013C
changed to
009280AF 8A9B060C 049280AF 403F013C
lui at, $3f80 change to lui at, $3f40 //at = 1.0 -> 0.75(zoom*0.75)
(hor fov-)
709389C7 604A8046 4040013C 00088144
changed to
709389C7 604A8046 1040013C 00088144
lui at, $4040 change to lui at, $4010 //at = 3.0 -> 2.25(fov*0.75)
Zoom+ has no problem. but hor fov- has a bug when it set below some value.
I found NTSC-K code out corresponding these PAL and NTSC-U code.
And tested by changing hor fov. Until 2.578(40250000) it works.
3.0 -> 2.578 is almost 4:3 -> 16:10.3
NTSC-K (SCPS_560.01) 16:10.3 (there was no problem for 30 minute)
zoom+(value*0.859375)
389380AF C0BE060C 3C9380AF 803F013C
389380AF C0BE060C 3C9380AF 5C3F013C
hor fov-(value*0.859375)
D09489C7 604A8046 4040013C 00088144
D09489C7 604A8046 2540013C 00088144
and adding first elf code makes 16:9 (it still has bug outside of 16:10.3)
00000000 00000000 03000146 0040013C 00408144 00000000
5F3F013C 00C08144 03000146 0040013C 00408144 82101846
5F3F013C lui at, $3F5F //at = 3F5F0000(0.871094)
0.859375*0.871094 = 0.7485(about 0.75)
i guess PAL is similar to NTSC-K because they show same bug screen.
--------16:9-------------16:10-------------16:10.3