Did you try with the newer codehandler file too? The Opti has minor optimizations and a few additional fixes. If you want to check, delete the condition cycle speed and UI slideout speed section of opti and see if the bars are still red, if they are then my optimizations were buggy. Also, the reason why Opti worked for me and not other people, was that the 30fps main menu was triggering the bug, which I didn't notice since my main menu is always 60fps.
Thanks for checking. I'll see if 8083460c corresponds to anything else I know. Maybe I can just find a different memory trigger entirely.
@Jersh It's ok. As I thought, the memory trigger has a different value for some unknown reason. Be sure to give me your values when it's not working so we can compare. Also, you said the ini might be where it's coming from. If someone with 30fps menus wants to upload their xenoblade ini file, I could look at that too.
The only codehandler I've used is the default one that comes with the latest Dolphin versions. I never felt the need to go back to the old one since I got stutters VERY infrequently and I don't use tons of Gecko codes anyway. Anyway, I'll give you my .ini if you want.
Additionally, I removed the condition cycling, etc. section from the optimized code, and it does indeed fix the health bars always being red.
Found it. I really thought I ran through these options when testing, but I guess I missed it. Fast Disc Transfer is breaking the main menu. Try playing with it set to off/unchecked and tell me if anything runs or loads particularly slower for you. I'll still try to find a more universal trigger for the main menu.
My to do:
Check health bars
New trigger for main menu
Test head motion more thoroughly
Check Z button controls
For anyone else:
Check the Opti60fps Delag code in a recent build without replacing the codehandler and let me know if there is any stutter (sometimes it's just once every 10-20 seconds).
Good fucking god how did I not think of that. I guess just because I pretty much always have it checked for anything that doesn't break with it on, I didn't even consider it. Anyway, yes, with SUDTR turned off, the menu is properly in 60fps. The loading is significantly slower, a few seconds I would say, but it's not excruciating. I would definitely prefer to be able to have it turned on while playing because with it on the load times are almost instant, but I understand if it doesn't work. It is a hack, after all.
(10-10-2017, 04:21 PM)One More Try Wrote: [ -> ]Found it. I really thought I ran through these options when testing, but I guess I missed it. Fast Disc Transfer is breaking the main menu. Try playing with it set to off/unchecked and tell me if anything runs or loads particularly slower for you. I'll still try to find a more universal trigger for the main menu.
My to do:
Check health bars
New trigger for main menu
Test head motion more thoroughly
Check Z button controls
For anyone else:
Check the Opti60fps Delag code in a recent build without replacing the codehandler and let me know if there is any stutter (sometimes it's just once every 10-20 seconds).
Ah, that would explain why creating a fresh ini would fix it, yet the problem would keep coming back. Makes sense. I don't know why that option would break it, but that's consistent with what I've experienced. Glad I managed to help, even if only by pointing you in the right direction.
60fps main menu for everyone. I don't know if it break anything, but the only thing that can go wrong is a 30fps movie being forced into 60fps.
$Opti60fps delag
22666098 3f400000
04666098 3f400000 //Ice Slide Speed
04666fdc 42F00000 //condition cycle speed
04667038 42F00000
046673f0 43340000 //UI slideout
04667420 43340000
C24C1ED4 00000002 //Stairs unsticky
EC3F0024 EC2100B2
60000000 00000000
0466606c 3b23d000 //buggy lift
04667870 43480000 //Burst B fix
C2181264 00000002
EC0010FA EC00182A
60000000 00000000
0412e66c 41820008 //Slow Text
C212E668 00000003
7F85E378 7F66DB78
3E608000 82731824
2C130001 00000000 //Text End
041a3dec 41820008 //Slow Cutscene Text
C21A3DE8 00000003
807F0088 7FA4EB78
3E608000 82731824
2C130001 00000000 //End
0466AB90 3F000000 //Cutscene Switch speed
C24A0838 00000002
3E808082 82949E68
2C140002 00000000
C203A52C 00000004 //screen dimming duration
3E808082 82949E68
2C140001 3803F800
41A20008 3803F000
60000000 00000000
C24ED0AC 00000001 //Head Movement
ECC0C63A 00000000
C24EC8BC 00000001
EC40FFFA 00000000
C24ED0B4 00000001
ECA0C63A 00000000
C249A358 00000004 //Menu 60fps
3FC080CA 63DE54B4
C282CF74 7C03F000
41A20008 EC210532
83C10008 00000000
041C3904 3803FFFA
041C38EC 2800001A
041C3890 2800001A
041C38A8 3803FFFA
046687A0 41A00000
046687A8 40666667
04668890 42080000
04668894 41900000 //Menu End
C24497D4 00000002 //Select art controls
7D084214 7CE83A14
60000000 00000000
C24497FC 00000002
7D084214 7CE83850
60000000 00000000 //Controls End
C20BAD8C 00000003 //Grass double value if fraction
EEA1082A FE810878
FC34A86E C01F2F48
60000000 00000000
C248C048 00000006 //waterfall pause 2
C3C2CE5C 3E808081
62949E68 82940000
2C140002 41820018
3E808000 82941824 //Gr1824
2C140000 41A20008
EFDEF028 00000000
C244B714 0000000B //Impotrant Timer
3E808000 62941824 //Gr1824
80140000 68000001 //and FPS set
90140000 3E808066
82944268 2C140000
38000001 41A20024
3E808066 82943E18
3C008082 6000CB00
7C140000 38000001
41A20008 38000002
3E808082 90149E68
38630001 00000000
C216ADC4 00000005 //Timer mods using Gr1824
3E808082 82949E68 //skip if movie
2C140002 3A800001
4182000C 3E808000
82941824 7C04A214
60000000 00000000
C216ADCC 00000001
7C03A214 00000000
C21669CC 00000003 //not skipped
EE421024 EE52902A
EC009024 D01E01E8
60000000 00000000 //End Timer
C216AD8C 00000004 //Intro Only Probably
3E808082 82949E68
C0229BCC 2C140002
41820008 C022CF74
60000000 00000000
C2137DE8 00000002 //UI Speeds Half
C002CF74 EC210032
C0030010 00000000
C205C414 00000002 //Climb Fix
C3E2CF74 EC01EFFA
60000000 00000000
C244B468 00000001 //disable run speed update
60000000 00000000
04819e78 0000001E //set run speed manually
E2000001 00000000
22CA54C0 00000000
04CA54C0 3F000000 //60 fps speed
E0000000 80008000
/edit Updated with fixed health bar bug
/edit2 Added head movement code
(edited for clarity) The mechonis field conveyor bug is due to moving textures being paused every other frame to keep them moving at the correct speed. When on the conveyor your movement speed being equal to the conveyor makes it obvious the texture is pausing. Not sure if I can fix it

Maybe I can make the character move at double speed on the conveyor then pause it when the texture pauses - making them both update at 30 fps.
/edit Because the conveyor moves very simply, I actually did make progress on 60fps patching it. The two problems are that it breaks for a few frames when the texture loops (once every 23 seconds), and I would need to find a unique identifier so I only apply the fix to conveyors. How many conveyors are there approximately? Not sure if they all use the same values.
/edit Wow I may have made some progress on all moving textures. If I increment the counter by 0.5 then round the counter down during key frame checks, it'll output the keyframe value twice for two frames, making it 30fps. Then for the calculations that are used when no keyframe is triggered, I reload the fractional counter to normal - making it update at 60fps. Since keyframe are infrequent, it's effectively 60fps. The conveyor stutters slightly for one frame every 45 seconds (I think), you don't even really notice it.
Here's my new moving textures code. It may need more tweaks.
$Opti60fps delag MovTex
22666098 3f400000
04666098 3f400000 //Ice Slide Speed
04666fdc 42F00000 //condition cycle speed
04667038 42F00000
046673f0 43340000 //UI slideout
04667420 43340000
C24C1ED4 00000002 //Stairs unsticky
EC3F0024 EC2100B2
60000000 00000000
0466606c 3b23d000 //buggy lift
04667870 43480000 //Burst B fix
C2181264 00000002
EC0010FA EC00182A
60000000 00000000
0412e66c 41820008 //Slow Text
C212E668 00000003
7F85E378 7F66DB78
3E608000 82731824
2C130001 00000000 //Text End
041a3dec 41820008 //Slow Cutscene Text
C21A3DE8 00000003
807F0088 7FA4EB78
3E608000 82731824
2C130001 00000000 //End
0466AB90 3F000000 //Cutscene Switch speed
C24A0838 00000002
3E808082 82949E68
2C140002 00000000
C203A52C 00000004 //screen dimming duration
3E808082 82949E68
2C140001 3803F800
41A20008 3803F000
60000000 00000000
C24ED0AC 00000001 //Head Movement
ECC0C63A 00000000
C24EC8BC 00000001
EC40FFFA 00000000
C24ED0B4 00000001
ECA0C63A 00000000
C249A358 00000004 //Menu 60fps
3FC080CA 63DE54B4
C282CF74 7C03F000
41A20008 EC210532
83C10008 00000000
041C3904 3803FFFA
041C38EC 2800001A
041C3890 2800001A
041C38A8 3803FFFA
046687A0 41A00000
046687A8 40666667
04668890 42080000
04668894 41900000 //Menu End
C24497D4 00000002 //Select art controls
7D084214 7CE83A14
60000000 00000000
C24497FC 00000002
7D084214 7CE83850
60000000 00000000 //Controls End
C20BAD8C 00000003 //Grass double value if fraction
EEA1082A FE810878
FC34A86E C01F2F48
60000000 00000000
C23DFE1C 00000003 //Updated Moving Texture
1C00000C D022FFFC
F0223FF8 E0223FF8
60000000 00000000
C23DFEBC 00000002
C043000C C022FFFC
60000000 00000000
C23E5B54 00000004
C02D9BE0 3D808082
818C9E68 2C0C0002
4182000C C062CF74
EC230072 00000000
C23E5128 00000004
C02D9BE0 3D808082
818C9E68 2C0C0002
4182000C C062CF74
EC230072 00000000
C23E8AEC 00000004
C02D9BE0 3D808082
818C9E68 2C0C0002
4182000C C062CF74
EC230072 00000000
C244B714 0000000B //Impotrant Timer
3E808000 62941824 //Gr1824
80140000 68000001 //and FPS set
90140000 3E808066
82944268 2C140000
38000001 41A20024
3E808066 82943E18
3C008082 6000CB00
7C140000 38000001
41A20008 38000002
3E808082 90149E68
38630001 00000000
C216ADC4 00000005 //Timer mods using Gr1824
3E808082 82949E68 //skip if movie
2C140002 3A800001
4182000C 3E808000
82941824 7C04A214
60000000 00000000
C216ADCC 00000001
7C03A214 00000000
C21669CC 00000002 //Not Skipped
C242CF74 EC0004B2
D01E01E8 00000000
60000000 00000000 //End Timer
C216AD8C 00000004 //Intro Only Probably
3E808082 82949E68
C0229BCC 2C140002
41820008 C022CF74
60000000 00000000
C2137DE8 00000002 //UI Speeds Half
C002CF74 EC210032
C0030010 00000000
C205C414 00000002 //Climb Fix
C3E2CF74 EC01EFFA
60000000 00000000
C244B468 00000001 //disable run speed update
60000000 00000000
04819e78 0000001E //set run speed manually
E2000001 00000000
22CA54C0 00000000
04CA54C0 3F000000 //60 fps speed
E0000000 80008000
The Z button issue is weird. It works if you release it within about 4 frames, then it breaks for a few frames, then it works because you've held it long enough.
I've reached Central Factory in the meantime, and while your latest code fixed the conveyor belts in Mechonis Field, there is an another one in CF (Between Landing strip 1 and Maintenance Entrance 1 on ground floor). It had the same issue as the MF ones, but now they are broke differently. They move in the right direction for 1-2s then stop and maybe even turn around for a few frames before they move in the right direction again.
There is also 2 pairs of them on the topmost floor of Mechonis Field. Those were not affected at all. Just to keep an eye on them, so you won't accidentally break it
Aside from that everything else seems to work perfectly. The title screen is in 60 fps, the slideouts are the correct speed, and the head movements also seems to work correctly. You literally fixed almost every single bug I reported in a few days. Great work!
Thanks for the continued reports. I'll keep working!
I forget, did we determine that 60fps cutscenes involved way too much math and weird stuff to be worth it? This testing was the first time I'd looked at this thread in a while, sorry.
The code that worked the best lagged quite a bit (possibly solvable) and had additional bugs that took too much effort to track down. Maybe I would have kept working on it if the code didn't need more work outside of movies, but with all the extra work I've needed to do, I'm planning on just dropping movies.
/edit Tell me if this fixes nunchuck's Z and if it breaks or hurts anything else, control-wise
$z button
C2449844 00000002
7D084214 7C083800
60000000 00000000
Give me a save directly next to the broken conveyor in central factory.