masagrator / NXGraphicsPatches

Graphics Patches for Nintendo Switch games
348 stars 29 forks source link

Dragon's Dogma: Dark Arisen mod is crashing on startup of game #22

Closed gut5 closed 4 years ago

gut5 commented 4 years ago

Switch errors out saying "The software was closed because an error occurred" Using AMS 0.10.1. MHGU mod is working fine so I don't think it's my setup.

masagrator commented 4 years ago

Do you use ReverseNX?

gut5 commented 4 years ago

Nope, should I?

masagrator commented 4 years ago

No, because ReverseNX (just having it is enough if you didn't disable it in ReverseNX-Tool) is crashing games with cheats in Atmosphere. Try to disable auto-loading cheats in system_settings.ini In new Atmosphere it should be in atmosphere/config (I'm using 0.9.4, so I don't know how it looks like now) Change

dmnt_cheats_enabled_by_default = u8!0x1

to

dmnt_cheats_enabled_by_default = u8!0x0

gut5 commented 4 years ago

Sorry to be dumb, but don't I want cheats to auto-enable? But yeah I'll try that now thanks

masagrator commented 4 years ago

Auto-enabling enables all cheats at once if you don't specify different in toggles.txt Disabling it will not prevent from enabling it in Edizon

gut5 commented 4 years ago

You were right, I disabled dmnt:cht, then enabled the specific cheat using Edizon while the game was running, then it worked. This is weird because I didn't need to do this on MHGU with the 60fps mod. Before I close this, I just want to ask, is this the correct way to use dmnt:cht? I only really used the MHGU mod before this so I don't have much experience with using multiple cheats. Did this break for me because I had multiple cheats on my system?

masagrator commented 4 years ago

Don't know what is exactly the issue here. Only difference between MHGU and this game is that MHGU is 32-bit game, Dragon's Dogma is 64-bit.

gut5 commented 4 years ago

Yeah but should the cheats setting work normally if you switch it on?

gut5 commented 4 years ago

I have a bit more info regarding what may be behind the crashes. They are still happening, it's just I am able to prevent it by disabling auto-cheats, which isn't optimal for obvious reasons. Could this issue be reopened or make another one?

dev-chin commented 4 years ago

No, because this is not an issue of my cheat, but cheat engine or other sysmodule.

Edit: Sorry, I wrote a comment on my second account. :D

gut5 commented 4 years ago

No, it is the cheat itself. Cheat engine is working normally, and there are no sysmodules enabled. From what I have discovered by asking AMS devs is that the 60fps patch itself shouldn't be in the form of a cheat but should be an exefs ips patch, but leaving that aside the cheat is dereferencing a pointer, adding an offset, then writing a value instead of just changing the necessary value. This isn't an attack against anyone, just constructive criticism. I haven't researched this topic enough myself to be able to amend it to work the way I described, I guess this is my next task, I thought I would bring this to your attention.

masagrator commented 4 years ago

This cannot be made as IPS patch, because this is in unitialized memory region, so by default this is 0x0 and something is writing there float of 30 but I don't know what, because IDA and Ghidra ahows nothing related to that offset. IPS is applied only before initializing game and value is not locked. With cheats I can lock value after game is initialized. And it's not cheat itself, because it's working for almost everyone except you.

gut5 commented 4 years ago

Could you please not lock this issue then, just in case there are others who are having the same issue? My setup is basically the default AMS 0.10.1 setup so I don't get why it would be any different for anyone here. The only other thing I can think of is I had the MHGU patch also in the /contents folder so I don't know if there is some overlap.

masagrator commented 4 years ago

When I will get back, I will share here everything I know about it, so there would be 0 doubts about my way of thinking. It is of course possibile that someone could find a better way to apply 60 FPS, but I know atm that only cheat is the way I can do it. I will not open it, because as I said - this is not cheat code fault. And btw. write if you are using Japanese or West version so I can share related exefs informations. For my sake I will test game again.

gut5 commented 4 years ago

No, I meant leave this issue open for comments if anyone else might have the same issue. Western version. Thanks for your work.

masagrator commented 4 years ago

So I've tested code in Atmosphere 0.9.4 and 0.10.1 on 9.0.1, sys-clk and disabled ReverseNX,

dmnt_cheats_enabled_by_default = u8!0x0 dmnt_always_save_cheat_toggles = u8!0x0

And it's working with Edizon.

024924D8 + 504C = 2497524 image This is how it should look like if Disassembler had any informations about this offset: image This is in .bss region, so there is no data stored there before initializing.

Here is IPS file that would work if this was not a .bss sector 2CDB9B9D70010E887BC8EAB8CE61B025.zip

So I have no other option than use cheat file.

gut5 commented 4 years ago

Did you try with cheats enabled by default?

masagrator commented 4 years ago

With cheats enabled by default is crashing

masagrator commented 4 years ago

Sorry, it looks like I misunderstood some things, but this doesn't change anything.

024924D8 + 504C = 2497524 This was wrong, because it adds 504C to pointer that was in 024924D8 But in 024924D8 still there are no xrefs So it looks like it's crashing when it tries to add 504C to value from 024924D8 And I'm guessing it tries to read that value before game has a chance to write anything there, so because there are only nulls, it adds to zeroes 504C and it tries to write to 0x504C float 42700000, so it crashes. So my advice - don't use enabled by default.

masagrator commented 4 years ago

I have added this file that disables both cheats when

dmnt_cheats_enabled_by_default = u8!0x1

Put it to the same cheats folder as 60 FPS hack toggles.txt