Hacking Atmosphere-NX - Custom Firmware in development by SciresM

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,787
Trophies
1
Age
44
XP
6,517
Country
Germany
It was initially. But I believe he removed it after the initial release. Practically though, I don't understand why people use other title installers when they have SX OS. I mean they have their own branded installer in the form of SX Installer.
Sure (although I never did tbh) but there are ppl using multiple custom firmwares. And why would you use SX Installer in AMS? ;)
 

Gamerjin

Well-Known Member
Member
Joined
May 25, 2016
Messages
2,775
Trophies
1
XP
6,445
Country
United States
so has anyone used the new 0xC codetype? me and a fellow gamer have tried to use it and its not working correctly....its seems that three of the six conditionals dont work. if anyone has used them to compare register(s), have you gotten all 6 conditionals to work?
 

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
so has anyone used the new 0xC codetype? me and a fellow gamer have tried to use it and its not working correctly....its seems that three of the six conditionals dont work. if anyone has used them to compare register(s), have you gotten all 6 conditionals to work?

What conditionals don't work?
 

Gamerjin

Well-Known Member
Member
Joined
May 25, 2016
Messages
2,775
Trophies
1
XP
6,445
Country
United States
What conditionals don't work?
me and @dsrules confirmed that the conditional 5 (equals), 4 (greater than or equal to), and 3 (greater than) do not work.

both me and him have confirmed that 6 (not equal) does work
dsrules confirmed that 1, and 2 (the less and less than or equal to) does work.
 
Last edited by Gamerjin,

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
me and @dsrules confirmed that the conditional 5 (equals), 4 (greater than or equal to), and 3 (greater than) do not work.

both me and him have confirmed that 6 (not equal) does work
dsrules confirmed that 1, and 2 (the less and less than or equal to) does work.

1 and 2 are > and >= respectively.

I don't understand. The relevant code is here: https://github.com/Atmosphere-NX/At...mnt/source/cheat/impl/dmnt_cheat_vm.cpp#L1076 -- I don't see what could possibly be wrong in it.

Are you sure you're encoding the conditions correctly? https://github.com/Atmosphere-NX/At.../dmnt/source/cheat/impl/dmnt_cheat_vm.hpp#L60 is the encodings.

1 -> >
2 -> >=
3 -> <
4 -> <=
5 -> ==
6 -> !=

In particular I don't see how != could work but == does not...are you sure that the source value and the comparison value are actually what you think they are? How are you testing?
 
Last edited by SciresM,

Gamerjin

Well-Known Member
Member
Joined
May 25, 2016
Messages
2,775
Trophies
1
XP
6,445
Country
United States
1 and 2 are > and >= respectively.

I don't understand. The relevant code is here: https://github.com/Atmosphere-NX/At...mnt/source/cheat/impl/dmnt_cheat_vm.cpp#L1076 -- I don't see what could possibly be wrong in it.

Are you sure you're encoding the conditions correctly? https://github.com/Atmosphere-NX/At.../dmnt/source/cheat/impl/dmnt_cheat_vm.hpp#L60 is the encodings.

1 -> >
2 -> >=
3 -> <
4 -> <=
5 -> ==
6 -> !=

In particular I don't see how != could work but == does not...are you sure that the source value and the comparison value are actually what you think they are? How are you testing?
https://gbatemp.net/threads/cheat-codes-ams-and-sx-os-add-and-request.520293/page-873#post-8918146

This was how @dsrules was testing the register checks static value for equal, not equal and less than. (I think I might have mixed up the symbols, Although another gamer claimed thru his testing the conditional were reversed.)

ive also included you in the conversion involved with the testing, as well....

i've also done:
Code:
for Cadence of Hyrule
[Test Conditional code equal]
58000000 02F2D528
78000000 000003C8
C0450400 00000000 00000038 <- check if reg0 (health 32-bit) is 38
58010000 008E1A18
78010000 00000000
62010000 00000000 00000001 <- if so, write 1 to this address (rupees)
20000000 <- end conditional check

I can gather the other posts of the testing, did you want pm to you?
 
Last edited by Gamerjin,

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,702
Trophies
2
XP
6,265
Country
https://gbatemp.net/threads/cheat-codes-ams-and-sx-os-add-and-request.520293/page-873#post-8918146

This was how @dsrules was testing the static value check for equal, not equal and less than. (I think I might have mixed up the symbols, Although another gamer claimed thru his testing the conditional were reversed.)

ive also included you in the conversion involved with the testing, as well....

i've also done:
Code:
for Cadence of Hyrule
[Test Conditional code equal]
58000000 02F2D528
78000000 000003C8
C0450400 00000000 00000038 <- check if reg0 (health 32-bit) is 38
58010000 008E1A18
78010000 00000000
62010000 00000000 00000001 <- if so, write 1 to this address (rupees)
20000000 <- end conditional check

I can gather the other post of the testing, did you want pm to you?
I only tested conditions on pointer cheats Type C, not static address Type 1

Update:
Default money 32420: 00007ea4

Codetype C
1 -> < ok
2 -> <= ok
3 -> < or > no effect
4 -> <= or >= no effect
5 -> = no effect
6 -> != ok

[IF money 1 less than 999999] ok
580f0000 02771710
780f0000 0001B794
C042F400 000f423f
640f0000 00000000 000f423d
20000000

[IF money 2 less than or equal 32420] ok
580f0000 02771710
780f0000 0001B794
C042F400 00007ea4
640f0000 00000000 000f423e
20000000

[IF money 3 greater than or 9999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0000270f
640f0000 00000000 000f4231
20000000

[IF money 3 less than or 99999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0001869f
640f0000 00000000 000f4231
20000000

[IF money 4 greater than or = 32420]no effect
580f0000 02771710
780f0000 0001B794
C044F400 00007ea4
640f0000 00000000 000f4231
20000000

[IF money 5 = 32420]no effect
580f0000 02771710
780f0000 0001B794
C045F400 00007ea4
640f0000 00000000 000f4232
20000000

[IF money 6 != 32420]ok
580f0000 02771710
780f0000 0001B794
C045F400 000003e7
640f0000 00000000 000f4233
20000000

Codetype 1
1 -> > ok
2 -> >= ok
3 -> < ok
4 -> <= ok
5 -> == ok
6 -> != ok

[IF 5 = 32420]ok
14150000 4293ae34 00007ea4
04100000 4293ae34 000f4230
2000000

[IF 6 != 32420]ok
14160000 4293ae34 000003e8
04100000 4293ae34 000f423e
2000000

Is there something wrong with the newest Snapshot build of Edizon???
If there is a Codetype1 cheat code in the cheat file, all cheats below the Codetype1 cheat will not show up
 
Last edited by dsrules,

mistadad

Member
Newcomer
Joined
Mar 3, 2019
Messages
6
Trophies
0
Age
29
XP
133
Country
United States
my gamecard won't work :(

have nogc set to 0 in BCT.ini and autonogc turned off via hekate

edit: nvm, i found a second BCT.ini on my SD card and that one works when adding nogc = 0
 
Last edited by mistadad,

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
I only tested conditions on pointer cheats Type C, not static address Type 1

Update:
Default money 32420: 00007ea4

Codetype C
1 -> < ok
2 -> <= ok
3 -> < or > no effect
4 -> <= or >= no effect
5 -> = no effect
6 -> != ok

[IF money 1 less than 999999] ok
580f0000 02771710
780f0000 0001B794
C042F400 000f423f
640f0000 00000000 000f423d
20000000

[IF money 2 less than or equal 32420] ok
580f0000 02771710
780f0000 0001B794
C042F400 00007ea4
640f0000 00000000 000f423e
20000000

[IF money 3 greater than or 9999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0000270f
640f0000 00000000 000f4231
20000000

[IF money 3 less than or 99999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0001869f
640f0000 00000000 000f4231
20000000

[IF money 4 greater than or = 32420]no effect
580f0000 02771710
780f0000 0001B794
C044F400 00007ea4
640f0000 00000000 000f4231
20000000

[IF money 5 = 32420]no effect
580f0000 02771710
780f0000 0001B794
C045F400 00007ea4
640f0000 00000000 000f4232
20000000

[IF money 6 != 32420]ok
580f0000 02771710
780f0000 0001B794
C045F400 000003e7
640f0000 00000000 000f4233
20000000

Codetype 1
1 -> > ok
2 -> >= ok
3 -> < ok
4 -> <= ok
5 -> == ok
6 -> != ok

[IF 5 = 32420]ok
14150000 4293ae34 00007ea4
04100000 4293ae34 000f4230
2000000

[IF 6 != 32420]ok
14160000 4293ae34 000003e8
04100000 4293ae34 000f423e
2000000

Is there something wrong with the newest Snapshot build of Edizon???
If there is a Codetype1 cheat code in the cheat file, all cheats below the Codetype1 cheat will not show up

These cheats don't do what you say they do.

Translating via CheatASM:

[IF money 1 less than 999999] ok
580f0000 02771710
780f0000 0001B794
C042F400 000f423f
640f0000 00000000 000f423d
20000000

This is actually:
mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
ge.d RF, 0xF423F
mov.d [RF], 0xF423D
endcond

Which is a >= condition on RF. Note you used cond 2 and not cond 1.

[IF money 2 less than or equal 32420] ok
580f0000 02771710
780f0000 0001B794
C042F400 00007ea4
640f0000 00000000 000f423e
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
ge.d RF, 0x7EA4
mov.d [RF], 0xF423E
endcond

This is another >= condition, not a <=.

[IF money 3 greater than or 9999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0000270f
640f0000 00000000 000f4231
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
lt.d RF, 0x270F
mov.d [RF], 0xF4231
endcond

This is a <, not a >.

[IF money 3 less than or 99999]no effect
580f0000 02771710
780f0000 0001B794
C043F400 0001869f
640f0000 00000000 000f4231
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
lt.d RF, 0x1869F
mov.d [RF], 0xF4231
endcond

This is a <, not a >.

[IF money 4 greater than or = 32420]no effect
580f0000 02771710
780f0000 0001B794
C044F400 00007ea4
640f0000 00000000 000f4231
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
le.d RF, 0x7EA4
mov.d [RF], 0xF4231
endcond

This is a <=, not a >=.

[IF money 5 = 32420]no effect
580f0000 02771710
780f0000 0001B794
C045F400 00007ea4
640f0000 00000000 000f4232
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
eq.d RF, 0x7EA4
mov.d [RF], 0xF4232
endcond

[IF money 6 != 32420]ok
580f0000 02771710
780f0000 0001B794
C045F400 000003e7
640f0000 00000000 000f4233
20000000

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
eq.d RF, 0x3E7
mov.d [RF], 0xF4233
endcond

Note: *your ASM is wrong for these cheats*. It is not an Atmosphere problem so far.

You are calculating the *address* of your money, and then comparing that *address* to specific values. What you want to do is compare with the *value at that address*, not the address itself.

Right now, for example, your "IF money 5 = 32420" cheat does:

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
eq.d RF, 0x7EA4
mov.d [RF], 0xF4232
endcond

However, what you are actually *trying* to do is this:

mov.q RF, [MAIN+0x2771710]
add.q RF, 0x1B794
mov.d RE, [RF+0x0]
eq.d RE, 0x3E7
mov.d [RF], 0xF4233
endcond

Correspondingly, the cheat for that would be

580F0000 02771710
780F0000 0001B794
540E1000 00000000
C045E400 000003E7
640F0000 00000000 000F4233
20000000

Which should work.

I think you just don't understand opcode 0xC0 -- it is for comparing the value inside a register to stuff, not for comparing the value pointed to by an address inside a register to stuff.

--------------------- MERGED ---------------------------

Code:
for Cadence of Hyrule
[Test Conditional code equal]
58000000 02F2D528
78000000 000003C8
C0450400 00000000 00000038 <- check if reg0 (health 32-bit) is 38
58010000 008E1A18
78010000 00000000
62010000 00000000 00000001 <- if so, write 1 to this address (rupees)
20000000 <- end conditional check

I can gather the other posts of the testing, did you want pm to you?

This code is also wrong.

Your code does:

Code:
mov.q R0, [MAIN+0x2F2D528]
add.q R0, 0x3C8
eq.d R0, 0x0
  mov.q R1, [MAIN+0x8E1A18]
  add.q R1, 0x0
  mov.w [R1], 0x1
endcond

What you want is:
Code:
mov.q R0, [MAIN+0x2F2D528]
add.q R0, 0x3C8
mov.q R0, [R0+0x0]
eq.d R0, 0x0
  mov.q R1, [MAIN+0x8E1A18]
  add.q R1, 0x0
  mov.w [R1], 0x1
endcond

Which is assembled by CheatASM to:
Code:
58000000 02F2D528
78000000 000003C8
54001000 00000000
C0450400 00000000
58010000 008E1A18
78010000 00000000
62010000 00000000 00000001
20000000
 
Last edited by SciresM,
  • Like
Reactions: JonJaded and Lacius

Gamerjin

Well-Known Member
Member
Joined
May 25, 2016
Messages
2,775
Trophies
1
XP
6,445
Country
United States
Ok, now that I have an example to follow, thank you for clear that up. I was understanding that the codetype reads the register. now I understand that I would need to load the address contents into a separate register to read it.
 

nickerous

Well-Known Member
Member
Joined
May 18, 2013
Messages
117
Trophies
0
Age
48
XP
632
Country
United States
Haven’t used this switch in months. Figured I’d update atmosphere while off. Copied new folders and merged. Plugged in the system...no rcm detected....unplugged looked at ds card again in pc.....put it back in and plugged to pc....auto rcm detected now, but system won’t boot. Says payload injected successfully, but screen stays black. I did not copy reboot_payload.bin....what can I do now?
 

almmiron

Well-Known Member
Member
Joined
Jan 9, 2012
Messages
423
Trophies
1
XP
1,981
Country
Brazil
Anybody having the same problem with atmosphere 0.10.2?

Working just fine when launching games and browsing trough horizonOS, but when acessing HBmenu, just the touch works, the only usable joycon button is the home one. Same occurs when I execute the apps (via touch support on the hbmenu), if the app have touch support, it works, otherwise it won't.


Am I missing something?

My specs: clean 0.10.2 atmosphere on 9.1.0, running syscfw.
 

Gamerjin

Well-Known Member
Member
Joined
May 25, 2016
Messages
2,775
Trophies
1
XP
6,445
Country
United States
@SciresM
sorry to bother you, again.
if im using the 0xC to check (one-way) if the pointer is a pointer
would this work?

Code:
C081R400 00000100 00000000
400R0000 00000000 00000000
20000000

If the value is greater than 0x0000010000000000, it shouldnt be a pointer, right? or atleast thats one way to do it? one of the codes im using i dont want to activate if the pointer isnt within the max range. so if it not a pointer, it will zero it out.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: yawn