ROM Hack [Tutorial request] How do you make AR codes.

Akantr4

Active Member
OP
Newcomer
Joined
Aug 23, 2014
Messages
33
Trophies
0
Age
34
XP
89
Country
Just a simple request on how to create spider AR codes. Step to Step guide would be helpful.
I've only ever created one PSP cheat code which ended up ruining the CSPSP online community :(

Anyway with that I used TempAR which had a built in memory editor/debugger. Is it the same process?
 

GameSystem

Well-Known Member
Member
Joined
Sep 14, 2009
Messages
606
Trophies
1
XP
1,733
Country
United States
I don't remember whether or not I’ve posted this before so here it goes.



ARcode Beginner’s guide

For this tutorial we're going to hack Gunvolt, it's just a simple code, and the idea is the same for every thing, If you get all and want to try on your game directly feel free... but if you've never done this before I suggest trying exactly as I wrote here... so let's go...

1 - Download Cheat Engine on your PC (http://www.cheatengine.org/downloads.php)

2 - Install CE on your PC

3 - Extract the following files in the root SD Card:
http://www.mediafire.com/download/87kkk2enbbd1um3


4 – Place your SD card in your 3ds, turn it on, and start Gunvolt.

5 - Enter a stage and grab some coins.

6 - Pause the game, go to stats and write down the number of coins you have (I got 1090 for the first time).

7 – Press the “home button” on your 3ds.

8 - Open the browser (WITHOUT CLOSING THE GAME!) and add the following links to your browser as bookmarks:

http://bit.ly/1DJZ1Kp (save as "dump0")
http://bit.ly/1FVEZfB (save as "dump1")
http://bit.ly/1BGhW1N (save as "dump2")


9 - Use the first link (http://bit.ly/1DJZ1Kp) to dump the memory one time.

10– The screen will start flickering for some time, then the browser will close and an error message will appear saying: “An error has occurred. Please save your data in any software currently in use, and then restart the system.” (IT´S OK, it is supposed to do that!)

11 - Go back to the game and grab more coins.

12 - Pause the game, go to stats and write down the number of coins you have (I got 1220 for the second time).

13 - Press the “home button” on your 3ds.

14 - Open the browser and use the second link (http://bit.ly/1FVEZfB) to dump the memory again.

15 – The screen will start flickering for some time, then the browser will close and an error message will appear saying: “An error has occurred. Please save your data in any software currently in use, and then restart the system.” (IT´S OK, it is supposed to do that!)

16 - Go back to the game and once again grab more coins.

17 - Pause the game, go to stats and write down the number of coins you have (I got 1350 for the third time)

18 - Press the “home button” on your 3ds.

19 - Open the browser and use the third link (http://bit.ly/1BGhW1N) to dump the memory a third time.

20 – The screen will start flickering for some time, then the browser will close and an error message will appear saying: “An error has occurred. Please save your data in any software currently in use, and then restart the system.” (IT´S OK, it is supposed to do that!)

21 - Turn off the 3ds.

22 - Put your SD card in your PC.

23 - Open CE.

24 - Go to File -> open file, and open "FCRAM0.bin" located on your SD card

25 - search for the first value you wrote down (mine was 1090).

26 - Wait for it to scan.

27 - Go to File -> open file, and open "FCRAM1.bin" located on your SD card

28 - Search for the second value you wrote down (1220).

29 - Wait for it to scan.

30 - Go to File -> open file, and open "FCRAM2bin" located on your SD card

31 - search for the third value you wrote down(1350).

32 - Wait for it to scan.

33 - You should have narrowed down to only one address (which should be 038CC00C).

34 - Open your internet browser in your PC and got to: http://lunarcookies.github.io/cheat.html

36 - Grab the address you got from CE (038CC00C) and copy to the white box in the internet page you opened.

37 - Type after the code "FFFFFFFF" - it should look like this in the box (038CC00C FFFFFFFF)

38 - Press the "QR Gen" button on the browser. (If a QR code appeared it's all good!)

38 - Put your SD card in your 3ds and start Gunvolt.

39 - In mid stage, pause the game and hit the "home menu" button

40 - Open the camera menu on your 3ds and scan the QR code on the browser.

41 - Open the link of the QR and let it do it's magic.

42 - The screen should freeze for a few seconds then the browser will close and an error message will appear saying: “An error has occurred. Please save your data in any software currently in use, and then restart the system.” (IT´S OK, it is supposed to do that!)

43 - Go back to the game and the cheat should have been applied.

44 – Profit!
If you got all that then you're ready to try on most games, but keep in mind some games are tricky, like Fire Emblem... so if you don't get it on the first try don't worry... Master this tutorial and you're good to go for most games and most codes. :yaynds:
I hope this helps.
PS: As always if there's any mistakes, pls let me know.

Also relevant
First of all nice findings and thank you for sharing! :yaynds:

Before saying the second part please let me state that this post is by no means intended to insult you in any way! Only to improve your knowledge!

Second here goes two tips for your improval!
There’s A LOT of worthy reading! I really recommend you, and everyone who is beginning to code AR, to take a look, this may help you guys!


1-
When you use “0” in front of your adresses (eg.03AC1844) you are actually telling the game to write the next 4 bytes of code.
When you use “1” in front of your adresses (eg. 13AC1844) you are actually telling the game to write the next 2 bytes of code.
When you use “2” in front of your adresses (eg. 23AC1844) you are actually telling the game to write the next 1 byte of code.


(wait what?)

Chill out… Let me explain it better…
Let’s look at your code for Yu Narukami:


03ac1dfc 000003e7
03ac1dfe 000003e7
03ac1e00 00000063
03ac1e02 00000063
03ac1e04 00000063
03ac1e06 00000063
03ac1e08 00000063


Let’s get the first 2 lines:

03ac1dfc 000003e7
03ac1dfe 000003e7


When you use the “0” in these codes you are telling the game to write on the next 4 digits of code:

The 03ac1dfc will write on the addresses 3ac1dfc / 3ac1dfd / 3ac1dfe / 3ac1dff
The 03ac1dfe will write on the addresses 3ac1dfe / 3ac1dff / 3ac1de00 / 3ac1e01


Did you get that? It’s like this:

Here’s another explanation
03ac1dfc AABBCCDD
This code will write in the game like this


23ac1dfC 000000DD
23ac1dfD 000000CC
23ac1dfE 000000BB
23ac1dfF 000000AA


So:
03ac1dfc AABBCCDD

Is the same as

23ac1dfC 000000DD
23ac1dfD 000000CC
23ac1dfE 000000BB
23ac1dfF 000000AA

So you are basically telling the game to write and overwrite the values every single time, which is a waste of processing

When you do this:
03ac1dfc 000003e7
AND
03ac1dfe 000003e7


You are telling the game to do this

23ac1dfC 000000E7
23ac1dfD 00000003
23ac1dfE 00000000
23ac1dfF 00000000
AND

23ac1DFE 000000E7
23ac1DFF 00000003
23ac1E00 00000000
23ac1E01 00000000

Did you see that?

Let’s go again focusing now on the repetitions:

When you do this:
03ac1dfc 000003e7
AND
03ac1dfe 000003e7


You are telling the game to do this

23ac1dfC 000000E7
23ac1dfD 00000003

23ac1DFE 00000000
23ac1DFF 00000000

AND
23ac1DFE 000000E7
23ac1DFF 00000003

23ac1E00 00000000
23ac1E01 00000000


Now you see? You told the game to write the same addresses twice and with different values, and the way you did these codes you keep telling the game to do it over and over…

Now there are two ways to optimize you codes:

--First way--
Is to use the correct tell to each value:


Let’s say 03ac1dfc 000003e7

What you want is to use only the 03e7 value, so you only need to tell the game to write the next two addresses: 3ac1dfC and 3ac1dfD

So you can tell the game:
13ac1dfc 000003e7

Because this will only write on the 3ac1DFC and 3ac1DFD

And when you use 03ac1e00 00000063
What you want is to use only the 63 value, you don’t want 0063 because the 00 is simply nothing, so you only need to tell the game to write the next address: 3ac1E00 and you don’t want to tell the game nothing about: 3ac1E01


So you can tell the game:
23ac1e00 00000063

Because this will only write on the 3ac1E00

So your codes should actually be like this:

13ac1dfc 000003e7
13ac1dfe 000003e7
23ac1e00 00000063
23ac1e02 00000063
23ac1e04 00000063
23ac1e06 00000063
23ac1e08 00000063




--Second-- and best way

Since all your addresses are senquential:

3ac1dfc
3ac1dfe
3ac1e00
3ac1e02
3ac1e04
3ac1e06
3ac1e08


You can actually merge the codes like this:

13ac1dfc 000003e7
and
13ac1dfe 000003e7


Is the same as:

03ac1dfc 03E703E7

-AND-

23ac1e00 00000063
23ac1e02 00000063


Are the same as:
03ac1e00 00630063

-AND-

23ac1e04 00000063
23ac1e06 00000063


Are the same as:
03ac1e04 00630063


So the best simplification/optimization for your code is:

Yu Narukami
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063
Did you get all that? Give it a time if not, read it again, it’s a good knowledge. DO NOT GO TO STEP 02 IF YOU DIDN’T GET STEP 01. ;)

2-
Now that you learned how to simplify/optimize your code let us take a look at two at them (optimized!).

Yu Narukami
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063


Yosuke Hanamura
03ac1f34 03e703e7
03ac1f38 00630063
03ac1f3C 00630063
03ac1f40 00000063


If you notice, the addresses obey the same order with a fun fact:

-IF YOU SUBTRACT THE ADDRESS OF THE HIGHEST FOR LOWEST YOU ALWAYS GET THE SAME NUMBER!-

Like this:
First address of Yu Narukami is 03ac1dfc
And
First address of Yosuke Hanamura is 03ac1f34


03ac1f34 > 03ac1dfc

SO the addresses are like this: Yosuke Hanamura > Yu Narukami

Now let’s subtract the first with the first, the second with the second and so on:

Yu Narukami
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063


Yosuke Hanamura
03ac1f34 03e703e7
03ac1f38 00630063
03ac1f3C 00630063
23ac1f40 00000063


We have this:

03ac1f34 -03ac1dfc = 00000138
03ac1f38 -03ac1ee0 = 00000138
03ac1f3C -03ac1ee4 = 00000138
23ac1f40 -23ac1ee8 = 00000138

So it’s always 00000138! (IN HEX ALREADY!)

Which means that every character has their code equal to the previous + 00000138!

So what?!

So now we know that: Yu Narukami’s codes + 00000138 = Yosuke Hanamura’s codes

And so on… Yosuke Hanamura’s codes + 00000138 = Chie Satonaka codes… all the way up to the last character.

Okay… now what?

Now we can use a neat trick with AR code that: writes all the codes, then repeat all of them with an increased value!

Take a breath and read the last line again!

This AR code trick allows us to: write all the codes, then repeat all of them with an increased value!

So we can tell the game to do Yu Narukami’s codes, then add a value (00000138) to the next repetition.

And we also know that Yu Narukami’s codes + 00000138 = Yosuke Hanamura’s codes… and so on until the game writes all the characters codes. NEAT HUH?!

And how do we do that?!

Let’s go…

The trick has 03 different code lines that I’ll explain:

---First line of the trick: C0000000 XXXXXXXX

C0000000 XXXXXXXX – will tell the game to repeat the next lines XXXXXXXX times.

So C0000000 00000005 will tell the game to repeat the next lines 05 times!


---Second line of the trick: DC000000 XXXXXXXX

DC000000 XXXXXXXX – will tell the game to INCREASE the previous addresses lines (that starts with “0” or “1” or “2” with XXXXXXXX.

So DC000000 00000004 will tell the game to INCREASE the previous lines with 04!

EG.
03ac1f38 00630063
DC000000 00000004


Will tell the game to add 04 in the previous line(s).
So it will tell the game to add 04 to 03ac1f38 which will result in the line 03ac1f3C.



---Third line of the trick: D1000000 00000000 (or D2000000 0000000)

D1000000 00000000 will tell that: THAT PART OF THE CODE HAS ENDED!
(Let’s leave D2000000 00000000 for another time)

This line is useful because we need to tell the game when to stop writing otherwise we screw up the game!




-----Now let’s assemble our code-----

We need to tell the game what we want to write, how many times, and with how much increase each write.

However, let us first review what we learned so far…

C0000000 XXXXXXXX – will tell the game to repeat the next lines XXXXXXXX times.
DC000000 XXXXXXXX – will tell the game to INCREASE the previous addresses.
D1000000 00000000 will tell that THAT PART OF THE CODE HAS ENDED!



So we have a code that needs what we want AFTER it, then another code that needs what we want BEFORE it, and a code to end it…

So here’s how our code should go

C0000000 XXXXXXXX
--THE ACTUAL CODE--
DC000000 XXXXXXXX
D1000000 00000000



So let’s start:

C0000000 XXXXXXXX – How many times the codes needs to go?
The same as the number of characters which are 20 characters, but we don’t want 20 REPETITIONS, we want ONE CODE(or ONE SET OF CODES) AND
19 REPETITIONS! (but remember to use the number in HEX so 19 is 13 in HEX

So we have
C0000000 00000013



OK… now we add the code (this case A SET OF CODES), this case we want the first of the list which in our case is Yu Narukami set of codes

So now we have
C0000000 00000013

03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063



Next up we want to tell the game how much it adds to the addresses before repeating, which we got 00000138 SOooooo…

C0000000 00000013
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063

DC000000 00000138


And to wrap it up we want to tell the game to stop writing after the block of codes and repetitions ends… so to end this all

C0000000 00000013
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063
DC000000 00000138

D1000000 00000000


PHEW… that’s it… we got all those characters codes trough an huge optimization and we got this:

All Characters
C0000000 00000013
03ac1dfc 03E703E7
03ac1e00 00630063
03ac1e04 00630063
23ac1e08 00000063
DC000000 00000138
D1000000 00000000
I hope you got all that. And again don’t fell insulted this is for sharing and improving you and our community! Happy cheating guys! :nds:
PS: I'm not holder of the truth so I may have made a mistake or two, if anyone spot an error please do tell. ;)
 
Last edited by GameSystem,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @OctoAori20, Cool. Same here.