Question about NO$GBA

Problems or feedback about the NO$PSX emulator by Martin Korth
Post Reply
scphscpe
Curious PSXDEV User
Curious PSXDEV User
Posts: 10
Joined: Mar 14, 2024

Question about NO$GBA

Post by scphscpe » October 2nd, 2024, 11:01 pm

Is there a hotkey for switching between ARM and Thumb in the disassembly window?

I can't find anything related to it in the provided help documentation. The lack of this function drives me nuts because currently I repeatedly switch between game and disassembler until it lands on Thumb code in the process of execution and simply setting breakpoint on the address, where Thumb code is located but the window displays it as ARM, doesn't have any effect.

Also in the past I encountered a problem, where not all instructions were recognized when you attempt to change them. In my case it was LDRHLE, so I was forced to use online converter https://armconverter.com/ which had no issue converting it because obviously there's nothing supernatural about it.

scphscpe
Curious PSXDEV User
Curious PSXDEV User
Posts: 10
Joined: Mar 14, 2024

Post by scphscpe » October 4th, 2024, 4:04 am

Forgot to add something. Execution breakpoints become useless if a game loads an overlay to the area where they were set. This basically makes it hard to catch a code execution and forces the user to constantly monitor memory changes in order to update each affected breakpoint if needed. This probably affects every NO$ emulator. Very, very inconvenient...

User avatar
nocash
Verified
PSX Aficionado
PSX Aficionado
Posts: 634
Joined: Nov 12, 2012
Contact:

Post by nocash » October 5th, 2024, 12:53 am

For ARM and THUMB mode, if you have the source code then you should have debug info with mode info in a .SYM or .ELF file. When rev-engineering a binary, you could create a .SYM file yourself in a text editor.

There's no hotkey to toggle between modes, except you could toggle the "t" thumb flag in the register/flags window (of course that will crash if you resume execution without untoggling the flag first).

And there's the difference between F2-key and F4-key breakpoints, the F2 ones do patch the binary (and work only if thumb/arm state is known), the one-shot F4-key breakpoint compares the PC register (and should work regardless of arm/tumb mode).

LDRHLE, that's because ARM has changed the syntax at some point, it's either LDR{chond}H or LDRH{cond}. The disassembler options support both classic and UAL syntax, but the assembler supports only one syntax, which, yes, I should support both there, too.

Overlays on NDS? I would have thought such things were only used on 8bit computers with less than 64K work RAM. Anyways, a similar and perhaps more common situation is game code and firmware boot code using the same memory for different purposes - I don't know a good solution for that.

scphscpe
Curious PSXDEV User
Curious PSXDEV User
Posts: 10
Joined: Mar 14, 2024

Post by scphscpe » October 5th, 2024, 4:22 am

nocash wrote: October 5th, 2024, 12:53 amOverlays on NDS?
They are very common on NDS, they are also common on PS1 and sometimes even on PS2. I didn't have much experience with N64 binaries but it's probably not an exception either.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest