HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
So, remember the huge pr I was walking about?
https://github.com/dolphin-emu/dolphin/pull/4178
just check the up right corner, +259 , -42, these are the numbers of line of code that was added and deleted. Together, it means this pr modifies 301 lines of code!
Woah!
So, after hours of code review (just check the first comment, THAT is a big code review, but trust me, it's necessary), it is now pending. Hopefully we hear more about it soon enough
But what does it do?
An explanation to this requires explanation of what is a register.
Your CPU has memory, yeah, I know, it has the cache, but it also have very vwery very small amount of memory mainly used to process instruction before the result is stored in soemthing like the ram. These memory are more used temporaily and are constantly overwritten because the isntructiosn needs them. These are the registers (no, not the.....dumb windows setting thing).
So, the instructiions can load stuff from ram into a register, perform math on them, move registers around, store them in ram, etc..., it can basically do the msot basic stuff with them.
What about dolphin? Well dolphin has a debugger which I have been determined to make it more usable (yeah, that progress report was right, but that's because I talked with the author a bit once). That debugger not only allows to see the assembler, but also the register because of course, you need to knwo the values of the registers to understand stuff.
Great, awwsome, unfortunately it has one particular annoyance: data representation. See, they only have one format, hexadecimal. It's fine for viewing stuff like an address or a custom formatted data, but for numbers, epsecially signed one and floating point one.......it is just impossible you have to use an online converter.
Let me give you an exampe, -19 in hexadecimal is ffffffed as signed integer, signed integer are weird because the first bit (the one that worth the most) serve as the sign so for this thing, yiou have to count from 0 backwards until you reach ffffffed and since you subtracted 19, you have -19.
Obviously, any human would find this ridiculous so they'll jsut use a converter made for this. But where it becomes more complicated is floating point. A float is.....convulated in formatting I mean what is 1.0 in float expressed in hexa? 3f800000, yeah and worse, double has different thigns for the same number (1.0 is 3ff0000000000000 in double).
And let's go back to registers, there's 32 general purpose register and 32 flaoting pont one. The GPR can hold integer and float while the fpr are made to hold double. You quickly get the idea of how annoying it can be to quickly see "oh, there's 2.0 in this register", you need a way to have different formatting available.
That's exactly what this pr does!
A right click and you ahve all the format.
It takes a lot of code and time to do because it involves MANY type conversion and MANY structuration. I had to restructure around 3 times, 2 times as a wip, once in code review. And then you ahd to think about parsing them back to they can be written to the register in that format.
So yeah, glad this pr is submitted, hopefully more stuff comes, but I do have other ideas on the debugger