Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.

Reply
 
Thread Tools
  #1    
Old October 4th, 2007 (1:25 AM). Edited April 15th, 2010 by Spherical Ice.
Dabomstew Dabomstew is offline
     
    Join Date: Feb 2007
    Gender:
    Nature: Adamant
    Posts: 31
    ScriptDec, as the title implies, is a program used to reverse compiled scripts into something a bit more viewable by humans. Unlike ScriptED or Pokescript, it actually does a decent job at doing this (no offense to the authors of those programs, but the decompilers are pretty unreliable, not that I'd ever want to be tasked with writing one). But being a DOS command line program, its use may confuse some people, so I compiled this small tutorial.

    If you're a relative newbie to scripting, stop here. This tutorial isn't for you - it will not help you learn scripting. If you want to duplicate the effect of an existing script, you're better off just using that script as it is and changing the text.

    Download ScriptDec: here

    ScriptDec is made by loadingNOW, not me. As such, I cannot answer questions about it, or fix any bugs. I am simply providing a tutorial for its use, as when used properly, it is a valuable resource to hackers seeking to add new features to their scripts. To my knowledge, the last release of the program was in 2005, so the likelihood of an update is very small, though the source was included with the release.

    There are two ways to use ScriptDec, one is actually notoriously easy which involves using EliteMap, and one slightly more difficult, but more reliable.

    The Easy Way:
    • Download ScriptDec from the above link, and extract it to a folder.
    • Rename the main ScriptDec EXE file to scripted.exe
    • Replace the scripted.exe in the folder of EliteMap with your renamed ScriptDec (remember to replace scripted with the original if you actually want to make a script using it!)
    • Make sure your ROM doesn't have any spaces in the filename! (Preferably no special characters at all, but I know it doesn't work with spaces.)
    • Open your ROM in EliteMap, find the event you want to see the script of, and Ctrl+click it.
    • Press N and then Enter, as it is not a level script.
    • The script will appear in your internet browser as a htm file.

    The Other Way: (for if you dont like EliteMap, or it crashes when using your rom, etc)
    • Download ScriptDec from the above link, and extract it to a folder.
    • Copy the rom you want to view the script from into its directory.
    • Find the offset of the script you want to view in AdvanceMap or EliteMap, and make note of it.
    • Run the DOS command prompt, navigating to the directory with scriptdec in it, and run the command:
      Code:
      scriptdec romname.gba:offsetinhex
      For example, for OAK's script in Fire Red:
      Code:
      scriptdec firered.gba:169595
      For the offset, do not include any 0x or &H, just the six numbers/letters of the offset.
      If your rom name has spaces in it, make sure to put quotes around the rom name (but not anything else), like so:
      Code:
      scriptdec "Fire Red.gba":169595
    • Press N and then Enter, as it is not a level script.
    • The script will appear in your internet browser as a htm file

    ScriptDec can decode level scripts, but is not very good at doing so as it does not recognize the 02 structure that is used for the bulk of the script. If you want to actually view a level script, interpret the structure according to Baro's tutorial in order to find the offset of the main bulk of the script, and view it as a non-level script.

    Sometimes, the script may appear blank or incomplete in your browser. Don't worry, this isn't a sign of failure, it just means ScriptDec opened the web browser before it finished decompiling the script. So just wait a couple of seconds, then refresh the page. The script should appear in its entirety, or at least up until the point which ScriptDec can decode (it seems to stumble on the hex command C7, but I haven't found any other problems yet).

    ScriptDec is not a miracle program. It will not solve the problem of making custom trading scripts, or doing anything you want in a script. It is, however, very useful for finding new commands and specials to use in one's scripting.

    If you understand scripting to a good extent, I recommend looking through the source-code of ScriptDec (provided in the zip) as it has several commands not found in the ScriptED or PokeScript command databases that can be useful to your scripts.

    Tutorial by Dabomstew. Not to be copied without permission.
    Reply With Quote

    Relevant Advertising!

      #2    
    Old October 4th, 2007 (10:42 AM).
    Juan Juan is offline
    Brazilian with a bad English
       
      Join Date: Jun 2007
      Location: Pindamonhangaba - SP
      Age: 26
      Nature: Adamant
      Posts: 92
      Where he is link for Download?
      __________________
      Reply With Quote
        #3    
      Old October 4th, 2007 (2:24 PM). Edited November 15th, 2007 by cooley.
      cooley's Avatar
      cooley cooley is offline
      ///Keepin' it simple
      • Silver Tier
       
      Join Date: Feb 2007
      Location: United States
      Age: 22
      Gender: Male
      Nature: Impish
      Posts: 1,147
      Quote:
      Originally Posted by Juan View Post
      Where he is link for Download?
      This doesn't work for me. I renamed it to 'firered.gba' but it tells me: Error opening file Firered,
      Usage: ScriptDec Romname.gba: [offset in hex]
      __________________

      Reply With Quote
        #4    
      Old October 7th, 2007 (2:28 AM). Edited October 7th, 2007 by Elementologist.
      Elementologist Elementologist is offline
      Pokemon Master
         
        Join Date: Jul 2007
        Location: Somewhere in Greece
        Age: 25
        Gender:
        Nature: Gentle
        Posts: 12
        Quote:
        Originally Posted by cooley View Post
        I'll provide the link for everyone: ScriptDec

        This doesn't work for me. I renamed it to 'firered.gba' but it tells me: Error opening file Firered,
        Usage: ScriptDec Romname.gba: [offset in hex]
        I'm sure you did something wrong. I tried it at least five times to get it right. This is what you have to do: Say your rom is pokemonfirered.gba and your offset is 16582F. So you write (Once you are in the ScriptDEC dir in DOS):
        scriptdec pokemonfirered.gba:16582F.
        To go to the directory in DOS, you type cd and then your directory.
        For Instance: cd Users\Person\Desktop\Scriptdec

        I Have A Question. Okay, scriptdec decompiles scripts, but does it also compile, I mean, can I use it to add scripts to my rom?
        Reply With Quote
          #5    
        Old October 7th, 2007 (2:35 AM).
        D-Trogh's Avatar
        D-Trogh D-Trogh is offline
        Dead
           
          Join Date: Jul 2005
          Location: Belgium
          Age: 25
          Gender: Male
          Posts: 438
          Well.. I know ScriptDec for a while.. and I made a batch file so I can work faster XD
          Code:
          cls
          @echo off
          echo Pokemon FireRed
          set choice=
          set /p choice=Offset: 
          ScriptDec FireRed.gba:%choice%
          Paste this in NotePad, save with 'All files' selected as: FireRed.bat
          Now, when you have ScriptDec, this batch file and a FireRed ROM (Named: FireRed.gba) in the same folder and you execute the batch file.. You are asked to write the offset. Ones that's done, push enter and choose the script type (Level script or not).
          Maybe I can edit ScriptDec source to be more user friendly.. :-\
          __________________
          [NTME | WPEDS | HTPE | SGPE | TGPE | PDEDS]
          Reply With Quote
            #6    
          Old October 7th, 2007 (5:39 AM).
          HackMew's Avatar
          HackMew HackMew is offline
          Mewtwo Strikes Back
          • Crystal Tier
           
          Join Date: Jun 2006
          Posts: 1,314
          Quote:
          Originally Posted by Elementologist View Post
          I Have A Question. Okay, scriptdec decompiles scripts, but does it also compile, I mean, can I use it to add scripts to my rom?
          No, it doesn't. You can only view scripts and nothing else.
          __________________
          Reply With Quote
            #7    
          Old October 7th, 2007 (7:18 AM).
          Knox's Avatar
          Knox Knox is offline
          I dont know what to say
             
            Join Date: Sep 2007
            Location: In a pillow case
            Nature: Quirky
            Posts: 29
            D-Trough yours does not work.

            When I type in the offset the black box just disappears?
            Reply With Quote
              #8    
            Old October 7th, 2007 (7:30 AM).
            cooley's Avatar
            cooley cooley is offline
            ///Keepin' it simple
            • Silver Tier
             
            Join Date: Feb 2007
            Location: United States
            Age: 22
            Gender: Male
            Nature: Impish
            Posts: 1,147
            @knox: I know what you mean....
            __________________

            Reply With Quote
              #9    
            Old October 7th, 2007 (12:34 PM).
            Knox's Avatar
            Knox Knox is offline
            I dont know what to say
               
              Join Date: Sep 2007
              Location: In a pillow case
              Nature: Quirky
              Posts: 29
              Hey cooley make sure your ROM isn't patched.

              That might be the reason it doesn't work.

              I haven't tried it yet so it may not work
              Reply With Quote
                #10    
              Old October 7th, 2007 (12:35 PM).
              thethethethe thethethethe is offline
                 
                Join Date: Jun 2007
                Location: Melbourne, Australia
                Gender: Male
                Posts: 1,104
                That shouldn't be the problem. It should work even if te rom is patched.
                __________________
                Gone.
                Reply With Quote
                  #11    
                Old October 7th, 2007 (12:50 PM).
                Knox's Avatar
                Knox Knox is offline
                I dont know what to say
                   
                  Join Date: Sep 2007
                  Location: In a pillow case
                  Nature: Quirky
                  Posts: 29
                  Yeah but what if some of the offsets got deleted?

                  Like I was trying to use an oak script in a Shinygold ROM?

                  Wouldn't that not make it work?
                  Reply With Quote
                    #12    
                  Old October 7th, 2007 (12:58 PM).
                  thethethethe thethethethe is offline
                     
                    Join Date: Jun 2007
                    Location: Melbourne, Australia
                    Gender: Male
                    Posts: 1,104
                    Yeah but that's different. That's kind of like looking for a fire red offset in a ruby rom. There is no point. The only reason you'd look at a patched rom would be to view an uncommon script like the Red Gyarados or any other new scripts. If you wanted to view the oak script, wouldn't you just look in a normal FR rom?
                    __________________
                    Gone.
                    Reply With Quote
                      #13    
                    Old October 7th, 2007 (1:01 PM).
                    Knox's Avatar
                    Knox Knox is offline
                    I dont know what to say
                       
                      Join Date: Sep 2007
                      Location: In a pillow case
                      Nature: Quirky
                      Posts: 29
                      Yeah I know.

                      I forgot it was a SG ROM.
                      Reply With Quote
                        #14    
                      Old October 8th, 2007 (7:56 AM).
                      cooley's Avatar
                      cooley cooley is offline
                      ///Keepin' it simple
                      • Silver Tier
                       
                      Join Date: Feb 2007
                      Location: United States
                      Age: 22
                      Gender: Male
                      Nature: Impish
                      Posts: 1,147
                      Although some people don't need to, a reason ScriptED may not work for many is because it doesn't see the file extension. To make it see it, in a folder, go to Tools> Folder Options> View, and turn off the "hide filetype extensions" box. That is how you make it work.


                      Works for me now.But, How do you know if it is a level script or not?
                      __________________

                      Reply With Quote
                        #15    
                      Old October 8th, 2007 (12:41 PM).
                      Knox's Avatar
                      Knox Knox is offline
                      I dont know what to say
                         
                        Join Date: Sep 2007
                        Location: In a pillow case
                        Nature: Quirky
                        Posts: 29
                        Hey thanks cooley but I have no idea what a level script is.

                        But if your script is screwed up I guess that is when you can tell
                        Reply With Quote
                          #16    
                        Old October 8th, 2007 (1:05 PM).
                        thethethethe thethethethe is offline
                           
                          Join Date: Jun 2007
                          Location: Melbourne, Australia
                          Gender: Male
                          Posts: 1,104
                          Well it depends what you clicked through in Elitemap. If you clicked on a person event or a trigger event, it's a normal script. If you clicked the button at the top that says view level script then, obviously, its a level script.
                          __________________
                          Gone.
                          Reply With Quote
                            #17    
                          Old October 18th, 2007 (11:09 PM).
                          johnlycett's Avatar
                          johnlycett johnlycett is offline
                          Not Booted Out - be like me!
                             
                            Join Date: Feb 2007
                            Location: In the fridge
                            Gender:
                            Nature: Brave
                            Posts: 628
                            Well, strange i did it but comes up with couldn't find scripted.exe When i renamed it so weird. lol
                            __________________
                            Know I'm know as Johnny know (New account), so all Pms or anything that account thanks
                            Reply With Quote
                              #18    
                            Old October 23rd, 2007 (2:44 PM).
                            Satoshi Sugimori's Avatar
                            Satoshi Sugimori Satoshi Sugimori is offline
                            Hermit
                               
                              Join Date: Dec 2006
                              Location: Tokyo, Japan
                              Age: 24
                              Gender: Male
                              Nature: Timid
                              Posts: 862
                              uhm I have a question I do exactly as in the tutorial (The other way) and it works good but when i do n and then push enter it just goes away and nothing happend...
                              help please...

                              and maybe an idea
                              maybe you should use screenshots by every step it is easier to understand...
                              __________________
                              Reply With Quote
                                #19    
                              Old December 19th, 2007 (5:44 AM).
                              opeious's Avatar
                              opeious opeious is offline
                                 
                                Join Date: Dec 2007
                                Location: India
                                Age: 23
                                Nature: Relaxed
                                Posts: 62
                                Well i didn't use the first way because elitemap doesn't work on my PC bt it used to earliar mut anyway the second way works eg:-
                                "p-script dump by pscriptDec UNSTABLE (C)2005 loadingNOW
                                ;SCRIPT ENTRY POINT08169BFF: 6A lock
                                08169C00: 5A faceplayer
                                08169C01: 16 store-h [ptr],I 4001 0000
                                08169C06: 16 store-h [ptr],I 4002 0001
                                08169C0B: 16 store-h [ptr],I 4003 0004
                                08169C10: 16 store-h [ptr],I 4004 0007
                                08169C15: 21 cmp16 [ptr],I 4055 0003
                                08169C1A: 06 jmp_if 04 08169E38
                                08169C20: 21 cmp16 [ptr],I 4055 0002
                                08169C25: 06 jmp_if 01 08169C35
                                08169C2B: 0F LoadPointer,bank,ofs 00 0818EA6D ;Possible String Ref: Those are POKé BALLS.\n They contain POKéMON!
                                08169C31: 09 call_standart,(0-7) 04
                                08169C33: 6C Release
                                08169C34: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C2508169C35: 4F MoveSprite 0004 081A7643
                                08169C3C: 51 RunMove(wait) 0000
                                08169C3F: 75 Raw75 4002 0A 03
                                08169C44: C7 ???
                                08169C45: 00 nop
                                08169C46: 21 cmp16 [ptr],I 4001 0000
                                08169C4B: 06 jmp_if 01 08169C68
                                08169C51: 21 cmp16 [ptr],I 4001 0001
                                08169C56: 06 jmp_if 01 08169C87
                                08169C5C: 21 cmp16 [ptr],I 4001 0002
                                08169C61: 06 jmp_if 01 08169CA6
                                08169C67: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C4B08169C68: 0F LoadPointer,bank,ofs 00 0818E2C6 ;Possible String Ref: I see! BULBASAUR is your choice.\n It's very easy to raise.\n\n\n So, {PLAYERNAME}, you want to go with\n the GRASS POKéMON BULBASAUR?
                                08169C6E: 09 call_standart,(0-7) 05
                                08169C70: 21 cmp16 [ptr],I 800D 0001
                                08169C75: 06 jmp_if 01 08169CC8
                                08169C7B: 21 cmp16 [ptr],I 800D 0000
                                08169C80: 06 jmp_if 01 08169CC5
                                08169C86: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C5608169C87: 0F LoadPointer,bank,ofs 00 0818E25B ;Possible String Ref: Hm! SQUIRTLE is your choice.\n It's one worth raising.\n\n\n So, {PLAYERNAME}, you've decided on the\n WATER POKéMON SQUIRTLE?
                                08169C8D: 09 call_standart,(0-7) 05
                                08169C8F: 21 cmp16 [ptr],I 800D 0001
                                08169C94: 06 jmp_if 01 08169CC8
                                08169C9A: 21 cmp16 [ptr],I 800D 0000
                                08169C9F: 06 jmp_if 01 08169CC5
                                08169CA5: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C6108169CA6: 0F LoadPointer,bank,ofs 00 0818E1E8 ;Possible String Ref: Ah! CHARMANDER is your choice.\n You should raise it patiently.\n\n\n So, {PLAYERNAME}, you're claiming the\n FIRE POKéMON CHARMANDER?
                                08169CAC: 09 call_standart,(0-7) 05
                                08169CAE: 21 cmp16 [ptr],I 800D 0001
                                08169CB3: 06 jmp_if 01 08169CC8
                                08169CB9: 21 cmp16 [ptr],I 800D 0000
                                08169CBE: 06 jmp_if 01 08169CC5
                                08169CC4: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C80, 08169C9F, 08169CBE08169CC5: 76 ???
                                08169CC6: 6C Release
                                08169CC7: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169C75, 08169C94, 08169CB308169CC8: 76 ???
                                08169CC9: 53 Raw53 800F
                                08169CCC: 0F LoadPointer,bank,ofs 00 0818E339 ;Possible String Ref: This POKéMON is really quite\n energetic!
                                08169CD2: 09 call_standart,(0-7) 04
                                08169CD4: 04 call 081A66C9
                                08169CD9: 29 SetFlag 0828
                                08169CDC: 29 SetFlag 0291
                                08169CDF: 79 GivePokemon 4002 05 0000
                                08169CE5: 00 nop
                                08169CE6: 00 nop
                                08169CE7: 00 nop
                                08169CE8: 00 nop
                                08169CE9: 00 nop
                                08169CEA: 00 nop
                                08169CEB: 00 nop
                                08169CEC: 00 nop
                                08169CED: 00 nop
                                08169CEE: 19 Copy16 [ptr]<-[ptr] 4031 4001
                                08169CF3: 7D Raw7D 00 4002
                                08169CF7: 67 msgbox2 0818E361 ;Possible String Ref: {PLAYERNAME} received the {TEXTSTRING}\n from PROF. OAK!
                                08169CFC: 66 waitmsgbox2
                                08169CFD: 31 fanfare 013E
                                08169D00: 32 waitfanfare
                                08169D01: 0F LoadPointer,bank,ofs 00 081A56FB ;Possible String Ref: Do you want to give a nickname to\n this {TEXTSTRING}?
                                08169D07: 09 call_standart,(0-7) 05
                                08169D09: 21 cmp16 [ptr],I 800D 0001
                                08169D0E: 06 jmp_if 01 08169D20
                                08169D14: 21 cmp16 [ptr],I 800D 0000
                                08169D19: 06 jmp_if 01 08169D30
                                08169D1F: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169D0E08169D20: 16 store-h [ptr],I 8004 0000
                                08169D25: 04 call 081A753F
                                08169D2A: 05 jmp 08169D30
                                08169D2F: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169D19, 08169D2A08169D30: 68 grabmove
                                08169D31: 21 cmp16 [ptr],I 4001 0000
                                08169D36: 06 jmp_if 01 08169D53
                                08169D3C: 21 cmp16 [ptr],I 4001 0001
                                08169D41: 06 jmp_if 01 08169D73
                                08169D47: 21 cmp16 [ptr],I 4001 0002
                                08169D4C: 06 jmp_if 01 08169D63
                                08169D52: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169D3608169D53: 4F MoveSprite 0008 08169DB6
                                08169D5A: 51 RunMove(wait) 0000
                                08169D5D: 05 jmp 08169D83
                                08169D62: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169D4C08169D63: 4F MoveSprite 0008 08169DBF
                                08169D6A: 51 RunMove(wait) 0000
                                08169D6D: 05 jmp 08169D83
                                08169D72: 02 quit

                                ;Referenced by a conditional JUMP address @ 08169D4108169D73: 4F MoveSprite 0008 08169DC6
                                08169D7A: 51 RunMove(wait) 0000
                                08169D7D: 05 jmp 08169D83
                                08169D82: 02 quit

                                ;Referenced by a JUMP address @ 08169D5D, 08169D6D, 08169D7D08169D83: C7 ???
                                08169D84: 00 nop
                                08169D85: 0F LoadPointer,bank,ofs 00 0818DD88 ;Possible String Ref: {06}: I'll take this one, then!
                                08169D8B: 09 call_standart,(0-7) 04
                                08169D8D: 53 Raw53 4004
                                08169D90: C7 ???
                                08169D91: 03 ret

                                ;Referenced by a conditional JUMP address @ 08169C1A08169E38: 0F LoadPointer,bank,ofs 00 0818EA99 ;Possible String Ref: That's PROF. OAK's last POKéMON.
                                08169E3E: 09 call_standart,(0-7) 04
                                08169E40: 6C Release
                                08169E41: 02 quit

                                ;Referenced by a CALL address @ 08169CD4081A66C9: 19 Copy16 [ptr]<-[ptr] 8012 8013
                                081A66CE: 03 ret

                                ;Referenced by a CALL address @ 08169D25081A753F: 97 fadescreen 01
                                081A7541: 25 Level2Cmd 009E ;9E Enter Nickname
                                081A7544: 27 [30005B0],1
                                081A7545: 03 ret"
                                __________________

                                Rayqke the level 99 Rayquaza!

                                Reply With Quote
                                  #20    
                                Old June 25th, 2010 (5:02 AM).
                                ASuch ASuch is offline
                                   
                                  Join Date: May 2010
                                  Gender: Male
                                  Posts: 26
                                  I can't get this to work.... It automatically gives me this: C:\Users\Blank>, so this was what I put in:

                                  C:\Users\Blank>cd Downloads> ScriptDec scriptdec firered.gba:800E9BN

                                  I click enter, and then it says that the path could not be found. Can someone help?
                                  Reply With Quote
                                  Reply
                                  Quick Reply

                                  Sponsored Links
                                  Thread Tools

                                  Posting Rules
                                  You may not post new threads
                                  You may not post replies
                                  You may not post attachments
                                  You may not edit your posts

                                  BB code is On
                                  Smilies are On
                                  [IMG] code is On
                                  HTML code is Off

                                  Forum Jump


                                  All times are GMT -8. The time now is 3:12 AM.