Emuforums.com

Go Back   Emuforums.com > Handheld Emulation > iDeaS Discussion
About Us Register FAQ Members List Calendar Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old June 15th, 2007   #81 (permalink)
Devastating Force
 
SCHUMI-4-EVA's Avatar
 
Join Date: Jan 2007
Location: Governmentless South Africa
Posts: 5,809
Quote:
Originally Posted by revenger334 View Post
Thanks the syncroizing seems to work pretty well with the sound, then again sometimes when I try to load a game it comes to an error while running it (could be just me, or a error in coding not sure) so pretty much syncrozing on my pc sometimes feezes the program, then closes. THANKS FOR THE TIP THOUGH ALOT BETTER SOUND EFFECTS!
It made my sound much worse than before. Before it was sorta synchronised just stuttery....however when synchronsing it sounds awfull and completely off and much much slower.
__________________
AMD Athlon64 3700+ (2.2Ghz rated as 3.7Ghz Pentium), ASUS A8NE-FM, 4x512MB DDR400 RAM, ATI Radeon X850XT, 320GB HDD, Windows XPSP2 Home,
Leadtek Winfast TV2000 XP Expert, Creative Sound Blaster Audigy Value
Get it right fools! The glass is HALF-EMPTY, not half-full!!!
!!! WARNING: Emulation requires a brain !!! WARNING: Emulation =/= Piracy !!!
The Champ has retired, but may his Legacy live on FOREVER !!!!
SCHUMI-4-EVA is online now   Reply With Quote
Old June 16th, 2007   #82 (permalink)
Registered User
 
Join Date: Aug 2006
Location: iowa
Posts: 10
For me it made the sound better, and the speed may have gone down by a few fps, but as is iDeaS can already reach a good 70 fps or higher! Lets just drop the subject of sound and get back to focus on orginal iDeaS gaming emulation
revenger334 is offline   Reply With Quote
Old June 16th, 2007   #83 (permalink)
The Alpha and Omega
 
ShakirMole's Avatar
 
Join Date: Mar 2007
Location: Tanzania
Posts: 302
sound removal

is there a way to remove sound completely from the emu for now becuz i get good speed increase but only that the emu freezes so any possible way to switch it off?
__________________
------------------------------------------------------
Join Irc server #thegoldcafe on channel irc.star-fleet.net and get rom compatibility lists for iDeaS,no$gba,and others and all your emulation needs
Alternatively, you could join through the java website which links directly to thegoldcafe channel
http://www.dscompatibilitydatabases.co.nr/

Professor Layton Walkthrough with excellent coverage and pics http://professorlaytonwalkthrough.blogspot.com/
ShakirMole is offline   Reply With Quote
Old June 16th, 2007   #84 (permalink)
Devastating Force
 
SCHUMI-4-EVA's Avatar
 
Join Date: Jan 2007
Location: Governmentless South Africa
Posts: 5,809
Just remove the plugin from it's directory? or is that no longer possible?

Maybe you could also switch it off before you start the game?

Just guesses by the way.
__________________
AMD Athlon64 3700+ (2.2Ghz rated as 3.7Ghz Pentium), ASUS A8NE-FM, 4x512MB DDR400 RAM, ATI Radeon X850XT, 320GB HDD, Windows XPSP2 Home,
Leadtek Winfast TV2000 XP Expert, Creative Sound Blaster Audigy Value
Get it right fools! The glass is HALF-EMPTY, not half-full!!!
!!! WARNING: Emulation requires a brain !!! WARNING: Emulation =/= Piracy !!!
The Champ has retired, but may his Legacy live on FOREVER !!!!
SCHUMI-4-EVA is online now   Reply With Quote
Old June 17th, 2007   #85 (permalink)
Registered User
 
Join Date: Aug 2006
Location: iowa
Posts: 10
Simply replace the aud.dll in the plugins dictionary with a older version ( I believe it is in the SDK plugin pack, not sure now) or like someone else said just try to remove it completely. The best possible way is to go to options>plugins>audio/sound and disable it!
revenger334 is offline   Reply With Quote
Old June 17th, 2007   #86 (permalink)
The Alpha and Omega
 
ShakirMole's Avatar
 
Join Date: Mar 2007
Location: Tanzania
Posts: 302
i removed the plugin but the emu does not open
__________________
------------------------------------------------------
Join Irc server #thegoldcafe on channel irc.star-fleet.net and get rom compatibility lists for iDeaS,no$gba,and others and all your emulation needs
Alternatively, you could join through the java website which links directly to thegoldcafe channel
http://www.dscompatibilitydatabases.co.nr/

Professor Layton Walkthrough with excellent coverage and pics http://professorlaytonwalkthrough.blogspot.com/
ShakirMole is offline   Reply With Quote
Old June 17th, 2007   #87 (permalink)
Registered User
 
Join Date: Mar 2007
Location: Cincinnati,Ohio
Posts: 45
Quote:
Originally Posted by SCHUMI-4-EVA View Post
ShakirMole your entire computer is weak....that Celeron (not pentium...there is no pentium like that) 1,7Ghz chip is a horrible chip. P4VM800 asrock is not your processor, it's your motherboard.
Yes I know about this because the 1,7Ghz celeron is my old chip.
Try Running It On A Pentium II 400 Mhz With 4 Mb Video Ram And See How Slow It Goes.
oldgamer1967 is offline   Reply With Quote
Old June 17th, 2007   #88 (permalink)
Devastating Force
 
SCHUMI-4-EVA's Avatar
 
Join Date: Jan 2007
Location: Governmentless South Africa
Posts: 5,809
I would not even dream of trying that. It was more than bad enough on my even older P3 866Mhz with 128MB RAM and 64MB VRAM. Like a screen every 10 seconds. Absolute slideshow.
I wonder if that P2 can even run VBA at full speed.
__________________
AMD Athlon64 3700+ (2.2Ghz rated as 3.7Ghz Pentium), ASUS A8NE-FM, 4x512MB DDR400 RAM, ATI Radeon X850XT, 320GB HDD, Windows XPSP2 Home,
Leadtek Winfast TV2000 XP Expert, Creative Sound Blaster Audigy Value
Get it right fools! The glass is HALF-EMPTY, not half-full!!!
!!! WARNING: Emulation requires a brain !!! WARNING: Emulation =/= Piracy !!!
The Champ has retired, but may his Legacy live on FOREVER !!!!
SCHUMI-4-EVA is online now   Reply With Quote
Old June 18th, 2007   #89 (permalink)
Registered User
 
kismayas69's Avatar
 
Join Date: Oct 2006
Location: phil
Posts: 126
elo guys long tym no blog.... just wanna greet lino that your emulator was great cool hope the next version will be more expected to see. hey i try rockman ZX advent i have the rom in DS its good but i will not blog here... god bless lino...keep up the good work....peace out
kismayas69 is offline   Reply With Quote
Old June 18th, 2007   #90 (permalink)
The Alpha and Omega
 
ShakirMole's Avatar
 
Join Date: Mar 2007
Location: Tanzania
Posts: 302
lol i know my whole motherboard (not ram and VGA card) is worthless but i can't change it since here to get a dual core pc will cost u over 400$ to exchange for the one i have but i can live with it until the time comes
P.S did u have to be so mean to my computer lol (and me)
By the way if wanna see for yerself look at this Directx dialog to see wether my processor is pentium or not
Attached Images
File Type: jpg system info.JPG (74.6 KB, 14 views)
__________________
------------------------------------------------------
Join Irc server #thegoldcafe on channel irc.star-fleet.net and get rom compatibility lists for iDeaS,no$gba,and others and all your emulation needs
Alternatively, you could join through the java website which links directly to thegoldcafe channel
http://www.dscompatibilitydatabases.co.nr/

Professor Layton Walkthrough with excellent coverage and pics http://professorlaytonwalkthrough.blogspot.com/

Last edited by ShakirMole; June 18th, 2007 at 12:27.
ShakirMole is offline   Reply With Quote
Old June 18th, 2007   #91 (permalink)
Devastating Force
 
SCHUMI-4-EVA's Avatar
 
Join Date: Jan 2007
Location: Governmentless South Africa
Posts: 5,809
Heh o well I have a Celeron 1.7ghz.

I probably would not have been so mean to you but I had a Celeron 1.7Ghz, with 256MB RAM and a nVidia GeForce FX5200 (128MB) and I have hated that PC forever, it was the utmost crap. The onboard graphics card that it has (SiS650 64MB) made VBA and NFS2-SE lag it was so crap. That was just an awfull PC, eventhough my new PC is also outdated I just love it so much more than that old piece of crap.
__________________
AMD Athlon64 3700+ (2.2Ghz rated as 3.7Ghz Pentium), ASUS A8NE-FM, 4x512MB DDR400 RAM, ATI Radeon X850XT, 320GB HDD, Windows XPSP2 Home,
Leadtek Winfast TV2000 XP Expert, Creative Sound Blaster Audigy Value
Get it right fools! The glass is HALF-EMPTY, not half-full!!!
!!! WARNING: Emulation requires a brain !!! WARNING: Emulation =/= Piracy !!!
The Champ has retired, but may his Legacy live on FOREVER !!!!
SCHUMI-4-EVA is online now   Reply With Quote
Old June 19th, 2007   #92 (permalink)
Registered User
 
Join Date: Sep 2006
Location: Whiterock
Posts: 28
wow, this emu has came a long way! so much faster than the others. it was also the first to emulate castevania and still the only emu that it is "playable" with.

once 3d is fixed and a frame limiter is added nothing will be able to compete.

keep up the great work.
sleekgeek is offline   Reply With Quote
Old June 19th, 2007   #93 (permalink)
The Alpha and Omega
 
ShakirMole's Avatar
 
Join Date: Mar 2007
Location: Tanzania
Posts: 302
"once 3d is fixed" hmm that will be the day
__________________
------------------------------------------------------
Join Irc server #thegoldcafe on channel irc.star-fleet.net and get rom compatibility lists for iDeaS,no$gba,and others and all your emulation needs
Alternatively, you could join through the java website which links directly to thegoldcafe channel
http://www.dscompatibilitydatabases.co.nr/

Professor Layton Walkthrough with excellent coverage and pics http://professorlaytonwalkthrough.blogspot.com/
ShakirMole is offline   Reply With Quote
Old June 21st, 2007   #94 (permalink)
Registered User
 
kismayas69's Avatar
 
Join Date: Oct 2006
Location: phil
Posts: 126
lino when did you can apply the cheats like codebreakers or Action replay codes.....
kismayas69 is offline   Reply With Quote
Old June 21st, 2007   #95 (permalink)
Emu author
 
Lino's Avatar
 
Join Date: May 2007
Location: Italy
Posts: 313
yes, in the next version there and' the support for the ActionReplay. Do you have information on the coding of the codebreak?
__________________
iDeaS Emulator
Lino is offline   Reply With Quote
Old June 21st, 2007   #96 (permalink)
Registered User
 
kismayas69's Avatar
 
Join Date: Oct 2006
Location: phil
Posts: 126
master lino yes id like info about CAstlevania DoS i have a codes in no$gba it wont work how do you know if this code example is compatible...or can be use right
kismayas69 is offline   Reply With Quote
Old June 21st, 2007   #97 (permalink)
ビター バージン
 
sigmax's Avatar
 
Join Date: Oct 2006
Location: Dominican Republic(ドミニカ共和国)
Posts: 1,242
I think lino is talking about the source code of codebreaking anyway i guess hiei-yyh have info about it
__________________
"La vida es bella no la desperdicies"
シグマクス
sigmax is offline   Reply With Quote
Old June 21st, 2007   #98 (permalink)
Registered User
 
kismayas69's Avatar
 
Join Date: Oct 2006
Location: phil
Posts: 126
thanks sigmax...and when the emulator can import gba file

Last edited by kismayas69; June 21st, 2007 at 03:38.
kismayas69 is offline   Reply With Quote
Old June 21st, 2007   #99 (permalink)
THE Hentai M@ster
 
Hiei-YYH's Avatar
 
Join Date: Aug 2005
Location: MAKAI
Posts: 1,446
Exclamation

Quote:
Originally Posted by Lino View Post
yes, in the next version there and' the support for the ActionReplay. Do you have information on the coding of the codebreak?

ah, i have all the information. I'll post the code list type for both CBDS and ARDS, if you have any question just ask. or you can add me on msn ;p pm if you want.


CBDS CODE LIST:

---------------------------------------
Auto Game Recognizer (Code Type 0x0000)
---------------------------------------
E000YYYY XXXXXXXX
E = Mode (0 = Encrypted Codes 8 =Raw code) (Put an 8 to alow CBDS to rake Raw codes)
YYYY = Game's Header CRC16 (offset 0x15e In Rom) Revers it (If its 1122 -- E=11 F=22 the YYYY will be 2211 hope this helps)
XXXXXXXX = Game's Nintendo ID (offset 0x00C In Rom)

-------------------------------------
8-Bit Constant Write (Code Type 0x00)
-------------------------------------
0XXXXXXX 000000YY
00 = Code Type Or Byte
XXXXXXX = Address
YY = 8-bit Value

--------------------------------------
16-Bit Constant Write (Code Type 0x10)
--------------------------------------
1XXXXXXX 0000YYYY
10 = Code Type Or Byte
XXXXXXX = Address
YYYY = 16-bit Value

--------------------------------------
32-Bit Constant Write (Code Type 0x20)
--------------------------------------
2XXXXXXX YYYYYYYY
20 = Code Type Or Byte
XXXXXXX = Address
YYYYYYYY = 32-bit Value

---------------------------------------------
8/16-Bit Increment/Decrement (Code Type 0x30)
---------------------------------------------
3XXXXXXX 000UYYYY
30 = Code Type Or Byte
XXXXXXX = Address
U = Bit-type Write, 0 for 8-Bit & 1 for 16-Bit
YYYY = 8/16-bit Value to increment by
NOTE: YYYY is signed so it can do increment and decrement

-------------------------------------------
32-Bit Increment/Decrement (Code Type 0x38)
-------------------------------------------
3XXXXXXX YYYYYYYY
38 = Code Type Or Byte
XXXXXXX = Address
YYYYYYYY = 8/16-bit Value to increment by
NOTE: YYYYYYYY is signed so it can do increment and decrement

---------------------------------------------
Serial Repeat Constant Write (Code Type 0x40)
---------------------------------------------
4XXXXXXX TWWWZZZZ
YYYYYYYY VVVVVVVV
40 = Code Type Or Byte
XXXXXXX = Address
T = Bit-type Write, 0 for 32-Bit, 1 for 16-Bit & 2 for 8-Bit
WWW = Number of times to repeat
ZZZZ = Increase Address by (Multiply by data size (1 << (2 - T)))
YYYYYYYY = Start Value
VVVVVVVV = Increase Value by
Example: This code:
42010000 00050001 <-- 0001 * 4 = 0004 to Increase Address by
63636363 00000000
Is the same as:
22010000 63636363
22010004 63636363
22010008 63636363
2201000C 63636363
22010010 63636363

---------------------------
Copy Bytes (Code Type 0x50)
---------------------------
5XXXXXXX YYYYYYYY
ZZZZZZZZ 00000000
50 = Code Type Or Byte
XXXXXXX = Address to copy to
YYYYYYYY = Number of bytes to copy
ZZZZZZZZ = Address to copy from

-----------------------------
Pointer Code (Code Type 0x60)
-----------------------------
6XXXXXXX YYYYYYYY
ZZZZZZZZ BCTUVVVV
60 = Code Type Or Byte
XXXXXXX = Pointer Address
YYYYYYYY = 8/16/32-Bit Value
ZZZZZZZZ = Offset to add to the Pointer Address
B = Bit-type Write, 0 for 8-bit, 1 for 16-Bit & 2 for 32-Bit
C = Condition Enabled, 0 for disabled, 1 for enabled
T = Condition type to check against
0 = If equal to VVVV
1 = If not equal to VVVV
2 = If lesser than VVVV
3 = If greater than VVVV
4 = If AND VVVV equal to 0000
5 = If AND VVVV not equal to 0000
6 = If AND VVVV equal to VVVV
7 = If AND VVVV not equal to VVVV
U = Bit-type Load, 0 for 8-Bit & 1 for 16-Bit
VVVV = Conditional Value to check against

-----------------------------------------------
8/16-Bit Special Bitwise Write (Code Type 0x70)
-----------------------------------------------
7XXXXXXX 00TBYYYY
70 = Code Type Or Byte
XXXXXXX = Address
T = Operation type, 0 for OR, 1 for AND, 2 for XOR
B = Bit-type Write, 0 for 8-Bit & 1 for 16-Bit
YYYY = 8/16-Bit Value

----------------------------------------------
32-Bit Write On Bootup-Hook 1 (Code Type 0xA0)
----------------------------------------------
AXXXXXXX YYYYYYYY
A0 = Code Type Or Byte
XXXXXXX = Address
YYYYYYYY = Value

----------------------------------------------
32-Bit Write On Bootup-Hook 2 (Code Type 0xA8)
----------------------------------------------
AXXXXXXX YYYYYYYY
A8 = Code Type Or Byte
XXXXXXX = Address
YYYYYYYY = Value

-----------------------------------------
16-Bit Conditional Check (Code Type 0xD0)
-----------------------------------------
DXXXXXXX ZZTUYYYY
D0 = Code Type Or Byte
XXXXXXX = Address
ZZ = Lines to skip, 00 means 01 by default
T = Condition type to check against
0 = If equal to YYYY
1 = If not equal to YYYY
2 = If lesser than YYYY
3 = If greater than YYYY
4 = If AND YYYY equal to 0000
5 = If AND YYYY not equal to 0000
6 = If AND YYYY equal to YYYY
7 = If AND YYYY not equal to YYYY
U = Bit-type Load, 0 for 16-Bit & 1 for 8-Bit
YYYY = Conditional Value to check against

-----------------------------------
Enable Code-Hook 1 (Code Type 0xF0)
-----------------------------------
FXXXXXXX TYYYYYYY
F0 = Code Type Or Byte
XXXXXXX = Hook Address
T = Type of Hook to use
0 = Hook almost any 2 opcodes, LDR PC,=
1 = Hook almost any BL opcode, BL function
2 = Hook almost any .long address, DC.D ADDR ; BX
3 = Hook almost any BX Register opcode, BX Ry
YYYYYYY = Cheat Engine Address

-----------------------------------
Enable Code-Hook 2 (Code Type 0xF8)
-----------------------------------
FXXXXXXX TPPPPPPP
F8 = Code Type Or Byte
XXXXXXX = Cheat Engine Hook Address
T = Type of Hook to use
0 = Hook almost any 2 opcodes, LDR PC,=
1 = Hook almost any BL opcode, BL function
2 = Hook almost any .long address, DC.D ADDR ; BX
3 = Hook almost any BX Register opcode, BX Ry
PPPPPPP = Parameters that will be used later



AR NDS Codes Type Information
By kenobi.

Before starting :
=================

Compared to other AR (like the NGC or GBA ones) the NDS AR code handler offers a
lot of changes.

* First, the NDS AR doesn't wait to encounter a '00000000 00000000' code to stop
the code execution. It knows how much code have been entered and enabled,
and only stops when all of them have been have been processed.

* Second, the NDS AR uses temporary data. There are 3 kind of them :
- The first one is what I'll call the offset, which is a 32-bits value usually
added to the address of the code.
- The second one are what I'll call the Dx registers. They are four 32-bits, stored
before the code list, which is used by the AR to store/load data. I call them
'Dx repeat value', 'Dx next code to be executed', 'Dx code status' and 'Dx data'.
- Finally, there is the 'code execution status', which is a 32bits value that
tells the AR if a code can be executed, or can be skipped. This code execution
status is changed by the 'if' codes.

* Third, the NDS AR uses some kind of 'while... end' code type, which opens a
lot of new ways to make codes.


Official codes types :
======================

Most AR codes look like this :
ZXXXXXXX YYYYYYY

Z is the code type, XXXXXXX is the address, YYYYYYYY is the value.

Note : everytime the code handler is called, it clears all the value it uses
(ie. the offset, the code status, the Dx registers), and then executes all the
codes 'at once'.


RAM Write Codes :
-----------------

Type 0 : 32 bits write (str)
0XXXXXXX YYYYYYYY : writes word YYYYYYYY to [XXXXXXXX+offset].

Type 1 : 16 bits write (strh)
1XXXXXXX 0000YYYY : writes halfword YYYY to [XXXXXXXX+offset].

Type 2 : 8 bits write (strb)
2XXXXXXX 000000YY : writes byte YY to [XXXXXXXX+offset].


If... Codes (32bits):
---------------------

For all the If codes, if the check is false, execution status is stopped/turned
off (ie. following codes are disabled). Also, these 'If...' codes don't support
the offset :/... (but I made a hack for that, check the NDS AR HACK #1)
Also, 'If...' codes can be 'stacked' (up to 32 'If...' codes can be used at the
same time).

Type 3 : 32 bits If (code value)>(data at address) (bhi, "unsigned higher")

3XXXXXXX YYYYYYYY : checks if YYYYYYYY > (word at [XXXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type 4 : 32 bits If (code value)<(data at address) (bcc, 'unsigned lower")
4XXXXXXX YYYYYYYY : checks if YYYYYYYY < (word at [XXXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type 5 : 32 bits If ==
5XXXXXXX YYYYYYYY : checks if YYYYYYYY == (word at [XXXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type 6 : 32 bits If !=
6XXXXXXX YYYYYYYY : checks if YYYYYYYY != (word at [XXXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.


If... Codes (16bits+masking):
-----------------------------

For all the If codes, if the check is false, execution status is stopped/turned
off (ie. following codes are disabled). Also, these 'If...' codes don't support
the offset :/... (but I made a hack for that, check the NDS AR HACK #1)
Also, 'If...' codes can be 'stacked' (up to 32 'If...' codes can be used at the
same time).

Code 7, 8, 9, A are perfect for any 'joker' code (to check the pad status, try
them on register 04000130). They should also be used for event flag check.

Type 7 : 16 bits If (code value)>(mask & data at address) (unsigned)
7XXXXXXX ZZZZYYYY : checks if (YYYY) > (not (ZZZZ) & halfword at [XXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type 8 : 16 bits if (code value)<(mask & data at address) (unsigned)

8XXXXXXX ZZZZYYYY : checks if (YYYY) < (not (ZZZZ) & halfword at [XXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type 9 : 16 bits if (code value)==(mask & data at address)
9XXXXXXX ZZZZYYYY : checks if (YYYY) == (not (ZZZZ) & halfword at [XXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.

Type A : 16 bits if (code value)!=(mask & data at address)
AXXXXXXX ZZZZYYYY : checks if (YYYY) != (not (ZZZZ) & halfword at [XXXX]).
If not, the code(s) following this one are not executed (ie. execution status is
set to false) until a code type D0 or D2 is encountered, or until the end of the
code list is reached.


Offset Load Code :
------------------

Type B : loads the 32bits value into the 'offset'.
BXXXXXXXX 00000000 : offset = word at [0XXXXXXX + offset].


Loop Start Code :
-----------------

Type C : defines the start of the loop code.
C0000000 YYYYYYYY : set the 'Dx repeat value' to YYYYYYYY, saves the 'Dx next
code to be executed' and the 'Dx execution status'. Repeat will be executed when
a D1/D2 code is encountered. When repeat is executed, the AR reloads the 'next
code to be executed' and the 'execution status' from the Dx registers.


Special Codes :
---------------

The D0->D2 code type are always executed (even if the 'execution status' is
set off).

Type D0 : 'endif'.
D0000000 00000000 : loads the previous execution status (if none exists, the
execution status stays at 'execute codes').

Type D1 : Used to execute the loop set by the code type C (executes the code(s)

after the type C code n times (n being the 'Dx repeat value'), but does not
clear the Dx registers upon finishing).
D1000000 00000000 : if the 'Dx repeat value', set by code type C, is different
than 0, it is decremented and then the AR loads the 'Dx next code to be executed'
and the 'execution status' (=jumps back to the code following the type C code).
When the repeat value is 0, this code will load the saved code status value.

Type D2 : Used to apply the code type C setting (executes the code(s) after the
type C code n times, n being the Dx repeat value).
Also acts as a 'Full terminator' (clears all temporary data, ie. execution
status, offsets, code C settings...).
D2000000 00000000 : if the 'Dx repeat value', set by code type C, is different
than 0, it is decremented and then the AR loads the 'Dx next code to be executed'
and the 'execution status' (=jumps back to the code following the type C code).
When the repeat value is 0, this code will clear the code status, the offset
value, and the Dx data value (which can be set by codes DA, DB and DC).


Offset Set Code :
-----------------

Type D3 : set the 'offset' to the value of the code.
D3000000 XXXXXXXX : set the offset value to XXXXXXXX.


Add a value to the Dx Data Register :
-------------------------------------

Type D4 : adds the value of the code to the data register used by D6~DB.
D4000000 XXXXXXXX : adds XXXXXXXX to the 'Dx data'.
More arithmetical/logical operations can be set using the 'NDS AR HACK #2'.


Set the value of the Dx Data Register :
---------------------------------------

Type D5 : sets the data register used by D6~D8 to the value of the code.
D5000000 XXXXXXXX : sets the 'Dx data' to XXXXXXXX.


Incrementive write of the Dx Data Register (32/16/8bits) :
----------------------------------------------------------

Type D6 : 32-bits incrementive write of the data register (str).
D6000000 XXXXXXXX : writes the 'Dx data' word to [XXXXXXXX+offset], and
increments the offset by 4.

Type D7 : 16-bits incrementive write of the data register (strh).
D7000000 XXXXXXXX : writes the 'Dx data' halfword to [XXXXXXXX+offset], and
increments the offset by 2.

Type D8 : 8-bits incrementive write of the data register (strb).
D8000000 XXXXXXXX : writes the 'Dx data' byte to [XXXXXXXX+offset], and
increments the offset by 1.


Dx Data Register (32/16/8bits) Load Codes :
-------------------------------------------

Type D9 : 32-bits read to the data register (ldr).
D9000000 XXXXXXXX : loads the word at [XXXXXXXX+offset] and stores it in the
'Dx data'.

Type DA : 16-bits read to the data register (ldrh).
DA000000 XXXXXXXX : loads the halfword at [XXXXXXXX+offset] and stores it in
the 'Dx data'.

Type DB : 8-bits read to the data register (ldrb).
DB000000 XXXXXXXX : loads the byte at [XXXXXXXX+offset] and stores it in the
'Dx data'.
!!! This code is buggy. Check 'AR Hack #0' for the fix !!!


Add to Offset Code :
--------------------

Type DC : adds the offset 'data' to the current offset.
(some kind of dual offset)
DC000000 XXXXXXXX : offset = (offset + XXXXXXXX).


Patch Code :

------------

Type E : 'patch' code. Copies YYYYYYYY bytes from (curent code location + 8)
to [XXXXXXXX + offset].
EXXXXXXX YYYYYYYY
...
exemple :
EXXXXXXX 00000010
AAAAAAAA BBBBBBBB
CCCCCCCC DDDDDDDD
writes AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD to XXXXXXXX
If the execution status if set off, the AR skips all the line of the patch code
(skips (YYYYYYYY+7)>>2 codes).


Memory Copy Code :
------------------

Type F : memory copy code. It seems you have to use the code type D3, DC or B
before, to set the offset (which is then an address). Then D2 should be needed
to clear the offset (else it will affect all the next codes).
D3000000 XXXXXXXX
FYYYYYYY ZZZZZZZZ
should copy ZZZZZZZZ bytes from offset (=XXXXXXXX in this case) to YYYYYYYY
(YYYYYYYY if fixed, ie. no offset are added to it).


* The E and F type work as follow :

If the number of data to write/copy if >3, it is done with a ldr/str, and then 4
is removed from the number of data to copy.
Else, if the number of data to copy if <3, it's done with a ldrb/strb and then 1
is removed from the number of data to copy.
And it loops until the number of data to copy is eqal to zero.
That means that the first address to write to must be aligned in case of the
number of bytes to copy is superior to 3 (else there will be a 'bug' if the
number of code to write is > 3 and not a multiple of 4), and that the number of
bytes to write doesn't not have to be a multiple of 4 (can be any number).


--------------------


The following are hacks made by kenobi, it just add some new things to the ar code handler

NDS AR HACK #1 : If... Codes :
------------------------------

Here are some code that change the 'If...' code type so they can use the offset.
I also precised the original code handler values in the 'No offset support' in
case you need to disable these hacks for any reason.
Used with the C code, theses codes could be useful to 'auto patch' some values
in a memory region.

Here are first the 'one by one' codes :

Code Type 3 :
Offset support :
023FE20C E5933000
No offset support
023FE20C E5903000

Code Type 4:
Offset support :
023FE224 E5933000
No offset support :
023FE224 E5903000

Code Type 5:
Offset support :
023FE23C E5933000
No offset support :
023FE23C E5903000

Code Type 6:
Offset support :
023FE254 E5933000
Offset support :
023FE254 E5903000

Code Type 7 :
Offset Support :
023FE26C E1D320B0
023FE270 E1E03004
No offset support :
023FE26C E1E03004
023FE270 E1D020B0

Code Type 8 :
Offset Support :
023FE290 E1D320B0
023FE294 E1E03004
No offset support :
023FE290 E1E03004
023FE294 E1D020B0

Code Type 9 :
Offset Support :
023FE2B4 E1D320B0
023FE2B8 E1E03004
No offset support :
023FE2B4 E1E03004
023FE2B8 E1D020B0

Code Type A :
Offset Support :
023FE2D8 E1D320B0
023FE2DC E1E03004
No offset support :
023FE2D8 E1E03004
023FE2DC E1D020B0


And here are some codes that modifies all the 'If...' code type at once :

Code Type 3->6 :
Offset Support :
C0000000 00000003
023FE20C E5933000
DC000000 00000018
D2000000 00000000
No offset support :
C0000000 00000003
023FE20C E5903000
DC000000 00000018
D2000000 00000000

Code Type 7->A :
Offset Support :
C0000000 00000003
023FE26C E1D320B0
023FE270 E1E03004
DC000000 00000024
D2000000 00000000
No offset Support :
C0000000 00000003
023FE26C E1E03004
023FE270 E1D020B0
DC000000 00000024
D2000000 00000000


NDS AR HACK #2 : ORR/AND/ADD Codes :
------------------------------------

These codes changes the behaviour of the D4 code type.
This could be useful to trigger an event bit on/off.

Makes the D4 code type execute a 'ORR' instruction.
023FE424 E1833004

Makes the D4 code type execute a 'AND' instruction.
023FE424 E0033004

Makes the D4 code type execute a 'ADD' instruction.
023FE424 E0833004


NDS AR HACK #3 : Add Dx Data to Offset Code :
---------------------------------------------

This code changes the D4 code type to make it add the Dx Data to the offset.

023FE424 E08AA003

Could be useful if the game's pointer's offset change.


NDS AR HACK #4 : Execute custom asm routine :
---------------------------------------------

This code changes the E code type to make it execute the data you entered.

023FE074 012FFF11

And to 'revert' to the normal effect of the E code type, use this one :

023FE074 E3520003

exemple :
023FE074 012FFF11
EXXXXXXX 00000010
AAAAAAAA BBBBBBBB
CCCCCCCC E12FFF1E

When the E code type will be encountered, the code handler will jump to and
execute (ie. bx to) the AAAAAAAA, BBBBBBBB, CCCCCCCC and E12FFF1E instructions (means the instructions must be in ARM, and not THUMB).

All the custom routines you make must end with E12FFF1E (bx r14).

Also, you must not touch the following registers (or you must push/pop them),
unless you know exactly what you are doing :

r4 (holds the number of bytes of data you entered in the E code type)
r5 ((holds the position of the data of the E code type from the start of the
code list) >> 2)
r7 (holds the 'execution status' data)
r9 (holds the starting address of the AR codes list)
r10 (holds the offset)
r11 (holds the total number of codes enabled in the AR)
r13 (SP)
r14 (LR)

On a side note, here is what the other register hold :

r0 holds the address of the E code type plus the offset (0XXXXXXX + offset)
r1 holds the starting address of the E code type data (what I used for the bx)
r2 holds a copy of the data of the E code type (00000010 in the exemple)
r3 is the same than r0
r6 holds what the next 'execution status' data would look when set to true
r8 holds what the next 'execution status' data would look when set to false
r12 holds the 'full' data of the E code type (EXXXXXXXX)

The advantages of this hack are :
- you can execute whatever you want (custom codes, and why not a code searcher ?).
- no need to find free space to store your asm routine.
- you can manipulate the AR data (for exemple, calculate the offset in a
complicated manner and store it in r10, or end the execution of code by setting
r11 to 0).
Only disadvantages :
- also 'screw up' the F code type (so you have to disable the hack before using any F code type).
- doesn't work with games that have an (m) code that relocates the AR code handler.


NDS AR HACK #5 : Change the F code type source/dest :
-----------------------------------------------------

If the length of the data to copy is a multiple of 4

Fixed to Offset
023FE07C E4903004
023FE080 E4813004

Offset to fixed
023FE07C E4913004
023FE080 E4803004

If the length of the data to copy is l