Need help making one etrian odyssey iii code(ASM code),first test failed lol

Discussion in 'NDS - ROM Hacking and Translations' started by demonata, Mar 9, 2013.

  1. demonata
    OP

    Newcomer demonata Member

    Joined:
    Sep 26, 2010
    Messages:
    11
    Country:
    Hong Kong
    When the JP version of Etrian Odysey 3(drowned city) was out,
    some jap make a code that allows subclass' special skill to be shown normally on custom menu
    020ABEE4 E1A00000

    Now I want to make one in US version of game(sine nobody made that), but my first test failed.

    Here's what I have done:
    Since there's no obvious value to be tracked,
    I checked the original DWORD value stored in 020ABEE4 , which is 1A000015 (15 00 00 1A)
    and confirmed the change of value to 00 00 A0 E1 and how the ingame effect comes in.

    Then I found 40 address in the US version having the same DWORD.
    40 trials isn't long, but sadly, none of them is successful.

    I start to wonder what else can I try now, since I'm new to this kind of thing.
    Please give some suggestions!
     
  2. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,705
    Country:
    United Kingdom
    I have to run shortly and do not have the games to hand to test but I will run through what happens and some theory that will hopefully get you looking somewhere that will get it done.

    020ABEE4 E1A00000
    0XXXXXXX is a write 32 bit value to XXXXXXX (plus any offset if that is part of the cheat but it is not here). The 32 bit value is E1A00000 in this case.

    As you say that location is in the memory and most likely within the area that the binary gets copied to when the game is initialised.

    Again as you say this means you are changing the binary and in doing so changing an instruction.
    E1A00000 translates as a NOP (no operation or if you prefer telling the processor to twiddle its thumbs instead) and is the traditional method for assembly hackers to prevent an instruction from doing anything (deleting things shifts everything out of alignment and quickly breaks a game).
    The original value (thanks for that by the way) is a break if not equal and probably the most common thing for the would be ROM hacker to use a NOP on, having never played the games (or even understanding how they work at this point) I am not sure what goes but a guess would be that you can display the skill if you press a button or something but it might otherwise cover too much space so it is "optional". This is probably the result of an "if button pressed" command and if not it would jump to the new location and carry on running, Without it the thing will assume the button is pressed and run the "display the subclass' special skill" subroutine before going back to the game as it would usually happen.
    This means searching for the value is going to be fairly pointless to do, however it could form the basis for what you actually want to look for as you can think around how the game works.
     
  3. demonata
    OP

    Newcomer demonata Member

    Joined:
    Sep 26, 2010
    Messages:
    11
    Country:
    Hong Kong
    Thanks for the explanation, but I still can't get why it's pointless(?)


    Just a bit more words about what's really happening:
    Normally, the subclass' special skill is hidden in the list of skills,
    e.g.
    http://www.gamefaqs.com/ds/981313-etrian-odyssey-iii-the-drowned-city/images/gs_screen-59
    This image shows a monk and his main class skill.
    subclass skills have another tab.
    if a character subclass "monk", the first skill "Form Qi" will not be shown.
    (but I remember elixirdream found that the skill is learn-able through code, but you can never see it, so it's purely a display block-out)

    After I started the game, the code takes effect the next time I look into any character's skill tab list
    (didn't have any button press code wrapping it)


    About my test:
    What I thought is, the JP version can be hacked through changing one command into another,
    so the command should be found in the same mechanic in US version.
    I thought JP and US version would use the same mechanic, so somehow they will contain the same command in it,
    and to alter it would grand me what I want.
    But the test result says otherwise.....so the related coding is different in US version!?

    If I have to start from ash,
    the biggest issue in making the code is, how can I track down the mechanic that hides the first skill in the list.
     
  4. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,705
    Country:
    United Kingdom
    Thanks for that- it will hopefully help me get my head around what happens in the game to be able to change it.

    Why it is pointless to just search for that value in this case
    Assembly largely uses very simple instructions that do not do a lot. That is OK as you can build up very complex operations using them though.
    What you are searching for is a break if not equal- just before that there would have been a test to see something and the result would have been set as equal or not equal in a special part of the CPU. The instruction reads this value and if it is not equal it jumps somewhere else (break is more or less the same as jump)- by replacing the break if not equal with a "no operation" instruction it will not take that path regardless of what the previous test came back with and go on to do whatever it would have done if the result had been equal (in this case ultimately display the subclass' special skill).

    What you searched for was this break if not equal instruction which may have cropped up many times in a game (if you were giving directions to someone and you said turn left- it means nothing without context) as it is a fairly common instruction.

    It might also be the thing that led to it was removed- this is rare but not unheard of.
     
  5. Auryn

    Member Auryn GBAtemp Advanced Fan

    Joined:
    Jul 21, 2011
    Messages:
    528
    Country:
    Switzerland
    Do you have an advanced savegame for both versions??
    Can you put them here to download??
     
  6. demonata
    OP

    Newcomer demonata Member

    Joined:
    Sep 26, 2010
    Messages:
    11
    Country:
    Hong Kong
    512 ones are for no$gba (SAV/SNA File Format == Raw)
    257 ones are for desmume win-32 (save type: from database)

    US save is from someone I don't remember @some forum(here?)
    JP save is heavily cheated for fun only, don't laugh XD
     

    Attached Files:

Share This Page