Wow it's
@dimok. Nice to see you around again.
I can definitely agree with some points there, there's a point where if you're reimplementing the exact same thing that you really can't help but get extremely close to the SDK, especially in this case since everything is almost purely headers. Basically the main issue came down to not being able to validate the origin of code, most of it comes from code which was already open, but a lot of headers were not able to be validated in your absence, and as such I wrongly assumed. My mistake there, in that case. My basic train of thought was that I'd rather be safe and have my code in the clear vs. risking things, but even then once you've seen another implementation you can't
really code another which is totally different (and even then, my current GX2 init is extremely similar to your which is extremely similar to initialization in some games).
I will say though that the memory management bit was rewritten without referencing the original, referencing only decaf, but it only ended up happening because someone in #wiiu-emu made a fuss about it (but, again, can't really prove that this was the case). In my opinion it's just one of those things which it doesn't matter how you rewrite it, it's the same code. The devoptab however originated from ctrulib and was readapted to Wii U, and I personally think it came out a bit better that case since it implements some things which weren't present in yours.
It may be worth clearing things up with decaf-emu developers if your code is in fact in the clear. It was very much suggested to me, when I started contributing, to avoid public headers because they
might be SDK-derived (this was some time after the memory.c deal), so I simply avoided them when contributing things. Most of my choices with C and texture2D were just from personal preference but that also factored in a bit. I'd much rather work in C than C++ and it was very difficult for me to figure out how to work with the GX2 from public samples, unless I just pulled everything in.
I'm not quite sure on the interacting with hardware registers directly thing though, mostly because loader.elf is a pain already and I can't imagine replacing it while keeping existing RPX loading. At the very minimum you would still have to interact with IOS directly if you were replacing coreinit FS functionality, and in some cases it might just not be worth the work? But again, using Nintendo's existing libraries is already kinda funky because you end up with headers which are inherently just SDK headers but renamed. I dunno.