It definitely can be, C#, .NET and relevant libraries have come a long way and the language allows you to do pretty low level stuff if you really want to by enabling unsafe operations. C# has gotten a bad rap from people just letting the GC take care of all data and how bad the early days GC was. But it's a pretty great language these days and absolutely can be used for high-performance code if you understand how to utilize it properly.That's an interesting approach to coding an emulator, I wonder if it'll be as fast as native code.
I'm a C# coder myself, so I find this pretty cool.
Good luck with your project, looking forward to seeing how it progresses.
Thanks. Didn't know anyone tried to do a recompiler using CIL before (except for a PSP emulator in C#). The biggest disvantage right now is not being able to use x86 SSE/AVX instruction equivalents for the SIMD arm instructions. However .net is getting intrinsics support and that should be available on the next version, so in the future I will be able to call those intrinsic methods directly and have the JIT emit SSE/AVX and this should improve the performance a lot.Holy shit, this is awesome. I've always been a huge proponent of targeting CIL for recompilation -- I'm excited to see someone else doing it too! Very nice job, and good luck going forward.
Yes but System.Numerics is very limited, it will only use a couple of the simd instruction exposed through the Vector classes. Currently it only exposes basic operations like add, subtract, divide, multiply, negate and logical operations like and, or, xor... A lot of instructions aren't exposed this way, like all scalar operations using SSE registers (you can get those using some of the methods on the Math class, but then you need extract/insert the scalar elements from the vectors all the time), shifts, more involved operation like MultiplyAdd, Broadcast, Load/Store, and so on...@gdkchan I think use can use SIMD instructions through System.Numerics since the latest update
Currently it only runs decrypted and extracted games. (So, no XCI or NCA support).If you fired up Puyo Puyo Tetris, I'm curious on how this is handling game decryption.
Currently it only runs decrypted and extracted games. (So, no XCI or NCA support).If you fired up Puyo Puyo Tetris, I'm curious on how this is handling game decryption.
Okay... Then I'm curious how YOU are handling game decryption. LOL!
Or you can just use the NET Core SDK and compile that way ;3So, let me see what Visual Studio packages I need to install:
A total whopping of 26GB required.
- Visual Studio 2017 Community (600MB)
- Universal Windows Platform Development (Windows SDK 10.0 10586.0) (8.6GB)
- .NET Desktop Development (???)
- .NET Core Cross-Platform Development (???)
Anything else?