Citra: Disassembler: STRD/LDRD missing

Created on 2 Apr 2016  路  11Comments  路  Source: citra-emu/citra

Currently isn't able to disassemble either of these.

All 11 comments

Is it correct that a few people are currently working on a new disassembler?

Oh god I hope it's true. Sorry but the current one is... unusable is the nicest I can think of.

One could quite easily write another one by inheriting from ArmDecoder::Visitor over here since all the parsing has been done for you and all you need to do is stuff everything into strings, but idk if someone else if working on one.

I just find it somehow wrong: When Citra started out, it was merely emulating homebrew and was not that targetted towards emulating commercial games as it is now. What does it say on the github? "Citra is an experimental open-source Nintendo 3DS emulator/debugger written in C++"

Why calling it a debuggger when it lacks even basic debugging functions?
Obviously debugging and disassembly should be key points of the software.
But the current disassembly is not only randomly initializing 125.000 entries (heaven knows why) , Citra even lacks a basic memory viewer, something every CFW and even Gateway already offer. You can't search for things in the disassembly or anywhere else either. You could scrap the whole "Debugging" tab and nobody would see the difference, because everyone is using third-party programs anyways because the one citra currently offers are useless.

As it is right now every CFW and their ripoffs offer better debugging features than citra does.
Granted we got the gdb stub but it's incredibly uncomfortable to use and highly unstable. I made citra crash with it a couple of times already, and IDA and CItra just don't really play well together.
And all this is kinda sad, really. I understand there are lots of things to be taken care off that are maybe a higher priority, but come on, not even a basic memory viewer/editor? :/

And it's not like people didn't offer... There were talks about porting the masterpiece debugger/disassembly of PPSSPP but the people in charge rejected it because of "differences in style". One would and could easily implement stuff if the citra devs would welcome input and not reject it because the style somebody has coded it in is different... Something to think about.

Sorry if I sound ungrateful but I believe things could be better if the devs had a more welcoming attitude towards outside input....

Yes it doesn't belong here but it ticked me off that you mention an instruction missing like it's just a minor issue of the disassembly when there's so much more wrong with that it's basically unusable.

That is only my opinion, sorry if I offended someone.

You gotta understand that this debugger was ripped out of Gekko and thrown in there just so @bunnei was motivated enough to work on citra in the early days :p

It was made way before citra had any coding guidelines and when only bunnei and neobrain were working on it.

With that in mind, I think everyone invites a complete rewrite. I'll be waiting for your PR :)

fwiw this issue was about the disassembler implementation, not the UI, but I understand where you're coming from, Romsstar.

I agree that we should just remove the current debugging widgets. They don't offer much in usable functionality right now, and they'll all have to be re-written anyway to support proper debugging. (The disassembly widget for example works in a fundamentally unperformant way.)

That way at least people won't be tempted to use them and find out they are broken.

(Note that this doesn't apply to the GPU debuggers, which are still very useful.)

The disassembler implementation mis-disassembles seiveral instruction is actually a source of potential licensing issues. (#1280) So if we remove the widgets that can also go.

Yeah the current disassemble is pretty trash, wouldn't mind it being gone.

Referencing #1480 as this is a more concrete "missing feature" (okay.. it's a bug) in the debugger.

However, I also vote for removal of the CPU debugging widgets and the confusing disassembler.
We could then call Citra a "3DS Emulator with integrated debugging capabilities" (gdbstub interface and GPU debugger). - However, that should probably be discussed in a new issue OR we could recycle #1480 to become the base for a pro/con discussion.

Was this page helpful?
0 / 5 - 0 ratings