Nintendo Maniac
New member
Correct me if I'm wrong, but isn't reversing microcodes a HLE thing?
Wow, I'm on a roll with these "derp moments", aren't I? Maybe I should just stop talking...
Correct me if I'm wrong, but isn't reversing microcodes a HLE thing?
Wow, I'm on a roll with these "derp moments", aren't I? Maybe I should just stop talking...
I gotta ask, what CPU are you running your micro-benchmarks on?
Been a couple days, so bumping for an update.
- The assembler I wrote has paid itself off a hundred times over. Found quite a few bugs in the scalar unit and hammered them all out.
- All instructions other than LWC2/STWC2/CTC*/MTC*/MFC*/VECTOR are done and all infrastructure is in place, so the next week or so will likely be spent implementing instructions.
- Before instructions enter the pipeline, my simulator must classify them to determine if it needs to create stall cycles due to load, store, or use dependencies. Runtimes for my micro-benchmarks were getting quite poor, so I profiled the simulator and realized I spent a large fraction of time classifying the instructions (as it was resorting to a jump table twice per cycle). I implemented a much more clever solution that involves only one conditional branch and two array fetches and was pleased to see that it went from being one of the largest time hogs to one of the smallest time hogs. Not only that, but depending on the complexity of the instructions targeted by the microbenchmark (i.e., a 'add' is much simpler to execute than a 'lwv'), the runtime changes drastically. This is, in my opinion, good as it suggests that my code is spending a good chunk of time doing 'actual work' and less time interpreting instructions. Implementing that solution also made me realize that there's another large potential optimization vector related to the interpreter that will save me a good chunk of time, but I'll leave that for later.
- I started implementing some of the LWC2/SWC2 instructions (and finished 'lbv', 'lsv', and 'lwv' last night). To my surprise, no other "LLE" emulators pay attention to endian-ness -- all IMEM/DMEM is stored in little-endian byte order! My simulator has is that it always maintains a big-endian byte order representation of IMEM/DMEM. This will 'fix' any ROMs that have ucodes that depend on big-endian byte-ordering (should they exist), and eliminate the need for "byteswapping" ROMs at the cost of a small performance hit.
'sall for now, folks.
https://github.com/tstache1/cen64 give me an error 404, did you change the link?
I can't wait to see your program in action!
Thanks for the explanationsApologies. CEN64 is intended to be the "final application", which is composed of several plugins -- "librsp", "librdp", and "libv4300". I have taken down CEN64 for two reasons:
1) It was too much of a hassle to keep the framework's interfaces in lockstep with the libraries.
2) I've been considering changing the license from GPLv3 to Apache (or something else).
n64 has no BIOS
As far as I know, the N64 does not have a BIOS (which means no).Thanks for the explanations I was wondering something, will cen64 need a N64's bios?
As far as I know, the N64 does not have a BIOS (which means no).
Wait, so this WILL be using OpenGL rasterization and not software rendering? Then why was mudlord so adamant that this would use software and therefore polygonal enhancement (such as AA & AF) would be out of question?As for the point/slope ROM, it will be a requirement for pixel-accurate rendering. If/when I get around to writing a "traditional" RDP plugin, the point/slope ROM will not be required as the "traditional" plugin will just translate the RDP command lists into OpenGL calls.
Wait, so this WILL be using OpenGL rasterization and not software rendering? Then why was mudlord so adamant that this would use software and therefore polygonal enhancement (such as AA & AF) would be out of question?
Oh, so you're following the Project64 methodology with plugins rather than the Dolphin method of total integration. Gotcha.
Then isn't it more like Dolphin actually? Originally it used plugins but they got integrated in. I believe they are still somewhat modular on the development side however since, for example, they're developing a new HLE audio engine and it just replaces the "module" that has the old HLE audio:
http://forums.dolphin-emu.org/Thread-new-ax-hle-what-is-it-and-how-does-it-work