|
|
|||||||
| About Us | Register | FAQ | Members List | Calendar | Mark Forums Read |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#81 (permalink) | |
|
Devastating Force
![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jan 2007
Location: Governmentless South Africa
Posts: 5,809
|
Quote:
__________________
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 !!!!
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
#83 (permalink) |
|
The Alpha and Omega
![]() ![]() ![]() 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/ |
|
|
|
|
|
#84 (permalink) |
|
Devastating Force
![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 !!!!
|
|
|
|
|
|
#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!
|
|
|
|
|
|
#86 (permalink) |
|
The Alpha and Omega
![]() ![]() ![]() 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/ |
|
|
|
|
|
#87 (permalink) | |
|
Registered User
Join Date: Mar 2007
Location: Cincinnati,Ohio
Posts: 45
|
Quote:
|
|
|
|
|
|
|
#88 (permalink) |
|
Devastating Force
![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 !!!!
|
|
|
|
|
|
#89 (permalink) |
|
Registered User
![]() ![]() 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
|
|
|
|
|
|
#90 (permalink) |
|
The Alpha and Omega
![]() ![]() ![]() 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
__________________
------------------------------------------------------ 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. |
|
|
|
|
|
#91 (permalink) |
|
Devastating Force
![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 !!!!
|
|
|
|
|
|
#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. |
|
|
|
|
|
#93 (permalink) |
|
The Alpha and Omega
![]() ![]() ![]() 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/ |
|
|
|
|
|
#95 (permalink) |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 |
|
|
|
|
|
#99 (permalink) | |
|
THE Hentai M@ster
![]() ![]() ![]() ![]() ![]() Join Date: Aug 2005
Location: MAKAI
Posts: 1,446
|
Quote:
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 |