Wow, Thanks for the explanation, i believe that understand.
Thanks for all your help.
Yeah sorry, I made it way too technical, so I edited it to be easily understandable and maintain a balance between necessary and unnecessary details.
As for a build with multiscreen support, I think this build should have it:
2017/05/06:
https://puu.sh/BDKZo/326b408194.lzma
2017/06/23:
https://puu.sh/BDKZV/e547aac719.zip
Around 2017 older builds were better and had a bit more performance, but had horrible compatibility compared to the latest version. However, multi-screen support butchers the performance completely.
Speaking about multiscreen support, I'm not sure about the HzScreen source I gave to you, but multiscreen support might be partially removed (even though some code may be still present in the comments, I think it's completely nuked from the source due to a rewrite I'm working on). If you can't re-add multiscreen support yourself then ask me, but it will take a very long time because I can't really dev nowdays.
As for doing multiscreen, you need to set the screen mode according to this bitfield:
0 - streaming off (why would you do this?
)
1 - top screen
2 - bottom screen
3 - top and bottom screen "interlaced"
4 - invalid, top screen 3D
5 - top screen in 3D in left-right mode
6 - invalid, top screen 3D and bottom screen
7 - invalid, not enough RAM, all 3 framebuffers
anything above 8 is just repetition due to the bits not being used (though don't set it higher than 5 because certain versions have memory leaks in them)
As for the earlier mentioned "performance balance"; I don't know about your programming skills, but I'll write it down in case someone lurking here wants to follow along wants to actually do it:
There is a magic configuration block ID 0xFF which controls this performance balance. The values are in I think miliseconds, and can range from 1 to 254.
A value of 0 is the default, and that means no delay on new3DS, and a hardcoded delay for old3DS as a fallback to allow some CPU time to the games too without making them stutter too much.
A value of 0xFF should be VSync, but in some early version where this was added (late 2017 probably, might be even early 2018, I'm 97% certain it's not present in the above two builds) it was implemented badly and could sometimes cause the whole system to softlock or crash a sysmodule.
This config block was only added for the (partially scrapped but still accessible) InputRedirection patch to allow enough CPU time for the InputRedirection packets to make it to the 3DS without causing too much lag or latency.