Thank you for the information and for your work. I didn't know that using these cheats can cause problems. Although, if I remember correctly, nds-bootstrap promises 32KB of space for cheats, which is quite a bit more than my regular ~2KB needs.
Anyway, while I do agree that it makes sense, I am not exactly fond of doing this myself for the following reasons:
- It's slow to test these kinds of patches. Just uploading usrcheat.dat to the console is about ten times faster.
- It's longer/harder for the users to install (it would be for me)
- It changes the checksum of a rom, which kills the ability to use usrcheat.dat without modifying it. It's probably true for applying other xdelta patches too.
- Cheats work fine for me, never had a problem (at least as far as I know)
- I lack knowledge of nds reverse engineering/patching and using/making xdelta patches
- I am lazy, tired, and unmotivated
- The patches aren't worth it. SM64DS and Metroid are interesting since they are kind of "feature complete" in terms of utilizing most of the New3DS features, but other 19 is just dumb copy-paste to get the CPad working. Only the Arm9 part changes a little bit
- The patches aren't exactly stable. There is a small chance to crash the Arm11 at launch (valid for all my patches). And for now I don't know how to fix it.
- It's nice that the cheat engine can always back you up. When a game overwrites my code, the cheat engine puts it back. It probably would be the same with xdelta's static patching if I do things properly, but then again, I don't know how it works.
If someone needs the source code for other patches/games, I am happy to share it.
All I can do is increase the range of the cpad. By default, it recognizes values in the range 40-145 (i.e. if you press the stick at a distance less than 40 (whatever units it means), the console will simply see it as 0). Let's try this. I have changed the range to 16-143
I can respect your reasons, hear me out on this though, and by no means am I trying to come off badly towards you or attack you, I just explain things in a very forward way.
It's slow to test these kinds of patches. Just uploading usrcheat.dat to the console is about ten times faster.
Maybe so, but speed isn't everything, stability matters, true research and development takes as long as it needs to take to make things stable and efficient. The problem in the modern age, everyone is so quick to pump stuff out, not to mention most people don't do proper extensive testing with their own work. Maybe people should stop doing that and start testing their work before releasing stuff, otherwise maybe whatever is being pushed just shouldn't be pushed at all, it's just going to be yet another problem left for others with more appropriate dedication to have to clean up, which it shouldn't be other people's job to do that, they could be spending that time improving and or extending upon the work instead.
In concept, these cheats could be more practical as methods to test the work, but direct patches are definitely more stable in comparison to cheats since all those changes are launched alongside the game code itself and not a few seconds after the original data loads, let alone having to be written constantly, which does reduce load times at boot since the engine doesn't have to work double time to load a chunky code afterwards, cheats are not instantly activated when the game boots, there is a delay in between, and depending on how many codes you have enabled, you can cause the load times to take a little longer, even with more legroom in memory for said cheats, more memory isn't going to yield faster load times when the cheat engine is involved with the game load times at boot.
It's longer/harder for the users to install (it would be for me)
That's kind of the point of learning how to do stuff. In terms of implementing things, you could ask those with experience to guide you, hell you could formulate a team to help out if you wanted, that way you don't have to do things alone. In terms of patching, it's actually really easy to do, we live in the age of patching tools with GUIs, and generally it's a simple three step process, choose the patch, choose the original ROM, set a patched ROM output name, done. It's only as hard as you make it out to be, while I can understand the work you put into this, inputting your feelings, preferences, ideologies as a whole into your work isn't a bad thing, you also need to remember and consider the fact that many people are going to utilize what you are providing, which means you need to keep a stable mindset regarding your operations with said projects.
It changes the checksum of a rom, which kills the ability to use usrcheat.dat without modifying it. It's probably true for applying other xdelta patches too.
Not exactly a great point to make, because your method also involves having to modify the database itself in this instance for the sake of adding in a code for a game(s), at least for those wanting to use an already populated database, which most people quite literally use a populated database anyways. Meaning regardless of which direction you go, the database still has to be modified, patched ROM or not.
Xdelta patches generally have a checksum in place that prevents people from applying patches onto the wrong ROM images, the only way they could is if they used modified versions of the patching software that bypass the checks forcefully or use a patching tool that has the option toggled off by choice, chances of that happening though is slim because the reputable places to find such tools only provide the correct versions of software to use, and even if modified versions exist in such places, they mention their modified nature in detail. All the user has to do is read, and if they can't, that's a user problem. Sourcing out the ROM image needed isn't difficult either, we live in the age of the internet, plus there are extremely easy methods to dump your own copies if you own a copy of said title. So there isn't really any excuses in this instance.
Cheats work fine for me, never had a problem (at least as far as I know)
You don't sound very confident with your own work, why should others trust this if you yourself can't say for certain? So they work fine currently, that's great, have you tested them all the way through to the end of the game(s)? If not then this might be a problem. As a cheat developer, I know that it's possible for cheats to break games bad enough to cause save data corruption for example, some cases the issues are apparent, and people can make the active decision to risk it all or stop without saving, however there are cases where visually there doesn't appear to be issues, but internally things can go wrong. Are you really confident that nothing here will do such things?
I lack knowledge of nds reverse engineering/patching and using/making xdelta patches
Much like my second point, this is why you learn, and again it's easy to apply and or create patches. As for reverse engineering, you reside on a forum full of knowledge, alongside individuals who may know tricks of the trade, asking for help is possible.
I am lazy, tired, and unmotivated
Well this definitely confirms a low trust value with your own work to the general public. If this was something for personal use then this logic would have merits, but at this rate, you would need a "guaranteed" label on the box to emphasize nonexistent quality. This is partly why I question why someone should release anything whatsoever if the end result is a potential forest fire of problems and or lack of practicalities, end result being someone else having to go behind and clean up a mess they didn't make in the first place. This might be coming off kind of harsh, however I tend to hold quality, efficiency, etc. pretty strongly, especially where developing in concept is concerned. We could use less bad bases to work with in the world and more improved working habits.
The patches aren't worth it. SM64DS and Metroid are interesting since they are kind of "feature complete" in terms of utilizing most of the New3DS features, but other 19 is just dumb copy-paste to get the CPad working. Only the Arm9 part changes a little bit
This is yet another problem, you aren't thinking in a broad perspective, maybe right now you don't see the value in it, but what about the useful applications it could have with ROM hacks in the future? Who knows maybe this could spawn other similar concepts. Maybe full fledged reverse engineered concepts in assembly language could utilize it. I've already been told that some folks have interest for it in ROM hack concepts already. However knowing how the current implementation is being handled, I can't recommend them using that stuff now, not until it's more appropriately stable and or fixed if any fixing is needed. What I provided was more of an example, a test of sorts to compare with for the sake of potential fixes to problems the codes may have brought at some point in the past, or to test the performance between both solutions. It would be better to hone your knowledge some more so you have more confidence on what potentially the problem(s) may be if and or when any occurs.
The patches aren't exactly stable. There is a small chance to crash the Arm11 at launch (valid for all my patches). And for now I don't know how to fix it.
So you aren't certain then?
It's nice that the cheat engine can always back you up. When a game overwrites my code, the cheat engine puts it back. It probably would be the same with xdelta's static patching if I do things properly, but then again, I don't know how it works.
Assuming is another mistake people make, don't do this, actually do some digging on the matter to actually have some form of constructive response. Xdelta patches do not work the same way cheats do, changes made to the ROM image(s) directly are permanent changes, and they work alongside the original code, patches merely carry the changes made to the original image, the patching tools apply the data that the patch contains directly to the original ROM image(s) (intended for distribution in a legal manner), this is why patches come in much smaller sizes than the ROM images, unless of course there is an extreme amount of custom data in the patch. Patching ROMs in this matter results in a permanently altered ROM image, meaning the custom data you applied is just as permanent as the original code presented, of course functionality of said custom data may vary depending on what the code is designed to do, when it's supposed to be activated respectively, etc. This means that the data doesn't have to constantly be written whatsoever, it writes in the respective times it needs to if at all. Cheat codes are NOT permanent changes, they are not meant to act as patches for anything, it's actually misleading to call a cheat a patch since it's not a permanent solution, cheats are intended for much smaller scale applications, generally meant for entertainment purposes or for getting an edge in unintended ways when playing the games, this is why no official solution allows the legroom for "patching" solutions like these, because this is not their intention. The legroom nds-bootstrap offers isn't even for such a use case either, it's there as a bonus for users to have more things enabled without running into problems. It's not to say cheats haven't been used to test things in the past, but even those use cases are much smaller scale in comparison to this. The patches I provided earlier carry your edits in a permanent manner, meaning the code is activated no different than that of the game code, it's loaded when it needs to be loaded just like the original data that occupied that space before, since it's permanent, nothing else has to do any work, no data has to be altered because the data is already altered before the game is even launched in the first place, which leads to better boot times and better performance depending on the situation, less issues overall, this also leaves room for people to enable other cheats that they'll likely have more interactions with and not wasting a bunch of memory just to do something that should be handled more appropriately via a ROM hack.
Reminder that I am not trying to come off badly towards you or attack you, as I stated, I am a very forward person. Hopefully you take all this the way I intended it to come off to be.