Jump to content


  • Content Count

  • Joined

  • Last visited

About Whai

  • Rank
  • Birthday May 16

Profile Information

  • Interests
    programming, learning how machines work
  • Location

Previous Fields

  • Favorite Fire Emblem Game
    Radiant Dawn


  • I fight for...

Recent Profile Visitors

460 profile views
  1. 024CB75A 0000012C 024CB762 0000012C 024CB766 000092A0 024CB76A 0000012C 024CB76E 000092A0 024CB772 0000012C 024CB776 000092A0 You also have to add 0x80 on the 9220 because if you go to the address on the game's memory via Dolphin's debug or a 3rd party software like Dolphin Memory Engine : You notice at the address 0x804CB764, its value being another address : 0x803EA240. In conclusion : You have to add 0x80 on 9220 because it is an address and since address on v1.01 are often shifted compared to the v1.00 you have to add an offset. On side note : If you take a look at the code Have All Items in Convoy and Skills (296 items) [ShadowX39] on my thread : [...] 083E92A0 80B5FE10 [...] This address (0x803E92A0) is also used at the address 0x804CB754. It is the address of the Dawn Brigade's convoy. So the code Enable Max Storage (300) in Convoy for All Chapters [g6flavor], set the max storage to 300 for all parts and set the Dawn Brigade convoy for all parts.
  2. Are you using the game's version 1.01 or 1.00 ? And I do not have any idea of why only ShadowX39's codes don't work for you. I tried on easy difficulty and on 4:3 aspect ration, and both worked. Did you test the code on the Part 1 - Prologue ?
  3. Yes, in in this case you have to add 0x80 on both
  4. You have to add 0x80 on the address AND on the value, because you can notice that it looks like an address (since it starts with 80______). In conclusion : 04884E84 8066B8B0
  5. This post will only talk about the battle animation script. Credits to shadowofchaos and g6flavor. Link of the post : gamehacking.org/wiird (archive) Battle Animation Modding The address of the battle animation start at 0x803C9C60 (0x803C9BE0 for the v1.00). This address determines the flow of the battle so we should not touch it, so we will start to manipulate at the address 0x803C9C64. First of all, we have to understand the main structure of the Battle Animation Script. The Battle Animation has 3 sections : The very beginning of the battle data The battle data After the encounter I) The very beginning of the battle data Since it is the very beginning, the address start at 0x803C9C64. It is where we initialize characters' stats for the battle and put skills that need to used at the very beginning (e.g Nihil, Vantage, Parity...) Here is an example of the very beginning of the battle data : When Edward fights the first bandit at 1-P on Normal mode 74000000 7300000C 03000013 04000013 05000000 06000005 07000064 0800000A 0E000019 0F000019 10000009 11000003 12000033 13000000 72000000 1) The 1st line is the part for skills but there is no skills being used in this example. 74000000 is a value to say that we are in skills part. 2) The 2nd line and the 3rd line is the part for characters's stats. First, let's talk about the 2nd line : 7300000C means that we are in the stats part. The "0C" points out the number of 4 bytes' array (in other words, it determines the limit of this part), you can notice that on the 3rd line, there are 12 arrays of 4 bytes. So now let's talk about the 3rd line. As we understood, those arrays are characters' stats data. Let's look over the first byte of each array : 03, 04, 05, 06, 07, 08, 0E, 0F, 10, 11, 12, 13 The first byte determines which character and his stat is manipulated : 03 - Attacker's Max HP 04 - Attacker's Current HP 05 - Attacker's Strength 06 - Attacker's Defense 07 - Attacker's Hit 08 - Attacker's Crit ---- 0E - Defender's Max HP 0F - Defender's Current HP 10 - Defender's Strength 11 - Defender's Defense 12 - Defender's Hit 13 - Defender's Crit The last byte (or should I say the last 2 bytes since values are signed 16bits) of the array is, you guessed, the value of the stat. So that means : 03000013 -> Attacker's Max HP = 19 0800000A -> Attacker's Crit = 10 12000033 -> Defender's Hit = 51 etc... 3) The 4th line. I have no idea what this part is for. II) The battle data This part is self-explanatory. Let's take the same example as above : When Edward fights the first bandit at 1-P on Normal mode 24000000 25000000 73000000 74000000 75000002 1400FFF5 6E000000 2A000000 24000000 26000000 73000001 0F00000E 74000000 75000002 0900FFFC 6E000000 2A000000 24000000 25000000 29000000 73000001 0400000F 74000000 75000002 1400FFF5 6E000000 2A000000 I intended so that you can visualize the data block . Alright, I'll explain that, let's split in 3 smaller blocks. 1) 24000000 25000000 73000000 74000000 75000002 1400FFF5 6E000000 2A000000 The first and last line demarcate the action data. 25000000 -> The attacker moves to combat the defender (in our case, Edward moves to the bandit) 73000000 -> Stats part 74000000 -> Skills part 75000002 -> Attack part, the "02" means the number of 4 bytes array 1400FFF5 -> HP modifier to the defender, since it is a signed 16bits, the value is in negative : -11; negative value = damage, positive value = heal; 0 value = treat as if it does damage but do 0 damage (It is different than No Damage) 6E000000 -> The attack successfully landed 2) 24000000 26000000 73000001 0F00000E 74000000 75000002 0900FFFC 6E000000 2A000000 The first and last line demarcate the action data. 26000000 -> The defender moves to combat the attacker (so in our case, the bandit counterattack) 73000001 -> Stats part, "01" mean 0F00000E -> Defender's current HP, since the attacker (Edward) sucessfully hit the defender, the defender's current HP is 14 74000000 -> Skills part 75000002 -> Attack part 0900FFFC -> HP modifier to the attacker, since it is a signed 16bits, the value is in negative : -4 6E000000 -> The attack successfully landed 3) With explanations above, you will understand easily. Except : 29000000 -> I have no idea what it does III) After the encounter This part determines : who won the encounter the EXP of the player unit earn If he levels up, the stats that will grow up The end of the battle animation script Let's take the same example as above : 2D000000 2E000009 2B000000 00000000 "2D" -> It is the amount of EXP before the fight. The value is a signed 16bits (althought negative numbers will not be displayed properly) "2E" -> It is the amount of EXP to add. The value is a signed 16bits 2B000000 00000000 -> End of the battle animation script Note : Since Edward did not kill the bandit, the code to say who won the encounter is not here. And since he did not level up, the same applies too. How to customize Battle Animation Now that we understood how the battle animation works, let's customize it ! I) Stats part It is simple. No need a how-to-do. Note : You may have noticed, but there is no "Dmg" stat, only "Strength" and "Defense" stats, so you have to calculate yourself to set the display damage you want. Note 2 : Do NOT set the value of the Max HP too high otherwise not only the game but Dolphin will crash because out of memory space. However, you can change the value of the Current HP as much as you want because the Green HP Bar to display is limited to the Max HP. II) Skills part As we knows, the skills part is after the : "7400NNNN" with NNNN the number of arrays of 4 bytes. Skills values : For examples : Nihil for both, Vantage, Gamble : Attacker : Adept, Wrath, Resolve, Lethality, Mercy; Defender : Resolve Sol, Cancel III) Attack part The attack part is after the : "7500NNNN" with NNNN the number of arrays of 4 bytes. It is composed of the HP modifier of the opponent and/or/or not the HP modifier for himself, and how the attack landed Values of how-the-attack-landed : 6E = Hit 6F = Critical Hit 70 = Miss For examples : Defender : Sol, Critical Hit Attacker : Critical Hit; Defender : Mantle Attacker : Miss Attacker : Hit; Defender : Aurora IV) After the encounter Who won the encounter : 0B000000 = Defender Won 16000000 = Attacker Won EXP : Already explained LVL UP : 310000SS with "SS" the level after the level-up When leveling-up, you can modify the which stats grow and how many they grow : UU00GGGG 0xUU: Stat value : 32 = HP 33 = Str 34 = Mag 35 = Skl 36 = Spd 37 = Lck 38 = Def GGGG = Stats to grow For Examples : Start with 50 EXP, earning 100 EXP, Level-Up to 20, +4 Strength, +1 Skill, - 10 Luck, +24 Defense 2D000032 2E000064 31000014 33000004 35000001 3700FFF6 38000018 Start with 90 EXP, lose 70 EXP 2D00005A 2E00FFBA V) Important Notes The Battle Animation Script is only for visual, which means that the result is not determined with the script. It is determined at the address : 0x803C8F6C and 0x803C940C You should recognize these address, they are used, for example, on codes like ALWAYS Alive enemy turn. And since it is only for visual, the level-up panel will only show when the unit would truly level-up. However, for some reason, if the unit truly level-up and you modify the values of stats that grow, it will apply the change Aether and Astra are special cases where they are activated in multiple steps which means that when, for example, Astra is used you have to do 5 data blocks in a row where the one who use astra attack instead of the classic : attacker moves, defender moves, attacker moves... The address 0x803C9C60 is not only used for the battle animation script, it is also used for Bonus EXP, Ashera Revives, ... So activate the cheat code only when you start the map. VI) Gecko Codes and demonstration For the Gecko Code, use the String Patch CodeType, 06______ YYYYYYYY d1d2d3d4 d5d6.... Writes each byte (d1, d2, d3, ...) consecutively, starting at address ba+______ YYYYYYYY is the number of bytes to write Here is a demonstration of what we can achieve : Here is the Gecko code :
  6. Now, I'm going to show you how to customize codes. First of all, you should understand the Gecko CodeType, I recommend to read this CodeType Documentation than the previous one because it is where I understood more easily about the CodeType (of course, to really understand it, you have to practice). For example in the 32 bits Write & Fill From the documentation, the "______" is the offset for the ba (base address) which is set by default at 0x80000000. Which is why we remove the "80" of the address you want to modify : The address of the Bonus EXP for the Dawn brigade is 803CAB5C, you want to change the value at this address, then since the base address is set by default on 0x80000000, you have this code BEXP Part 1 [Am3692] 043CAB5C 48694000 So Dolphin emulator recognise that : We want to do a 32 bits Write at the address of ba + 0x3CAB5C and ba + 0x3CAB5C = 0x80000000 + 0x3CAB5C = 803CAB5C It then writes what we want on the address 803CAB5C Change Controller So, certain codes I posted above use the WiiRemote with Classic Controller and but you don't use this controller, you prefer to use the Gamecube Controller or just the WiiRemote Controller ? Or you just want use other buttons than the ones that the code need ? No need to panic, buttons.txt With this, replace the code where there is the controller's address with the one you want. For example : Make all Enemies Played Controlled (works in all Chapters and all Difficulties) (GameCube Controller) [ShadowX39] 20B5411C 50320A46 66100004 00000000 283D7928 0000xxxx 0066B8C4 00000000 CC000000 00000000 0066B8C4 00000001 E0000000 80008000 xxxx = button value Always Alive/RecoveryHP [team] on [team] turn You have the [Always Alive/RecoveryHP after battle] on enemy/player turn, but you are tired of green/yellow units dying, triggering the game-over like for example in 3-11 Tibarn getting too cocky that he went to fighting the boss which has the Aqqar and then dying miserably which trigger the game over and of course you always forget to battle save so you have to F*CKING restart the WHOLE chapter and command the yellow unit to retreat on a safe spot ? (No, of course I didn't experienced that, no... NO!) So, first of all you have to understand the code, let's take for example the "Always Alive" code : ALWAYS Alive enemy turn [g6flavor] 283C9416 0000B8B0 2E3C9438 0000F000 283C9434 00000000 003C9434 00000063 E0000000 80008000 283C9416 0000B8B0 this line check in which side the DEFENDER is, in our case it checks if it is on the player side Values can be found geckocodes.org (archive), of course those values are for the v1.00, BUT you can port it to v1.01 just by adding 0x80 to the address : With that said, ALWAYS Alive enemy turn (for Partner units) 283C9416 0000B8D4 2E3C9438 0000F000 283C9434 00000000 003C9434 00000063 E0000000 80008000 VoilĂ  ! now Tibarn can get cocky as much as he wants. Address of the attacker : 803C8F6C Address of the defender : 803C940C It looks like the data have the same structure as the characters' but it starts at the model offset. I suggest you to take a look about the structure. Here is 2 links pointing to spreedsheat files : this and mine. The difference is that the first one is more completed but there are some offsets that are wrong. You should use both. Which means that since it starts with the model offset, if you add from the base : +0x4 : Class +0xA (or preferably 0xB) : Controlled by ... +0x24 : Conditions ... With this knowledge, you can do for example : Enemy is asleep for 6 turns after combat 283C9416 0000B8BC 2E3C9438 0000F000 003C9430 00000003 E0000000 80008000 2E3C9438 0000F000 (the second line) -> it checks the defender's affinity (I have no clue why the author put it) Characters You may noticed that I did not put any codes regarding on modifying units. That is because it is better to be posted in this post where we talk about customization. As I mentionned before, download/take a look on this spreedsheat and mine and use both. So, I will take Nolan (or Pugo) for the example since it is the very first character on the characters data address. (The size of each blocks of character's data is 0x3F0 which means that the next character's data after Nolan is his address+0x3F0) The base address of Nolan is 0x80884D90. Wanna change his class into a Reaver ? First of all, search the Reaver's class value at geckocodes.org (archive) : 526C - Reaver Now, port it for the v1.01 : 0x526C + 0x80 = 0x52EC Now, according to my speadsheat, the offset of the class value is 0xF2 (It should be 0xF0 but since we will only modify 2 bytes). 0x80884D90 + 0xF2 = 0x80884E82 We wants to do a 16 bits Write or in other world a 2 bytes Write. According to the the CodeType Documentation, 16 bits Write & Fill 02______ YYYYXXXX So now we have the code : Nolan is a Reaver 02884E82 000052EC We can do other things like Set Nolan's MVT to the max 00884EA6 00000014 Items Same thing as characters except that we already know the address of each items (and models and skills) thanks to Wooster, Am3692 and ShadowX39. Address are at geckocodes.org (archive) For example, we want meteor being able to also use at close range : Meteor's address : 0x80B61BE0 Meteor's address for the v1.01 : 0x80B61C60 Offset of the minimum range : 0x20 We will do a 8 bits write. Code : Meteor can attack at close range 00B61C80 00000001 With my speadsheat, you will also need : Item Characteristics values.txtWeapon Types values.txt How to calculate offset ? You need a calculator that can calculate with hex values. The Windows 10 calculator can be used. Since the Windows 10 calculator is not set by default for being able to manipulate hex values, here is how to do it : ??? Profit If you are on GNU/Linux or MAC, my apologies I don't have any name of software to suggest you If you have any question feel free to ask. I will try answer it.
  7. Hello cheaters/hackers, In this post, I am going to share you codes that I managed (and sometimes edited) to port for the NTSC-U 16:9 v1.01. Codes have been tested on Dolphin Emulator, 16:9 screen, on normal difficulty. I will show you how to customize in another post Here are the codes I managed to port for v1.01 : And here a code that I managed to create : Set the unit's side to controlled by [Whai] While in the player phase, put your cursor on the unit then press : R+ZL and/or R+ZR via the WiiRemote with Classic Controller to change the unit's "controlled by". You can press the buttons multiple times to browse which side the unit will fight for. It works on easy/normal mode, for hard mode change at the : - 3rd to 12th line of the cheat code from 224CB568 to 223DB348 - 4th and 13th line of the cheat code from 804CB568 to 803DB348 Here are the files so no need to copy/paste : RFEE01 v1.00 (Pastebin) | RFEE01 v1.01 (Pastebin) Download the one with the version you have (if you continued to read up here I guess you have the v1.01) and save it as RFEE01.ini in <Your user home directory>/Documents/Dolphin Emulator/GameSettings/
  8. It's been a while, I want to share my creation which is kind of funny : Test it yourself. If you only want the item being blessed, use this code : As for the name of the forged weapon, it uses the ASCII table There you go : I don't see the why do you want to use AR codes instead of Gecko codes but here are the codes : Gecko Codes : Translated for AR codes : It is because the addresses of codes like this are also used in the opening cutscene which leads to crash the game if we change values. To solve this issue, you have to either activate the code once you loaded your file or add another piece of code like this : 20b5411c 50320a46 [insert your code that crash at the start of the game] e0000000 80008000
  9. Try this 04191B08 28000003 04052CD8 28000003 04067C9C 28000003 You have to add 0x80 on adresses. Try this 283D795A 00000410 003CB07C 00000004 E0000000 80008000
  10. Here are links that helped me to convert : gecko codetypes (archive) AR codetypes
  11. Oops, I have totally forgot that was for AR codes... So here is the code translated in AR : ccb5411c 50320a46 00000000 84b54114 78646464 00a10047 00000000 84b54118 64646464 00a10047 00000000 84b540e0 014b014b 00a10047 00000000 84b540e4 014b014b 00a10047 00000000 84b540e8 014b014b 00a10047 00000000 84b540ec 014b014b 00a10047 00000000 84b540f0 014b014b 00a10047 00000000 84b540f4 014b014b 00a10047
  12. Try this : 20b5411c 50320a46 08b54114 78646464 20a1011c 00000000 08b54118 64646464 20a1011c 00000000 08b540e0 014b014b 20a1011c 00000000 08b540e4 014b014b 20a1011c 00000000 08b540e8 014b014b 20a1011c 00000000 08b540ec 014b014b 20a1011c 00000000 08b540f0 014b014b 20a1011c 00000000 08b540f4 014b014b 20a1011c 00000000 e0000000 80008000 First and last line are here so you don't have to activate the code after the main screen (and not after loading a file; my mistake). I hope this works
  13. What codes did you use ? There are codes that crash at the start of the game, you have to activate after loading the file
  14. Great, now I'm sure that those codes work with everyone else. Here are the codes I managed to port : When BEXP Level Up, limited to 3 categories restriction lifted (found at : somewhere in wiird forum (archive) ; credits : g6flavor for porting from (J) to (U)) : EXP gained after an action (found at : wiird forum (archive)) Level Up Stats + Mod (found at : wiird forum (archive))
  15. Hello, can someone test this code to see if it works also on anyone else: Inf. Movement: 04053508 7c601b78 Description: After a command (wait, attack, ...) the player unit will be able to move again (The code work on all difficulty) If it does work, I'll post codes that I managed to port here
  • Create New...