Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

Reply
 
Thread Tools
  #126    
Old August 11th, 2011 (3:07 PM).
EdensElite's Avatar
EdensElite EdensElite is offline
No0b, but getting there.
     
    Join Date: Jun 2011
    Location: UK
    Gender: Male
    Nature: Bold
    Posts: 190
    I was just wonderig if it's possible to edit the box backgrounds on the pc, I couldnt find it in unLZ but since its a image it should be at some offset :/
    __________________

    ROM Hacking was getting frustrating for me. I've now stopped productions and writing the game from scratch in HTML 5.

    That means it will be playable in the browser, and across multiple devices such as the iPod touch.
    Reply With Quote
      #127    
    Old August 12th, 2011 (10:56 AM).
    Alice's Avatar
    Alice Alice is offline
    (>^.(>0.0)>
     
    Join Date: Mar 2009
    Location: Oregon
    Age: 26
    Gender: Female
    Nature: Careful
    Posts: 3,079
    Quote:
    Originally Posted by Full Metal View Post


    Good Grief No.
    Who in their right minds would play that?
    I would?

    Like I said, it's just a gimmick, but it would be fun to mess around with.
    Reply With Quote
      #128    
    Old August 12th, 2011 (10:45 PM).
    Missingyep Missingyep is offline
       
      Join Date: Jul 2010
      Posts: 275
      Just in case anyone was wondering, there's no (practically-achievable) limit to how many times a script can recurse in FR. That is to say, scripts can call scripts that call scripts that... all the way up to 65535 nesting levels (though of course, there is some noticeable lag associated with running 65535 call statements almost directly after each other).

      Test script 1 (master A calls sub B calls sub B...):
      Spoiler:
      Code:
      #dynamic 0x800000
      
      /*
       Vars:
          4000        Number of levels to recurse to
          4001        How deep are we right now?
          4002        How deep did we get?
      */
      
      #org @start
      lock
      setvar 0x4000 0x0005
      setvar 0x4001 0x0000
      setvar 0x4002 0x0000
      call @recursive
      buffernumber 0x00 0x4002
      buffernumber 0x01 0x4000
      msgbox @sAllReturnsWorked 0x02
      release
      end
      
      #org @recursive
      addvar 0x4001 0x0001
      addvar 0x4002 0x0001
      comparevars 0x4001 0x4000
      if 0x0 call @recursive
      subvar 0x4001 0x0001
      return
      
      #org @sAllReturnsWorked
      = Successfully returned to the\noutermost script.\pDepth: [buffer1] / [buffer2]


      Test script 2 (master A calls sub B calls sub C calls sub B...):
      Spoiler:
      Code:
      #dynamic 0x800000
      
      /*
       Vars:
          4000        Number of levels to recurse to
          4001        How deep are we right now?
          4002        How deep did we get?
      */
      
      #org @start
      lock
      setvar 0x4000 0xFFFF
      setvar 0x4001 0x0000
      setvar 0x4002 0x0000
      call @recursive1
      buffernumber 0x00 0x4002
      buffernumber 0x01 0x4000
      msgbox @sAllReturnsWorked 0x02
      release
      end
      
      #org @recursive1
      addvar 0x4001 0x0001
      addvar 0x4002 0x0001
      comparevars 0x4001 0x4000
      if 0x0 call @recursive2
      subvar 0x4001 0x0001
      return
      
      #org @recursive2
      addvar 0x4001 0x0001
      addvar 0x4002 0x0001
      comparevars 0x4001 0x4000
      if 0x0 call @recursive1
      subvar 0x4001 0x0001
      return
      
      #org @sAllReturnsWorked
      = Successfully returned to the\noutermost script.\pDepth: [buffer1] / [buffer2]


      So if you need to do something such as creating a recursive function to count how much of a certain item a player has, you should be able to do so without having to worry about hitting any kind of recursion limit. Again, though, efficiency is something to keep in mind.
      Reply With Quote
        #129    
      Old August 13th, 2011 (2:43 AM). Edited August 13th, 2011 by TheDarkShark.
      TheDarkShark TheDarkShark is offline
      Metal Headed Hacker
         
        Join Date: May 2010
        Location: Germany
        Gender: Male
        Nature: Calm
        Posts: 56
        Actually you don't need to worry about how many returns you may use in a recursive script. I wrote a standard script to check an item's amount (item number stored in some variable I'd need to look up...) which use goto to loop. When you use goto return will not jump to that branch, which means it will jump right back to the callstd command instead of the last recursion (I wonder if that's an actual word. We have a similar one in German for sure... ^^).
        Nice find anyway.

        Oh, and before I forget to write that:
        @EdensElite: Of course it is possible, when you have the needed offsets. There are two possible reasons why you couldn't find them in unLZ. 1 - They aren't lz-compressed, which would mean you'd need to edit them via tile molester or a similar program, like NSE. 2 - They are strored as a tileset/tilemap-combo which you usually can't guess without the right palette. That would mean, you've already found them but don't know it (sounds weird, huh?).
        A good way to find the ROM-offset of some graphics is to lookup the RAM-offset via Tile-/Map-Viewer in the VBA, put a break point on write on that offset (via VBA-SDL-H) and make the game load the graphics. With next-to-no-but-still-some ASM-knowledge you are then able to lookup the correct offset (plus you know if and how the graphic is compressed by checking the swi-function used). Also you could use logging to find the graphics, but I'm not 100 % sure if I can explain that right now...
        I hop that helped a bit. I recommend to read a tutorial anyway :P
        __________________
        There are two things every Rom-Hacker should learn:
        1. Don't give away everything you know!

        Reply With Quote
          #130    
        Old August 14th, 2011 (2:18 PM).
        JPAN JPAN is offline
        pokemon rom researcher
           
          Join Date: Dec 2008
          Posts: 104
          Quote:
          Originally Posted by QuilavaKing View Post
          I'm not entirely sure the best place to post ideas like this is, but this seems to be close enough.

          I have no clue how feasible this is, but it was just an idea I had, and since I really don't hack anymore, I thought I'd post it, and see if anyone might want to try it.

          The idea is that you would be able to only use a single pokemon throughout the game, but on every level up it would evolve (no b cancel allowed) into a completely random pokemon. It could go from caterpie to mewtwo at level 6, and then from mewtwo to magikarp at level 7. Completely random. It would also attempt to learn a completely random move from the new pokemon's list of moves learnable by level up.
          Or a stone-like item that has that behaviour. In fact, it would be quite simple to implement such a feature. For simplicity, let's say we would get rid of evolution nº2, and that any pokemon is elligible from the original 251 (so we don't deal with the 21 empty slots.)
          At 08042FC8 you would place a pointer to this function (with no +1, as this is a mov to PC and not a bx)
          Code:
          .thumb
          bl getRandomHalfword
          mov r1, #0xfb /*Celebi number*/
          bl module
          add r0, r0, #0x1 /*so that ? is not an option*/
          ADD     SP, SP, #0x14 /*we exit the function for them*/
          POP     {R3-R5}
          MOV     R8, R3
          MOV     R9, R4
          MOV     R10, R5
          POP     {R4-R7, pc}
          .align 4
          getRandomHalfword: ldr r0, rng_addr
             bx r0
          rng_addr: 0x08044EC9
          module: ldr r2, mod_addr
           bx r2
          mod_addr: 0x081E4685
          PS:untested, but looks bug-free from here
          And with this, you have a random evolution, that always takes place when a level changes.
          To use, place in the evolution type 0x02
          You can always extend the Evolution table at 08042FC4 and use this with other number, if you want

          Quote:
          Originally Posted by DavidJCobb View Post
          Just in case anyone was wondering, there's no (practically-achievable) limit to how many times a script can recurse in FR. That is to say, scripts can call scripts that call scripts that... all the way up to 65535 nesting levels (though of course, there is some noticeable lag associated with running 65535 call statements almost directly after each other).

          So if you need to do something such as creating a recursive function to count how much of a certain item a player has, you should be able to do so without having to worry about hitting any kind of recursion limit. Again, though, efficiency is something to keep in mind.
          Actually, no. Script depth is locked at 0x0806988E, to 20 pointers stored.
          The infinite recursion displayed by your example scripts is an illusuion caused by the fact that when the limit is reached, it jumps instead of going back recusively. As the return value will be the same for all called code (or almost all), it will return to the location it should correctly. And this value can't be changed (well, it could but would cause trouble) as the memory where it is located is surrounded by usefull data, and it is stored on the smallest RAM (0x0300XXXX).
          __________________
          Here are the links for my work


          Currently working on:
          Battle Script Documentation
          Another large project
          Reply With Quote
            #131    
          Old August 14th, 2011 (3:34 PM).
          Missingyep Missingyep is offline
             
            Join Date: Jul 2010
            Posts: 275
            Quote:
            Originally Posted by JPAN View Post
            Actually, no. Script depth is locked at 0x0806988E, to 20 pointers stored.
            The infinite recursion displayed by your example scripts is an illusuion caused by the fact that when the limit is reached, it jumps instead of going back recusively. As the return value will be the same for all called code (or almost all), it will return to the location it should correctly. And this value can't be changed (well, it could but would cause trouble) as the memory where it is located is surrounded by usefull data, and it is stored on the smallest RAM (0x0300XXXX).
            So FireRed remembers the outermost caller, but after a certain point it treats "return" as "goto"? That is clever... And it explains why after a certain number of tests, the screen lag caused by the calls stopped increasing.

            Thanks for sharing that info. :)
            Reply With Quote
              #132    
            Old August 14th, 2011 (4:35 PM). Edited August 14th, 2011 by Crimson5M.
            Crimson5M's Avatar
            Crimson5M Crimson5M is offline
            what
             
            Join Date: Feb 2011
            Location: Scotland
            Age: 23
            Gender: Male
            Nature: Quiet
            Posts: 1,110
            If anyone's interested to know, 251FEE is the start of the FireRed Pokedex order. Not exactly sure if it can be considered "Research and Development" but I thought I'd share anyway.
            __________________
            Youtube
            Reply With Quote
              #133    
            Old August 14th, 2011 (5:23 PM). Edited August 14th, 2011 by MikeBricks.
            MikeBricks MikeBricks is offline
               
              Join Date: Aug 2011
              Gender: Female
              Posts: 1
              You are wrong! It is 251FEE! You have to make there is a pointer for offsets you find! You are stupid for not doing so.

              No you are wrong! It is 251FEE!
              Reverse it which is EE1F2508. Then search that. You will get 2 results which mean I am right.

              No you are wrong! It is 251FEE!
              Reverse it which is EE1F2508. Then search that. You will get 2 results which mean I am right.
              __________________
              Excuse my English, I am from Argentina.
              Reply With Quote
                #134    
              Old August 14th, 2011 (6:04 PM).
              Gamer2020's Avatar
              Gamer2020 Gamer2020 is offline
              Accept no Imitations!
                 
                Join Date: Jun 2008
                Location: Distant Land
                Gender: Male
                Nature: Bold
                Posts: 941
                MikeBricks is correct. His offset is the same one I have in my ini.
                __________________

                The new home for ROM Hacking!
                Reply With Quote
                  #135    
                Old August 14th, 2011 (6:12 PM).
                Crimson5M's Avatar
                Crimson5M Crimson5M is offline
                what
                 
                Join Date: Feb 2011
                Location: Scotland
                Age: 23
                Gender: Male
                Nature: Quiet
                Posts: 1,110
                Quote:
                Originally Posted by Gamer2020 View Post
                MikeBricks is correct. His offset is the same one I have in my ini.
                Yeah, I know, it was a mistake. I interpreted the first byte of two 0s to be the beginning, because I thought it went:
                00 01 00 02
                When it was actually:
                01 00 02 00

                Who's stalking now
                __________________
                Youtube
                Reply With Quote
                  #136    
                Old August 14th, 2011 (6:51 PM).
                mystletainn mystletainn is offline
                Master of the Elements
                 
                Join Date: Jun 2007
                Location: New York
                Age: 29
                Gender: Male
                Nature: Naughty
                Posts: 7,773
                Cut the crap Gamer and Fireworks. This is the last straw before infractions and even temp bans are going to be put in place for you. A timeout from PC might do both of you good.
                __________________
                The bloody blade
                Reply With Quote
                  #137    
                Old August 14th, 2011 (7:37 PM).
                Gamer2020's Avatar
                Gamer2020 Gamer2020 is offline
                Accept no Imitations!
                   
                  Join Date: Jun 2008
                  Location: Distant Land
                  Gender: Male
                  Nature: Bold
                  Posts: 941
                  Quote:
                  Originally Posted by Luke View Post
                  Cut the crap Gamer2020 and Fireworks. This is the last straw before infractions and even temp bans are going to be put in place for you. A timeout from PC might do both of you good.
                  I actually did not do anything.

                  Here are some offsets I found in BPEE. I didn't give them proper names because I'm lazy...

                  copyright - 080A9179
                  fadescreen - 0816CF19
                  - 0816D12D
                  Gamefreak - 0816D191
                  Grassup and flygon flies - 0816D355
                  white screen - 0816D459
                  white screen - 0816D48D
                  white screen - 0816D4E5
                  Bike ride1 - 0816D651
                  Bike ride fadeout - 0816D7E8
                  white screen - 0816DBAD
                  Intro Battle start - 0816DC65
                  White screen - 0816DCFD
                  white screen - 0816DD29
                  White screen - 0816DDD9
                  lava fade in - 0816DE7D
                  lava fade in2 - 0816DED1
                  lava fade in3 - 0816DEED
                  GROUDON! - 0816DF2D
                  White screen - 0816E21
                  Kyorge! - 0816E359
                  White screen - 0816E889
                  White screen - 0816E955
                  White screen - 0816E999
                  Sky gets dark - 0816E9DD
                  still dark - 0816EAB9
                  Is it a bird? - 0816EB45
                  dark - 0816ED21
                  That bird did something scary - 0816EDB5
                  White screen - 0816EE91
                  White screen - 080A9179
                  Pokemon TitleScreen- 080AAB45
                  Emerald Vesion - 080AAC51
                  Press Start - 080AAD65
                  White screen - 080A9179
                  Fade in blue - 0802F8D9
                  still blue - 0802FAB1
                  blue... - 802FBA5
                  blue....... - 080300B1
                  New Game - 0803024D
                  Black screen - 0803027D
                  Black screen - 080307B1
                  Background loaded for birch- 080308B1
                  Birch appears - 08030928
                  Hi! Sorry to keep you waiting! - 080309CD
                  This is what is called a Pokemon. - 08030A2D
                  This world is widely... - 08030BCD
                  And You Are? - 08030C19
                  Spotlight went right - 08030C91
                  OMG he left! - 08030CD5
                  Is that me? - 08030D85
                  Nothing? - 08030DC9
                  Are you a boy? Or are you a girl? - 08030E09
                  Boy - Girl Multichoice - 08030E39
                  prepare - 08030FD5
                  All right. What's your name? - 08031015
                  press a - 08031041
                  fade to black - 08031091
                  still black - 080A9179
                  Your name? - 080E465D
                  black - 080A9179
                  black - 0803261D
                  I'm back! - 08031105
                  so it's?- 08031145
                  yes no - 08031189
                  spotlight to left - 08031221
                  I'm gone - 08031259
                  Ah, okay! - 0803133D
                  birch gone - 080313E5
                  All right are you ready? - 080314C5
                  I'm shrinking - 08031581
                  nothing? - 080315BD
                  I'm white? - 08031631
                  black - 080A9179
                  black - 080AB161
                  Overworld - 080AB1B1
                  __________________

                  The new home for ROM Hacking!
                  Reply With Quote
                    #138    
                  Old August 14th, 2011 (10:49 PM).
                  Missingyep Missingyep is offline
                     
                    Join Date: Jul 2010
                    Posts: 275
                    I'm about to start trying to reverse-engineer the COIN CASE ASM script in FireRed. My aim is to identify the functionality that makes the "COINS: XXXX COINS" message box work, so that I can call/clone it and be able to show two message boxes at once in script. (I can already imagine the possibilities...)

                    I've done a small amount of work, but before I go any further, I have three questions:
                    • Uh... How do I know when I've found the ASM that actually creates a secondary message box?
                      .
                    • My understanding of ASM is as basic as it gets, so I'll ask right now: has anyone already done what I'm trying to do? Because if someone's already done it, there's little point in me doing it. :\
                      .
                    • I'll check this one on my own if it goes unanswered when I wake up later.
                      The "showcoins" command shows a secondary box. And I'm pretty sure that the COIN CASE item code shows both a secondary box and a standard box, but my memory's a little hazy. When you use the COIN CASE from the Bag, does it show the same box that appears when "showcoins" is called?
                    Reply With Quote
                      #139    
                    Old August 15th, 2011 (2:08 AM).
                    TheDarkShark TheDarkShark is offline
                    Metal Headed Hacker
                       
                      Join Date: May 2010
                      Location: Germany
                      Gender: Male
                      Nature: Calm
                      Posts: 56
                      1. I'm not really sure (I'm new to code hacking too, I've only built ASM functions to call them from a script...), but I think when data is copied from the graphic's ROM-offset. While debugging, watch registers r0-r2 carefully. They are used by the data-copying swi-functions. r0 is the source- and r1 the aim-offset.

                      2. I don't know if anyone has researched opening a second message box. I'm currently researching the Text-Box palette loading routine, just in case that sounds important. But as I'm using a German ROM, I can only be of little help. Not that I could be of much help if I used another ROM, lol.

                      3. I don't know, sorry.
                      __________________
                      There are two things every Rom-Hacker should learn:
                      1. Don't give away everything you know!

                      Reply With Quote
                        #140    
                      Old August 15th, 2011 (10:52 PM). Edited August 18th, 2011 by Missingyep.
                      Missingyep Missingyep is offline
                         
                        Join Date: Jul 2010
                        Posts: 275
                        Turns out, the COIN CASE item script does not generate a secondary box as I recalled. However, through hours of brute-force near-blind-searching, I have managed to locate the assembly code used by the scripting engine. I've confirmed that my findings matched those presented here.

                        I have thus managed to locate the offsets of the ASM that runs when the scripting engine is processing the showcoins command. I anticipate that if I simply examine what data is passed to where, I can figure out the offset of the ASM that generates a secondary box. Manipulating that ASM should allow the script-based generation of a non-blocking second message box alongside the standard scriptable one, without either replacing or forcibly closing the other.

                        I feel the need to mention that I have barely any idea what I'm doing. I am so incompetent at ASM that I cannot even get code that I've written to compile, let alone actually work. So I'm going to share what I find, so that if I fail, I'll at least have saved other people some time.

                        All offsets are in hex.

                        Spoiler:
                        08069873
                        Part of the scripting engine. Calls 08069842.

                        08069842
                        Part of the scripting engine. Part of some code that reads the current command byte from the script and interprets it. If the current script byte is 0x00 (nop), this code calls 08069832. Otherwise, it calls 08069858.

                        08069858
                        Loads the current command byte into r1. Stores offset of the next byte of the script somewhere in the script engine's RAM (this is used later to grab the arguments). Examines some kind of table located at 0815F9B4 -- the table seems to map each command byte to the offset of its respective ASM code. For showcoins, this code loads 0x0806C259 into r1. Calls 081E3BAC.

                        081E3BAC
                        Calls whatever address has been stored in r1. For showcoins, that would be 0806C259.

                        0806C258
                        ASM for showcoins? Loads first and second argument (X and Y) into r5 and r4, respectively. Stores a pointer to the next command byte (the byte directly after the last argument) somewhere in the script engine's RAM (that RAM offset being held in r0). Calls 081119D4 (I haven't deciphered that yet). I haven't deciphered what this chunk of code does next, but it involves conditional (if r0 != 0x1) calls to 080D0554 and 080D072C, and then it goes back to 08069873, which processes the next command in the script.

                        - - - - - - - - - -

                        Ergo the ASM at 081119D4, and possibly also 080D0554 and 080D072C, are somehow responsible for loading a predetermined string ("[buffer] COINS", at 084162C4) into RAM (specifically, to offset 02021D18), drawing the frame of the secondary box, and drawing that string as the box's contents.

                        There are other things that I discovered in my blind search, though I do not know exactly where or how they fit into the showcoins functionality as a whole. They are:

                        I do not fully understand the assembly code at 08005ED4, but I do know that it loops through each character of the string after that string has been loaded into RAM and retrieves some value (stored in ROM) for each character. I suspect that it is obtaining the pixel widths that correspond to each charcode, though I do not know what it does with the numbers.

                        Multiple calls are made to 08002C48, a chunk of ASM code that seems to also be called on every frame of animation. Presumably it is called either to check for keypresses or to update what is on-screen, though I don't know why such checks would be run before the secondary box has even appeared. Perhaps it is done to prevent showcoins from blocking music and the playtime counter.

                        I suspect that assembly code at 08008FCC is what loads the message string into RAM, but I am not sure.


                        - - - - - - - - - -

                        EDIT1: ADDITIONAL FINDINGS

                        Spoiler:
                        Still don't know what exactly 081119D4, above, does. But I know that 080D0554 loads the number of coins from DMA-protected memory, and 080D072C initiates a huge volume of code that eventually produces the secondary box.

                        08008E78 is the offset of an ASM function that buffers a number. It appears to divide the input by a number (hardcoded 0xA) and process the remainder, thereby splitting the number into digits. Each digit is compared to 0x9; if lower or equal to, the charcode for it is found; if greater than, the charcode AC ("?") is returned. I have no idea which register holds the number to be buffered, however.

                        08003CE4 calls different blocks of code depending on what kind of message is to be displayed. It runs once when the message is to be displayed, and then I think it runs on every frame of animation thereafter. I'm not sure, however; VBA-SDL-H is... temperamental, shall we say. Moving on:

                        When a message box is created, its data -- a 12-byte structure that was partially documented here -- is written either into the stack or into some memory area very close to it. (The stack pointer itself is frequently shifted and unshifted throughout the process. Confusing!) When the first eight bytes of the data have been put together, code at 08003DE8 generates the last four bytes (based on the last four bytes of the preceding message box data) and then moves the new structure from the stack-or-near-the-stack area into the proper RAM area. Note that there is always one chunk of message box data already in RAM -- that of the standard message box, even if that box is inactive.

                        08008FCC appears to be used to load the string from ROM into RAM. r0 is the destination offset, r1 is the source; for showcoins, they are 0x02021D18 (message to be displayed) and 0x084162C4 ("[buffer] COINS"), respectively. Characters are transferred one at a time. Most charcodes are handled by a copying code at 080090A6, but codes FA through FF each have some kind of special handler, with FA's being at 08008FEC. I haven't investigated that further; it's not relevant to what I'm trying to find.

                        Here's a hierarchical chart of my findings:
                        Spoiler:
                        Code:
                        0x08069842
                        Load and proess script byte.
                        
                            0x08069858
                            Identify script command byte.
                        
                                0x0806C258
                                ASM for showcoins. Retrieves arguments.
                        
                                    0x081119D4
                                    Unknown. But if it sets r0 to 
                                    0x1, then showcoins doesn't do 
                                    anything.
                        
                                    0x080D0554
                                    Retrieve coins from DMA-protected 
                                    memory and store in r0.
                                    
                                    0x080D072C
                                    Unknown. Starts generation of 
                                    secondary msgbox data.
                        
                                        0x0810FE50
                                        Gathers certain attributes for 
                                        box sizing? Uses bitmasks of some 
                                        sort.
                        
                                        0x08003CE4
                                        Calls different code blocks depending 
                                        on what kind of message box is being 
                                        shown. It seems as though every kind 
                                        of message box passes through here -- 
                                        even the Start Menu!
                        
                                        It also locates the first unused slot 
                                        for message box position data in RAM.
                        
                                            0x08003D96
                                            Unknown. Runs once for most message 
                                            boxes. Runs twice for the Start Menu 
                                            (once mid-sound, once after). Does not 
                                            run for signbox or msgbox.
                        
                                                0x08002B9C
                                                Unknown.
                        
                                                0x08003DE8
                                                Transfers the new message box position 
                                                data from some space near the stack to 
                                                the proper RAM offset.
                        
                                            0x0800445C
                                            Unknown. Uses a software interrupt to 
                                            copy a section of memory.
                        
                                            0x08003FA0
                                            Unknown. Some of the code it calls 
                                            runs a TON of weird and complicated 
                                            comparisons, returning 0x0 or 0x1 
                                            based on the result.
                        
                                            0x080D06D0
                                            Triggers loading of the "[buffer] 
                                            COINS" display.
                        
                                                0x08008E78
                                                Buffers a number. r2 specifies the 
                                                buffer to use?
                        
                                                0x08008FCC
                                                Copies the string at r1 into the 
                                                offset at r0, one character at a 
                                                time. Calls special codes for each 
                                                charcode between 0xFA and 0xFF, 
                                                inclusive.
                        
                                                0x08005ED4
                                                Unknown. But it seems important.
                        
                                0x0806C287 (cont'd from 0x0806C258)
                                ...Returns to the script engine 
                                ASM to process the next command.



                        - - - - - - - - - -

                        EDIT2: ADDITIONAL FINDINGS

                        Spoiler:
                        08002C48 is not actually called on every frame; that was just the debugger going haywire. It's only called a few times, and I suspect that it -- or code called by it -- triggers drawing and erasing of message boxes.

                        0800445C is the code that uses a software interrupt to copy data. It copies a very large chunk of data; I think it loads the tiles for either a box's frame or its interior.

                        And finally, I have managed to just barely manipulate secondary box generation. Have a look at this screenshot:



                        You'll notice that there is a problem with the palettes... But look in the upper-left corner. That is the bottom corner of a secondary box! It even vanishes when another secondary box (or a multichoice) is displayed. However, I couldn't find the tiles for the secondary's text content in VBA's Tile Viewer... According to the Memory Viewer, however, a pointer to my text was successfully loaded to 0x02021D18, so it appears that the only issues left to solve are graphical ones.

                        Here's the ASM code I used, if anyone wants to have a look and see what they can find. You would use loadpointer to load a string into memory, and then call this with callasm. The code was modeled after that used by the game; essentially, it's a copy that loads the string you feed with loadpointer. (Apparently, it isn't a very accurate copy...)
                        Spoiler:
                        Code:
                        .align 2
                        .thumb
                        
                        main:
                        push {r0-r7,lr}
                        mov r4, #0x0
                        mov r3, #0x0
                        lsl r4, r4, #0x18
                        lsl r3, r3, #0x18
                        mov r0, #0x80
                        lsr r0, r0, #0x11
                        add r4, r4, r0
                        add r3, r3, r0
                        lsr r4, r4, #0x18
                        lsr r3, r3, #0x18
                        mov r0, #0x08
                        str r0, [sp]
                        mov r0, #0x03
                        str r0, [sp, #0x4]
                        mov r0, #0x0F
                        str r0, [sp, #0x8]
                        mov r0, #0x20
                        str r0, [sp, #0xC]
                        add r0, sp, #0x10
                        mov r1, #0x0
                        mov r2, r4
                        push {r7}
                        ldr r7, DATA_ASSEMBLE
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldr r0, [sp, #0x18]
                        ldr r1, [sp, #0x14]
                        str r0, [sp, #0x18]
                        str r1, [sp, #0x1C]
                        ldr r4, UNKNOWN_DATA_1
                        add r0, sp, #0x18
                        strb r0, [r4]
                        ldrb r0, [r4]
                        mov r1, #0x0
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_1
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldrb r0, [r4]
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_2
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldrb r0, [r4]
                        ldr r5, UNKNOWN_DATA_2
                        mov r1, r5
                        mov r2, #0x0
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_4
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldrb r0, [r4]
                        mov r1, #0x0
                        mov r2, r5
                        mov r3, #0xD
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_5
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldrb r0, [r4]
                        ldr r2, SECONDARY_BOX_HEADER_STRING
                        mov r3, #0x0
                        str r3, [sp]
                        mov r1, #0xFF
                        str r1, [sp, #0x4]
                        str r3, [sp, #0x8]
                        mov r1, #0x2
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_3
                        bl CALL_GAME_ASM
                        pop {r7}
                        mov r0, r6
                        bl COBB_SUBFUNCTION
                        add sp, #0x20
                        pop {r0-r7,pc}
                        
                        COBB_SUBFUNCTION:
                        push {r4,lr}
                        add sp, #-0xC
                        ldr r0, STRING_RAM_OFFSET
                        ldr r1, SCRIPT_LOADED_POINTER_0
                        mov r3, #0x4
                        mov r4, r0
                        push {r7}
                        ldr r7, BODY_STRING_LOADER
                        bl CALL_GAME_ASM
                        pop {r7}
                        mov r0, #0x0
                        mov r1, r4
                        mov r2, #0x0
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_6
                        bl CALL_GAME_ASM
                        pop {r7}
                        ldr r1, UNKNOWN_DATA_1
                        ldrb r1, [r1]
                        mov r3, #0x40
                        sub r3, r0
                        lsl r3, r3, #0x18
                        lsr r3, r3, #0x18
                        mov r0, #0xC
                        str r0, [sp]
                        mov r0, #0x0
                        str r0, [sp, #0x4]
                        str r0, [sp, #0x8]
                        mov r0, r1
                        mov r1, #0x0
                        mov r2, r4
                        push {r7}
                        ldr r7, UNKNOWN_FUNCTION_3
                        bl CALL_GAME_ASM
                        pop {r7}
                        add sp, #0xC
                        pop {r4}
                        pop {r0}
                        bx r0
                        
                        CALL_GAME_ASM:
                        bx r7
                        
                        SECONDARY_BOX_HEADER_STRING:
                        .word 0x08417C2D
                        
                        SCRIPT_LOADED_POINTER_0:
                        .word 0x03000F14
                        
                        STRING_RAM_OFFSET:
                        .word 0x02021D18
                        
                        DATA_ASSEMBLE:
                        .word 0x810FE51
                        
                        UNKNOWN_DATA_1:
                        .word 0x02039A28
                        
                        UNKNOWN_FUNCTION_1:
                        .word 0x0800445D
                        
                        UNKNOWN_FUNCTION_2:
                        .word 0x08003FA1
                        
                        UNKNOWN_DATA_2:
                        .word 0x0000021D
                        
                        UNKNOWN_FUNCTION_3:
                        .word 0x08002C49
                        
                        UNKNOWN_FUNCTION_4:
                        .word 0x0814FF2D
                        
                        UNKNOWN_FUNCTION_5:
                        .word 0x0810F2E9
                        
                        BODY_STRING_LOADER:
                        .word 0x08008FCD
                        
                        UNKNOWN_FUNCTION_6:
                        .word 0x08005ED5


                        - - - - - - - - - -

                        EDIT3:

                        Removing the call to 0814FF2C prevents palette damage, but it also prevents any messageboxes from appearing. It would seem that I am not providing the correct values to it; I'll have to investigate it further.
                        Reply With Quote
                          #141    
                        Old August 19th, 2011 (6:40 AM).
                        Mr.Pkmn's Avatar
                        Mr.Pkmn Mr.Pkmn is offline
                        Ordinary ASM Magician
                           
                          Join Date: May 2008
                          Posts: 54
                          How can we fix the broken sun weather in FRLG? Heavy rain works fine but intense sunlight makes the screen black.
                          Also I wonder if the snowy weather could set auto-hail, like other weathers do...
                          Reply With Quote
                            #142    
                          Old August 19th, 2011 (9:00 AM).
                          TheDarkShark TheDarkShark is offline
                          Metal Headed Hacker
                             
                            Join Date: May 2010
                            Location: Germany
                            Gender: Male
                            Nature: Calm
                            Posts: 56
                            @DavidJCobb: lol, while fiddling with the values in the memory viewer i managed to open a second textbox. All it does is showing the same text though...
                            Here's what I did: open apply a new value to the text box's y coordinate (in this case i chose 8) and open the text box. While it's open, apply a new value (here 0xf) and return to the game. when pressing A it will open the second text box.
                            Actually, only the second text box will be hidden when the script is ended, the first one is cleared.
                            Just in case you can use this...
                            Attached Images
                            File Type: png Tile Insertion ROM.png‎ (3.9 KB, 114 views) (Save to Dropbox)
                            __________________
                            There are two things every Rom-Hacker should learn:
                            1. Don't give away everything you know!

                            Reply With Quote
                              #143    
                            Old August 19th, 2011 (1:43 PM).
                            Missingyep Missingyep is offline
                               
                              Join Date: Jul 2010
                              Posts: 275
                              Quote:
                              Originally Posted by TheDarkShark View Post
                              @DavidJCobb: lol, while fiddling with the values in the memory viewer i managed to open a second textbox. All it does is showing the same text though...
                              Here's what I did: open apply a new value to the text box's y coordinate (in this case i chose 8) and open the text box. While it's open, apply a new value (here 0xf) and return to the game. when pressing A it will open the second text box.
                              Actually, only the second text box will be hidden when the script is ended, the first one is cleared.
                              Just in case you can use this...
                              Ah, yes, you've taken advantage of our ability to modify the textbox's recorded coordinates before a screen repaint erases it. It is a clever technique.

                              However, I am looking to do something more ambitious: my goal is to manipulate the textbox generated by the showcoins/showmoney commands. These boxes, unlike the standard ones, are variable in size and can have their positions changed without properly-timed memory alterations.

                              The uses for a dynamically-positioned variably-sized non-blocking second message box are many and varied. For example, in dialogue-heavy hacks, the second box could function as a nametag positioned directly above the standard one, thereby removing the need to repeat the speaker's name in the main dialogue.

                              I am still having difficulty dissecting and identifying all of the code, but I already know of two things I can try. Furthermore I plan on finding the offsets of every single piece of ASM code that runs as part of the showcoins functionality. I may also investigate showmoney functionality and look for commonalities. If I can't accomplish my goal, I hope to at least save a significant amount of time for others who may pursue it in the future.
                              Reply With Quote
                                #144    
                              Old August 20th, 2011 (4:21 PM). Edited August 20th, 2011 by Missingyep.
                              Missingyep Missingyep is offline
                                 
                                Join Date: Jul 2010
                                Posts: 275
                                I have managed to create ASM code that successfully displays a secondary message box with header text and body text.


                                The capabilities and limitations of the code that I know of are as follows:
                                • It has header and body text. You can specify strings for both, but you can't, say, display only a header.
                                • The position and size cannot yet be changed. The underlying code is capable of taking single-byte X and Y arguments, but currently I just force them both to 0. SEE NEW CODE AT BOTTOM
                                • I don't know if it works with \n, \l, \p, or any other formatting control codes. I didn't try any.
                                • To hide the box, you can call hidecoins. It requires X and Y arguments, but doesn't appear to use them; it will hide the secondary box regardless of position and size.
                                Here's an example script to demonstrate how you would load your strings and call the ASM:

                                Spoiler:
                                Code:
                                #dynamic 0x800000
                                
                                #org @start
                                lock
                                loadpointer 0x0 @sHeader // Header text
                                loadpointer 0x1 @sBody // Body text
                                callasm 0x8780001 // Change this to wherever you place the ASM
                                release
                                end
                                
                                #org @sHeader
                                = HEAD
                                
                                #org @sBody
                                = BODY


                                And finally, the ASM:

                                Spoiler:
                                Code:
                                .align 2
                                .thumb
                                
                                SHOWCOINS:
                                push {lr}
                                push {r0-r7}
                                mov r5, #0x0
                                mov r4, #0x0
                                ldr r0, UNKNOWN_DATA_0
                                ldr r1, SHOWCOINS_UNK_1
                                bl CALL_R1
                                lsl r0, r0, #0x10
                                lsr r0, r0, #0x10
                                cmp r0, #0x1
                                beq SHOWCOINS_RETURN
                                mov r1, r5
                                mov r2, r4
                                bl SECONDARY
                                b SHOWCOINS_RETURN
                                
                                SHOWCOINS_RETURN:
                                pop {r0-r7}
                                pop {pc}
                                
                                
                                
                                SECONDARY:
                                push {lr}
                                push {r0-r7}
                                add sp, #-0x20
                                mov r6, r0
                                mov r4, r1
                                mov r3, r2
                                lsl r4, r4, #0x18
                                lsl r3, r3, #0x18
                                mov r0, #0x80
                                lsl r0, r0, #0x11
                                add r4, r4, r0
                                lsr r4, r4, #0x18
                                add r3, r3, r0
                                lsr r3, r3, #0x18
                                mov r0, #0x8
                                str r0, [sp]
                                mov r0, #0x3
                                str r0, [sp, #0x4]
                                mov r0, #0xF
                                str r0, [sp, #0x8]
                                mov r0, #0x20
                                str r0, [sp, #0xC]
                                add r0, sp, #0x10
                                mov r1, #0x0
                                mov r2, r4
                                ldr r4, UNKNOWN_FUNCTION_0
                                bl CALL_R4
                                ldr r0, [sp, #0x10]
                                ldr r1, [sp, #0x14]
                                str r0, [sp, #0x18]
                                str r1, [sp, #0x1C]
                                ldr r4, UNKNOWN_DATA_1
                                add r0, sp, #0x18
                                ldr r5, UNKNOWN_FUNCTION_1
                                bl CALL_R5
                                strb r0, [r4]
                                ldrb r0, [r4]
                                mov r1, #0x0
                                ldr r2, UNKNOWN_FUNCTION_2
                                bl CALL_R2
                                ldrb r0, [r4]
                                ldr r5, UNKNOWN_FUNCTION_3
                                bl CALL_R5
                                ldrb r0, [r4]
                                ldr r5, UNKNOWN_DATA_2
                                mov r1, r5
                                mov r2, #0xD0
                                ldr r3, UNKNOWN_FUNCTION_4
                                bl CALL_R3
                                ldrb r0, [r4]
                                mov r1, #0x0
                                mov r2, r5
                                mov r3, #0xD
                                ldr r6, UNKNOWN_FUNCTION_5
                                bl CALL_R6
                                ldrb r0, [r4]
                                ldr r2, SCRIPT_BANK_0
                                ldr r2, [r2]
                                mov r3, #0x0
                                str r3, [sp]
                                mov r1, #0xFF
                                str r1, [sp, #0x4]
                                str r3, [sp, #0x8]
                                mov r1, #0x2
                                ldr r7, UNKNOWN_FUNCTION_6
                                bl CALL_R7
                                mov r0, r6
                                bl SECONDARY_LOAD_BODY
                                add sp, #0x20
                                pop {r0-r7}
                                pop {pc}
                                
                                
                                
                                SECONDARY_LOAD_BODY:
                                push {lr}
                                push {r0-r7}
                                add sp, #-0xC
                                mov r1, r0
                                ldr r0, BUFFER_RAM_OFFSET
                                mov r2, #0x1
                                mov r3, #0x4
                                ldr r6, UNKNOWN_FUNCTION_7
                                bl CALL_R6
                                ldr r4, STRING_RAM_OFFSET
                                ldr r1, SCRIPT_BANK_1
                                ldr r1, [r1]
                                mov r0, r4
                                ldr r6, BODY_STRING_LOADER
                                bl CALL_R6
                                mov r0, #0x0
                                mov r1, r4
                                mov r2, #0x0
                                ldr r6, UNKNOWN_FUNCTION_8
                                bl CALL_R6
                                ldr r1, UNKNOWN_DATA_1
                                ldrb r1, [r1]
                                mov r3, #0x40
                                sub r3, r3, r0
                                lsl r3, r3, #0x18
                                lsr r3, r3, #0x18
                                mov r0, #0xC
                                str r0, [sp]
                                mov r0, #0x0
                                str r0, [sp, #0x4]
                                str r0, [sp, #0x8]
                                mov r0, r1
                                mov r1, #0x0
                                mov r2, r4
                                ldr r6, UNKNOWN_FUNCTION_6
                                bl CALL_R6
                                add sp, #0xC
                                pop {r0-r7}
                                pop {pc}
                                
                                CALL_R1:
                                bx r1
                                bx lr
                                
                                CALL_R2:
                                bx r2
                                bx lr
                                
                                CALL_R3:
                                bx r3
                                bx lr
                                
                                CALL_R4:
                                bx r4
                                bx lr
                                
                                CALL_R5:
                                bx r5
                                bx lr
                                
                                CALL_R6:
                                bx r6
                                bx lr
                                
                                CALL_R7:
                                bx r7
                                bx lr
                                
                                .align 2
                                SCRIPT_BANK_0:
                                .word 0x03000F14
                                
                                SCRIPT_BANK_1:
                                .word 0x03000F18
                                
                                UNKNOWN_DATA_0:
                                .word 0x0809D6D5
                                
                                UNKNOWN_DATA_1:
                                .word 0x02039A28
                                
                                UNKNOWN_DATA_2:
                                .word 0x0000021D
                                
                                SHOWCOINS_UNK_1:
                                .word 0x081119D5
                                
                                UNKNOWN_FUNCTION_0:
                                .word 0x0810FE51
                                
                                UNKNOWN_FUNCTION_1:
                                .word 0x08003CE5
                                
                                UNKNOWN_FUNCTION_2:
                                .word 0x0800445D
                                
                                UNKNOWN_FUNCTION_3:
                                .word 0x08003FA1
                                
                                UNKNOWN_FUNCTION_4:
                                .word 0x0814FF2D
                                
                                UNKNOWN_FUNCTION_5:
                                .word 0x0810F2E9
                                
                                UNKNOWN_FUNCTION_6:
                                .word 0x08002C49
                                
                                UNKNOWN_FUNCTION_7:
                                .word 0x08008E79
                                
                                UNKNOWN_FUNCTION_8:
                                .word 0x08005ED5
                                
                                BUFFER_RAM_OFFSET:
                                .word 0x02021CD0
                                
                                STRING_RAM_OFFSET:
                                .word 0x02021D18
                                
                                BODY_STRING_LOADER:
                                .word 0x08008FCD


                                This is the first fully-functional ASM code I have ever written. There is still much to be done, but this is a big step. C:

                                EDIT: New code. This one allows you to specify the box X, Y, width, and height using script variables.


                                Script:
                                Spoiler:
                                Code:
                                #dynamic 0x800000
                                
                                #org @start
                                lock
                                loadpointer 0x0 @sHeader // Header text
                                loadpointer 0x1 @sBody // Body text
                                setvar 0x8000 0x0003 // X -- single-byte!
                                setvar 0x8001 0x0001 // Y -- single-byte!
                                setvar 0x8002 0x000A // Width -- single-byte!
                                setvar 0x8003 0x0002 // Height -- single-byte!
                                callasm 0x8780001 // Change this to wherever you place the ASM
                                
                                msgbox @sStandard 0x2 // just as a demonstration.
                                
                                hidecoins 0x00 0x00 // hides secondary box.
                                release
                                end
                                
                                #org @sHeader
                                = HEAD
                                
                                #org @sBody
                                = BODY
                                
                                #org @sStandard
                                = STANDARD


                                And new assembly:
                                Spoiler:
                                Code:
                                .align 2
                                .thumb
                                
                                SHOWCOINS:
                                push {lr}
                                push {r0-r7}
                                ldr r5, SCRIPT_VAR_8000
                                ldrh r5, [r5]
                                ldr r4, SCRIPT_VAR_8001
                                ldrh r4, [r4]
                                ldr r0, UNKNOWN_DATA_0
                                ldr r1, SHOWCOINS_UNK_1
                                bl CALL_R1
                                lsl r0, r0, #0x10
                                lsr r0, r0, #0x10
                                cmp r0, #0x1
                                beq SHOWCOINS_RETURN
                                mov r1, r5
                                mov r2, r4
                                bl SECONDARY
                                b SHOWCOINS_RETURN
                                
                                SHOWCOINS_RETURN:
                                pop {r0-r7}
                                pop {pc}
                                
                                
                                
                                SECONDARY:
                                push {lr}
                                push {r0-r7}
                                add sp, #-0x20
                                mov r6, r0
                                mov r4, r1
                                mov r3, r2
                                lsl r4, r4, #0x18
                                lsl r3, r3, #0x18
                                mov r0, #0x80
                                lsl r0, r0, #0x11
                                add r4, r4, r0
                                lsr r4, r4, #0x18
                                add r3, r3, r0
                                lsr r3, r3, #0x18
                                ldr r0, SCRIPT_VAR_8002
                                ldrh r0, [r0]
                                str r0, [sp]
                                ldr r0, SCRIPT_VAR_8003
                                ldrh r0, [r0]
                                str r0, [sp, #0x4]
                                mov r0, #0xF
                                str r0, [sp, #0x8]
                                mov r0, #0x20
                                str r0, [sp, #0xC]
                                add r0, sp, #0x10
                                mov r1, #0x0
                                mov r2, r4
                                ldr r4, UNKNOWN_FUNCTION_0
                                bl CALL_R4
                                ldr r0, [sp, #0x10]
                                ldr r1, [sp, #0x14]
                                str r0, [sp, #0x18]
                                str r1, [sp, #0x1C]
                                ldr r4, UNKNOWN_DATA_1
                                add r0, sp, #0x18
                                ldr r5, UNKNOWN_FUNCTION_1
                                bl CALL_R5
                                strb r0, [r4]
                                ldrb r0, [r4]
                                mov r1, #0x0
                                ldr r2, UNKNOWN_FUNCTION_2
                                bl CALL_R2
                                ldrb r0, [r4]
                                ldr r5, UNKNOWN_FUNCTION_3
                                bl CALL_R5
                                ldrb r0, [r4]
                                ldr r5, UNKNOWN_DATA_2
                                mov r1, r5
                                mov r2, #0xD0
                                ldr r3, UNKNOWN_FUNCTION_4
                                bl CALL_R3
                                ldrb r0, [r4]
                                mov r1, #0x0
                                mov r2, r5
                                mov r3, #0xD
                                ldr r6, UNKNOWN_FUNCTION_5
                                bl CALL_R6
                                ldrb r0, [r4]
                                ldr r2, SCRIPT_BANK_0
                                ldr r2, [r2]
                                mov r3, #0x0
                                str r3, [sp]
                                mov r1, #0xFF
                                str r1, [sp, #0x4]
                                str r3, [sp, #0x8]
                                mov r1, #0x2
                                ldr r7, UNKNOWN_FUNCTION_6
                                bl CALL_R7
                                mov r0, r6
                                bl SECONDARY_LOAD_BODY
                                add sp, #0x20
                                pop {r0-r7}
                                pop {pc}
                                
                                
                                
                                SECONDARY_LOAD_BODY:
                                push {lr}
                                push {r0-r7}
                                add sp, #-0xC
                                mov r1, r0
                                ldr r0, BUFFER_RAM_OFFSET
                                mov r2, #0x1
                                mov r3, #0x4
                                ldr r6, UNKNOWN_FUNCTION_7
                                bl CALL_R6
                                ldr r4, STRING_RAM_OFFSET
                                ldr r1, SCRIPT_BANK_1
                                ldr r1, [r1]
                                mov r0, r4
                                ldr r6, BODY_STRING_LOADER
                                bl CALL_R6
                                mov r0, #0x0
                                mov r1, r4
                                mov r2, #0x0
                                ldr r6, UNKNOWN_FUNCTION_8
                                bl CALL_R6
                                ldr r1, UNKNOWN_DATA_1
                                ldrb r1, [r1]
                                mov r3, #0x40
                                sub r3, r3, r0
                                lsl r3, r3, #0x18
                                lsr r3, r3, #0x18
                                mov r0, #0xC
                                str r0, [sp]
                                mov r0, #0x0
                                str r0, [sp, #0x4]
                                str r0, [sp, #0x8]
                                mov r0, r1
                                mov r1, #0x0
                                mov r2, r4
                                ldr r6, UNKNOWN_FUNCTION_6
                                bl CALL_R6
                                add sp, #0xC
                                pop {r0-r7}
                                pop {pc}
                                
                                CALL_R1:
                                bx r1
                                bx lr
                                
                                CALL_R2:
                                bx r2
                                bx lr
                                
                                CALL_R3:
                                bx r3
                                bx lr
                                
                                CALL_R4:
                                bx r4
                                bx lr
                                
                                CALL_R5:
                                bx r5
                                bx lr
                                
                                CALL_R6:
                                bx r6
                                bx lr
                                
                                CALL_R7:
                                bx r7
                                bx lr
                                
                                .align 2
                                SCRIPT_BANK_0:
                                .word 0x03000F14
                                
                                SCRIPT_BANK_1:
                                .word 0x03000F18
                                
                                SCRIPT_VAR_8000:
                                .word 0x020370B8
                                
                                SCRIPT_VAR_8001:
                                .word 0x020370BA
                                
                                SCRIPT_VAR_8002:
                                .word 0x020370BC
                                
                                SCRIPT_VAR_8003:
                                .word 0x020370BE
                                
                                UNKNOWN_DATA_0:
                                .word 0x0809D6D5
                                
                                UNKNOWN_DATA_1:
                                .word 0x02039A28
                                
                                UNKNOWN_DATA_2:
                                .word 0x0000021D
                                
                                SHOWCOINS_UNK_1:
                                .word 0x081119D5
                                
                                UNKNOWN_FUNCTION_0:
                                .word 0x0810FE51
                                
                                UNKNOWN_FUNCTION_1:
                                .word 0x08003CE5
                                
                                UNKNOWN_FUNCTION_2:
                                .word 0x0800445D
                                
                                UNKNOWN_FUNCTION_3:
                                .word 0x08003FA1
                                
                                UNKNOWN_FUNCTION_4:
                                .word 0x0814FF2D
                                
                                UNKNOWN_FUNCTION_5:
                                .word 0x0810F2E9
                                
                                UNKNOWN_FUNCTION_6:
                                .word 0x08002C49
                                
                                UNKNOWN_FUNCTION_7:
                                .word 0x08008E79
                                
                                UNKNOWN_FUNCTION_8:
                                .word 0x08005ED5
                                
                                BUFFER_RAM_OFFSET:
                                .word 0x02021CD0
                                
                                STRING_RAM_OFFSET:
                                .word 0x02021D18
                                
                                BODY_STRING_LOADER:
                                .word 0x08008FCD
                                Reply With Quote
                                  #145    
                                Old August 20th, 2011 (10:37 PM).
                                Mr.Pkmn's Avatar
                                Mr.Pkmn Mr.Pkmn is offline
                                Ordinary ASM Magician
                                   
                                  Join Date: May 2008
                                  Posts: 54
                                  I'm sorry to bump, but since it was the last post of the page i throught it passed unnoticed...

                                  Quote:
                                  Originally Posted by Mr.Pkmn View Post
                                  How can we fix the broken sun weather in FRLG? Heavy rain works fine but intense sunlight makes the screen black.
                                  Also I wonder if the snowy weather could set auto-hail, like other weathers do...
                                  Reply With Quote
                                    #146    
                                  Old August 21st, 2011 (5:26 AM).
                                  TheDarkShark TheDarkShark is offline
                                  Metal Headed Hacker
                                     
                                    Join Date: May 2010
                                    Location: Germany
                                    Gender: Male
                                    Nature: Calm
                                    Posts: 56
                                    @Mr.Pkmn: I think fog has already been researched. I'm sure it'd be easy to find the main weather-routine by debugging that one.

                                    @DavidJCobb: Ah, so that's what you meant... I thought you wanted another textbox like I have an the screenshot I posted above. I think I'll take a look into porting this over to the German version of Firered... but I already told Jambo I would port the trainer mugshot thing first. I'll see what I can do. Pretty neat, anyway. I think I can make good use of the text-rendering when I work on my hack again...
                                    __________________
                                    There are two things every Rom-Hacker should learn:
                                    1. Don't give away everything you know!

                                    Reply With Quote
                                      #147    
                                    Old August 31st, 2011 (3:40 PM).
                                    EdensElite's Avatar
                                    EdensElite EdensElite is offline
                                    No0b, but getting there.
                                       
                                      Join Date: Jun 2011
                                      Location: UK
                                      Gender: Male
                                      Nature: Bold
                                      Posts: 190
                                      How do you edit the PC Boxes? I assume its they are graphics in the ROM but I can't find them on unLZ.
                                      __________________

                                      ROM Hacking was getting frustrating for me. I've now stopped productions and writing the game from scratch in HTML 5.

                                      That means it will be playable in the browser, and across multiple devices such as the iPod touch.
                                      Reply With Quote
                                        #148    
                                      Old August 31st, 2011 (7:54 PM). Edited September 14th, 2011 by Missingyep.
                                      Missingyep Missingyep is offline
                                         
                                        Join Date: Jul 2010
                                        Posts: 275
                                        Out of boredom, I dug through every single script and OW in a clean FireRed BPRE ROM and wrote down every single flag and variable I could find. My findings are below, and include OW-visibility flags, item ownership flags, and more. (Not trainer or world map flags, though.)

                                        Summarized flag findings:
                                        Flags 0x000 - 0x006, at minimum, are temporary flags and are directly manipulated by the game engine.

                                        Flags 0x011 - 0x01F are used to control the visibility of destructible OWs, i.e. Rock Smash boulders. They are probably cleared by the game engine every time a map is loaded, as no level scripts clear them. Do not use them on standard OWs.

                                        Flag 0x266 appears to be directly manipulated by the game engine. If set, there is an EGG waiting for you in the Four Island Daycare Center. It is unset manually by scripts if you choose to discard the egg.

                                        The game does not use checkitem to see if you have an item; instead, Game Freak scripts will always check for flags that were set as part of the event sequence that gave you the item (or it may even check for the OW-visibility flags if it was a pickup). E.x. the game uses "checkflag 0x271" after manually setting it, not "checkitem ITEM_BICYCLE 0x1".

                                        A similar thing is done with badges. The "champ-in-making" guy that always chills next to a Gym statue doesn't check badge flags directly; there are eight flags (4B0-4B7) that are set along with those flags, which he checks. Redundant...

                                        Not all of the listed OW-visibility flags are set/cleared directly. Most of them correspond to Person IDs in AMap, and are indirectly altered when one uses "hidesprite" on the Persons (referring to them by Person event number rather than ID).

                                        Notable flags:
                                        Flags 0x011 - 0x01F are used to control the visibility of destructible OWs.

                                        Flag 0x266 is set by the game engine if an Egg is in the Daycare.

                                        Flags 0x4B0 - 0x4B7 affect the "champ-in-making" guy's dialogue in Gyms.

                                        Flags 0x4B8 - 0x4BC are set if the player has beaten {whoever} in the Elite Four during their current attempt at it. They're cleared upon entering the Hall of Fame registration room.

                                        Flags 0x500 - 0x700 are trainer flags.

                                        Flags 0x820 - 0x827 are read directly by the game engine and determine Badge acquisition. But we already knew this.

                                        Flag 0x82D is set if you customize your profile by talking to some woman in some PokeCenter. Apparently directly set by the game engine.

                                        If Flag 0x834 is set, then the player knows the name of Bill's PC (as opposed to "Someone's" PC). Don't know if this affects the PC menu, but it affects dialogue shown when receiving a Pokemon and having it sent to the PC.

                                        Flag 0x842 may have something to do with wireless functionality or some minigame. It's checked after healing at a PokeCenter.

                                        Flag 0x844 is set when Celio connects to Lanette -- IOW when you can trade with R/S/E. Don't mistake it for the E4 completion flag like I almost did.

                                        Flag 0x849 is set when you solve the Tanoby Key.

                                        If Flags 0x84A and 0x84B are cleared, the Vermilion City dockworker won't even bother checking for the MysticTicket and AuroraTicket, respectively. You won't be able to use them. I don't know what sets or clears these flags.

                                        Flags 0x890 - 0x8FD are world map flags.

                                        Flags 0x900 and up overlap the RAM used for script variables and hence ARE NOT SAFE TO USE.

                                        Summarized variable findings:
                                        0x4020 - 0x4024 are all pedometers, the first of them controlling REPEL expiration.

                                        0x4036 is used for Selphy's Pokemon-fetching game. (She's the woman at Resort Gorgeous). I don't know what modifies this var -- possibly the game engine itself?

                                        0x403A is used in elevator scripts and is directly modified when special 0xD8 is called. Don't store anything that you want to be permanent in this variable.

                                        Vars 0x4064 through 0x4066 are used as part of the boulder puzzles in Victory Road. They're also cleared upon entering Route 23, along with 0x4067.

                                        0x4069 sets which fossil is being revived in Cinnabar Island, and 0x406A sets the progress (1 = active, 2 = complete).

                                        Full findings:
                                        Spoiler:
                                        Some of the flags and variables are set by a script that runs once at the start of the game. This script is called by the game engine itself, and shall be referred to as "game start script" in the notes below.

                                        Code:
                                        LIST OF IDENTIFIED IN-GAME FLAGS (FIRERED)
                                        
                                        002        Apparent temporary flag.
                                        003        Apparent temporary flag.
                                        004        Apparent temporary flag.
                                        005        Apparent temporary flag.
                                        006        Apparent temporary flag.
                                        011        Used for a CUT tree in VIRIDIAN CITY.
                                                Used for ROCK SMASH boulders in KINDLE ROAD and ROCK TUNNEL (1.82).
                                        012        Used for CUT trees in
                                                    VIRIDIAN,PEWTER,VERMILION,FUCHSIA;
                                                    2+3 ISLES;
                                                    RTS 8,9,10,12,13,14,16,25;
                                                    BOND BRIDGE, FIVE ISLE MEADOW;
                                                    BERRY FOREST;
                                                    ERIKA's Gym
                                                Used for ROCK SMASH boulders in
                                                    FOUR ISLAND;
                                                    SEVAULT CANYON;
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97,99,103,104,105,106,107,108)
                                        013        Used for CUT trees in
                                                    CERULEAN CITY, CELADON CITY, FUCHSIA CITY;
                                                    RTS 1, 8, 10, 14;
                                                    BOND BRIDGE, FIVE ISLE MEADOW;
                                                    BERRY FOREST;
                                                    ERIKA's Gym
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, SEVAULT CANYON;
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97,99,103,104,105,106,108)
                                        014        Used for CUT trees in
                                                    CELADON CITY, FUCHSIA CITY;
                                                    ROUTE 1, ROUTE 10, ROUTE 14;
                                                    BERRY FOREST;
                                                    ERIKA's Gym
                                                Used for ROCK SMASH boulders in
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97, 1.99, 1.103, 1.104, 1.105, 1.106)
                                        015        Used for CUT trees in FUCHSIA CITY, ROUTE 1, ROUTE 10, and BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, SEVAULT CANYON;
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97, 1.99, 1.103, 1.104, 1.105, 1.106)
                                        016        Used for CUT trees in ROUTE 1 and BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, SEVAULT CANYON;
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97, 1.99, 1.103, 1.106)
                                        017        Used for a CUT tree in BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, SEVAULT CANYON;
                                                    CERULEAN CAVE (1.72, 1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.97, 1.99, 1.106)
                                        018        Used for a CUT tree in BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, CERULEAN CAVE (1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.99)
                                        019        Used for a CUT tree in BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, CERULEAN CAVE (1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.99)
                                        01A        Used for a CUT tree in BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, CERULEAN CAVE (1.73, 1.74), ROCK TUNNEL (1.82), MT. EMBER (1.99)
                                        01B        Used for a CUT tree in BERRY FOREST.
                                                Used for ROCK SMASH boulders in
                                                    KINDLE ROAD, SEVAULT CANYON;
                                                    CERULEAN CAVE (1.73), ROCK TUNNEL (1.82)
                                        01C        Used for ROCK SMASH boulders in KINDLE ROAD and ROCK TUNNEL (1.82).
                                        01D        Used for ROCK SMASH boulders in KINDLE ROAD and ROCK TUNNEL (1.82).
                                        01E        Used for ROCK SMASH boulders in KINDLE ROAD and ROCK TUNNEL (1.82).
                                        01F        Used for ROCK SMASH boulders in KINDLE ROAD and ROCK TUNNEL (1.82).
                                        028        Controls visibility of the BULBASAUR BALL OW in OAK's Lab.
                                        029        Controls visibility of the CHARMANDER BALL OW in OAK's Lab.
                                        02A        Controls visibility of the SQUIRTLE BALL OW in OAK's Lab.
                                        02B        Controls visibility of the OAK OW in OAK's Lab (PALLET TOWN (4.3)).
                                                    Set by GAME START SCRIPT.
                                                    Cleared after the "Don't go out yet!" OAK Script event.
                                        02C        Controls visibility of the OAK OW in PALLET TOWN (3.0).
                                                    Set by GAME START SCRIPT.
                                                    Set after the wild-battle-with-OAK Script event.
                                                    Set after OAK welcomes the player back to PALLET TOWN (level script).
                                        02D        Controls visibility of GARY's OW in OAK's Lab (PALLET TOWN (4.3)).
                                        02E        Controls visibility of the "You Must Battle Brock" guy in PEWTER CITY.
                                                    Cleared after he escorts you to the Gym.
                                        02F        Controls visibility of DOME FOSSIL OW in MT. MOON (1.3).
                                                    Cleared if you enter MT. MOON (1.3) while 232 is cleared.
                                        030        Controls visibility of HELIX FOSSIL OW in MT. MOON (1.3).
                                                    Cleared if you enter MT. MOON (1.3) while 232 is cleared.
                                        031        Controls visibility of the NUGGET BRIDGE prize-giver OW in ROUTE 24.
                                                    Set after BILL gives the player the S.S. ANNE TICKET.
                                        032        Controls visibility of BILL's mutant OW in his cottage (ROUTE 25 (30.0)).
                                        033        Controls visibility of BILL's OW in his cottage (ROUTE 25 (30.0)).
                                                    Set by GAME START SCRIPT.
                                                    Cleared when the player helps BILL turn back into a human being.
                                        034        Controls visibility of MR. FUJI's OW in POKeMON TOWER (1.94).
                                        035        Controls visibility of MR. FUJI's OW in LAVENDER TOWN (8.2).
                                                    Set by GAME START SCRIPT.
                                                    Cleared after talking to MR. FUJI in POKeMON TOWER.
                                        036        Controls visibility of an item OW in ROCKET HIDEOUT (1.45).
                                                    Set by GAME START SCRIPT.
                                        037        Controls visibility of the item OW (SILPH SCOPE) in ROCKET HIDEOUT (1.45).
                                                    Set by GAME START SCRIPT.
                                                    Cleared after beating GIOVANNI for the first time.
                                        038        Controls visibility of GIOVANNI's OW in ROCKET HIDEOUT (1.45).
                                        039        Controls visibility of the TOWN MAP OW in Daisy's house (PALLET TOWN (4.2)).
                                        03A        Controls visibility of the POKEDEX OWs in OAK's Lab (PALLET TOWN (4.3)).
                                        03B        Controls visibility of the TEAM ROCKET GRUNT OW in CERULEAN CITY.
                                        03C        Controls visibility of the Rival OW in CERULEAN CITY.
                                                    Set by GAME START SCRIPT.
                                        03D        Controls visibility of the Rival OW in S.S. ANNE (1.6).
                                                    Set by GAME START SCRIPT.
                                                    Set every time you enter LAVENDER TOWN.
                                        03E        Controls visibility of the TEAM ROCKET GRUNT OWs in SAFFRON CITY.
                                                    Set after beating TEAM ROCKET at SILPH CO.
                                        03F        Controls visibility of the civilian OWs in SAFFRON CITY and the receptionist OW in SILPH CO. (1.47).
                                                    Set by GAME START SCRIPT.
                                                    Cleared after beating TEAM ROCKET at SILPH CO.
                                        040        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.83).
                                        041        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.83).
                                        042        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.84).
                                        043        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.84).
                                        044        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.85).
                                        045        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.85).
                                        046        Controls visibility of a current-blocking STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        047        Controls visibility of a current-blocking STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        048        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        049        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        04A        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        04B        Controls visibility of a STRENGTH boulder in SEAFOAM ISLANDS (1.86).
                                        04C        Controls visibility of a current-blocking STRENGTH boulder in SEAFOAM ISLANDS (1.87).
                                        04D        Controls visibility of a current-blocking STRENGTH boulder in SEAFOAM ISLANDS (1.87).
                                        04E        Controls visibility of Gary's OW in SILPH CO. (1.53).
                                        04F        Controls visibility of Gary's OW in ROUTE 22.
                                                    Set by GAME START SCRIPT.
                                        050        Unknown. Cleared after an NPC escorts you to the MUSEUM in PEWTER CITY.
                                        051        Controls visibility of Gary's OW in POKeMON TOWER (1.89).
                                        052        Controls visibility of the MOLTRES OW in MT. EMBER (1.101).
                                                    Cleared if the player enters the map while 2BD is unset (MOLTRES not fainted/0x5'd).
                                        053        Controls visibility of TEAM ROCKET GRUNT OWs in SILPH CO., and of GIOVANNI's OW in SILPH CO..
                                        054        Controls visibility of the SNORLAX OW on ROUTE 12.
                                                    Set immediately before the battle with the SNORLAX on ROUTE 12.
                                        055        Controls visibility of GIOVANNI's OW in VIRIDIAN CITY's Gym.
                                        057        Controls visibility of the EEVEE BALL OW in CELADON CITY (10.11).
                                        058        Controls visibility of a STRENGTH boulder in VICTORY ROAD (1.40).
                                        059        Controls visibility of a STRENGTH boulder in VICTORY ROAD (1.41).
                                        05A        Controls visibility of OAK's OW in POKeMON LEAGUE (1.79).
                                                    Set by GAME START SCRIPT.
                                        05B        Controls visibility of a TEAM ROCKET GRUNT OW in the GAME CORNER.
                                        05C        Controls visibility of the OW that blocks access to CERULEAN CAVE.
                                                    Set after finishing the CELIO/RUBY/SAPPHIRE subplot.
                                        05D        Controls visibility of the ZAPDOS OW in POWER PLANT (1.95).
                                        05E        Controls visibility of a TEAM ROCKET GRUNT in POKeMON TOWER (1.94).
                                        05F        Controls visibility of the TEAM ROCKET GRUNT OWs in CELADON CITY.
                                                Controls visibility of the SILPH CO. employee OW in CELADON CITY.
                                                    Set after beating GIOVANNI for the first time, in the hideout beneath the GAME CORNER.
                                        060        Controls visibility of the HITMONLEE BALL OW in the FIGHTING DOJO (SAFFRON CITY (14.2)).
                                        061        Controls visibility of the HITMONCHAN BALL OW in the FIGHTING DOJO (SAFFRON CITY (14.2)).
                                        062        Controls visibility of BILL's OW in CINNABAR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared after beating CINNABAR ISLAND Gym Leader BLAINE, and after encountering BILL in the CINNABAR 
                                                    ISLAND PokeCenter.
                                        063        Controls visibility of a Player OW in the Union Room (0.4).
                                        064        Controls visibility of a Player OW in the Union Room (0.4).
                                        065        Controls visibility of a Player OW in the Union Room (0.4).
                                        066        Controls visibility of a Player OW in the Union Room (0.4).
                                        067        Controls visibility of a Player OW in the Union Room (0.4).
                                        068        Controls visibility of a Player OW in the Union Room (0.4).
                                        069        Controls visibility of a Player OW in the Union Room (0.4).
                                        06A        Controls visibility of a Player OW in the Union Room (0.4).
                                        06B        Controls visibility of the SEAGALLOP Ferry OW in CINNABAR ISLAND.
                                                    Set by GAME START SCRIPT.
                                        06C        Controls visibility of an OW in SAFFRON's fan club. He responds to your TRAINER CARD stickers.
                                                    Set by GAME START SCRIPT.
                                        06D        Controls visibility of an OW in SAFFRON's fan club. He responds to your TRAINER CARD stickers.
                                                    Set by GAME START SCRIPT.
                                        06E        Controls visibility of an OW in SAFFRON's fan club. She responds to your TRAINER CARD stickers.
                                                    Set by GAME START SCRIPT.
                                        06F        Controls visibility of an OW in SAFFRON's fan club. She responds to your TRAINER CARD stickers.
                                                    Set by GAME START SCRIPT.
                                        070        Controls visibility of green-suit OW in the second floor of all PokeCenters.
                                                    Altered by the Pokemon Center 2F level scripts.
                                        071        Controls visibility of BILL's OW in ONE ISLAND.
                                        072        Controls visibility of BILL's OW in ONE ISLAND's PokeCenter.
                                        073        Controls visibility of CELIO's OW in ONE ISLAND's PokeCenter.
                                        074        Controls visibility of a Biker OW in TWO ISLAND's GAME CORNER.
                                                    Set by GAME START SCRIPT.
                                        075        Controls visibility of LOSTELLE's OW in TWO ISLAND's GAME CORNER.
                                                    Set by GAME START SCRIPT.
                                        076        Controls visibility of LOSTELLE's OW in her home in THREE ISLAND (THREE ISLAND (34.0)).
                                                    Set by GAME START SCRIPT.
                                        079        Controls visibility of Biker OWs in THREE ISLAND and THREE ISLE PORT.
                                        07A        Controls visibility of LOSTELLE's OW in BERRY FOREST.
                                        07B        Controls visibility of a shopper OW in TWO ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared when the TWO ISLAND shopkeeper hears about Lostelle. (TWO ISLAND level script.)
                                        07C        Controls visibility of a BRUNO-rumor-telling OW in TWO ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared when the TWO ISLAND shopkeeper hears about Gym progress. (TWO ISLAND level script.)
                                        07D        Controls visibility of a shopper OW in TWO ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared when the TWO ISLAND shopkeeper hears about E4 progress. (TWO ISLAND level script.)
                                        07E        Controls visibility of anti-Biker OWs in THREE ISLAND.
                                                    Set when entering THREE ISLAND after you've rescued LOSTELLE (2A3 is set).
                                        080        Controls visibility of the SNORLAX OW in ROUTE 16.
                                                    Set immediately before the battle with the SNORLAX on ROUTE 16.
                                        081        Controls visibility of the MEWTWO OW in CERULEAN CAVE (1.74).
                                        082        Controls visibility of the ARTICUNO OW in SEAFOAM ISLANDS (1.87).
                                        083        Controls visibility of a TEAM ROCKET GRUNT in POKeMON TOWER (1.94).
                                        084        Controls visibility of a TEAM ROCKET GRUNT in POKeMON TOWER (1.94).
                                        085        Controls visibility of a VOLTORB in POWER PLANT (1.95).
                                        086        Controls visibility of a VOLTORB in POWER PLANT (1.95).
                                        087        Controls visibility of S.S. ANNE OW in S.S. ANNE (1.4).
                                        088        Controls visibility of TEAM ROCKET GRUNT OWs in FIVE ISLE MEADOW, OUTCAST ISLAND, and ROCKET WAREHOUSE.
                                                    Set if the player has defeated TEAM ROCKET at ROCKET WAREHOUSE.
                                        089        Controls visibility of TEAM ROCKET GRUNT OWs in MT. EMBER (1.97).
                                        08A        Controls visibility of the RUBY OW in MT. EMBER (1.102).
                                        08B        Controls visibility of LORELEI's OW in ICEFALL CAVE (1.113).
                                        08C        Controls visibility of LORELEI's OW in her home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Set after finishing the CELIO/RUBY/SAPPHIRE subplot.
                                                    Cleared after assisting LORELEI in ICEFALL CAVE.
                                        08D        Controls visibility of TEAM ROCKET GRUNT OWs in ICEFALL CAVE (1.113).
                                        08E        Controls visibility of the scientist OW in RUIN VALLEY.
                                                    Set after assisting LORELEI in ICEFALL CAVE.
                                        08F        Controls visibility of the SAPPHIRE OW in DOTTED HOLE (1.120).
                                        090        Controls visibility of the thief OW in DOTTED HOLE (1.120).
                                                    Set by GAME START SCRIPT.
                                        091        Controls visibility of one single Biker OW in THREE ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared after a brief confrontation with a biker at the TWO ISLAND GAME CORNER.
                                        092        Controls visibility of the Running Shoes guy in PEWTER CITY.
                                                    Set by GAME START SCRIPT.
                                                    Cleared after beating PEWTER CITY Gym Leader BROCK.
                                        093        Controls visibility of SELPHY's OW in LOST CAVE (2.22).
                                        094        Controls visibility of SELPHY's OW in RESORT GORGEOUS.
                                                    Set by GAME START SCRIPT.
                                                    Cleared after rescuing SELPHY from LOST CAVE, before warping to RESORT GORGEOUS.
                                        095        Controls visibility of SELPHY's OW in her home at RESORT GORGEOUS (RESORT GORGEOUS (39.0)).
                                                    Set by GAME START SCRIPT.
                                                    Cleared after rescuing SELPHY from LOST CAVE, after she dismisses you from her front door.
                                        096        Controls visibility of SELPHY's Butler's OW in her home at RESORT GORGEOUS.
                                                    Set by GAME START SCRIPT.
                                        097        Controls visibility of GARY's OW in FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Cleared by one FOUR ISLAND level script if another (Gary encounter) is able to run.
                                        098        Controls visibility of GARY's OW in SIX ISLAND's PokeCenter.
                                        099        Controls visibility of the DEOXYS OW in BIRTH ISLAND (2.56).
                                                    Set by GAME START SCRIPT.
                                                    Set when entering the map after 2E4 is set.
                                        09A        Controls visibility of the Triangle OW in BIRTH ISLAND (2.56).
                                                    Set when entering the map after 2E4 is set. Cleared when wnetering when 2E4 is cleared 
                                                    and 2F7 (DEOXYS fainted) is unset.
                                        09B        Controls visibility of the LUGIA OW in NAVEL ROCK (2.38).
                                                    Set when entering the map after 2F2 is set. Cleared when entering when 2F2 is cleared 
                                                    and 2F5 (fainted) is unset.
                                        09C        Controls visibility of the HO-OH OW in NAVEL ROCK (2.37).
                                                    Set when entering the map after 2F3 is set. Cleared when entering when 2F3 is cleared 
                                                    and 2F6 (fainted) is unset.
                                        09D        Controls visibility of certain FAME CHECKER NPCs that spawn in after you beat the Elite Four. It is cleared 
                                                during a Hall of Rame room level script.
                                                    Set by GAME START SCRIPT.
                                                    Controls visibility of the FUJI fan OW in LAVENDER CITY's PokeCenter.
                                                    Controls visibility of the LANCE fan OW in SAFFRON CITY (near the Trainer Fan Club).
                                                    Controls visibility of the BRUNO fan OW in EMBER SPA.
                                        09E        Controls visibility of two invisible Person events on a bookcase in CELADON CITY (10.8). They contain FAME 
                                                CHECKER data on ERIKA.
                                                    Set by GAME START SCRIPT.
                                        09F        Unknown.
                                                    Set by GAME START SCRIPT.
                                        0A0        Unknown.
                                                    Set by GAME START SCRIPT.
                                        0A1        Controls visibility of the OAK Assistant OW in VERMILION CITY.
                                                    Set by GAME START SCRIPT.
                                                    Set when entering VERMILION CITY while 2F9 is set.
                                        0A2        Controls visibility of BILL's OW in the CINNABAR ISLAND PokeCenter.
                                                    Set by GAME START SCRIPT.
                                        0A3        Controls visibility of OAK's OW at the INDIGO PLATEAU (3.9).
                                                    Set by GAME START SCRIPT.
                                        0A4        Unknown.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0A5        Controls visibility of a MEOWTH Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0A6        Controls visibility of a CHANSEY Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0A7        Controls visibility of a NIDORANF Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0A8        Controls visibility of a JIGGLYPUFF Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0A9        Controls visibility of a NIDORANM Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0AA        Controls visibility of a FEAROW Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0AB        Controls visibility of a PIDGEOT Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0AC        Controls visibility of a LAPRAS Doll OW in LORELEI's home on FOUR ISLAND.
                                                    Set by GAME START SCRIPT.
                                                    Conditionally cleared by special 1B9.
                                        0AD        Controls visibility of TEAM ROCKET GRUNT OWs in MT. MOON (1.3) and ROCKET HIDEOUT (all).
                                                    Set after beating VIRIDIAN CITY Gym Leader GIOVANNI.
                                        0AE        Unknown.
                                                    Set by GAME START SCRIPT.
                                        154        Controls visibility of an item OW in ROUTE 1.
                                        155        Controls visibility of an item OW in ROUTE 1.
                                        156        Controls visibility of an item OW in VIRIDIAN FOREST.
                                        157        Controls visibility of an item OW in VIRIDIAN FOREST.
                                        158        Controls visibility of an item OW in VIRIDIAN FOREST.
                                        159        Controls visibility of an item OW in MT. MOON (1.1).
                                        15A        Controls visibility of an item OW in MT. MOON (1.1).
                                        15B        Controls visibility of an item OW in MT. MOON (1.1).
                                        15C        Controls visibility of an item OW in MT. MOON (1.1).
                                        15D        Controls visibility of an item OW in MT. MOON (1.1).
                                        15E        Controls visibility of an item OW in MT. MOON (1.1).
                                        15F        Controls visibility of an item OW in MT. MOON (1.3).
                                        160        Controls visibility of an item OW in MT. MOON (1.3).
                                        161        Controls visibility of an item OW in ROUTE 4.
                                        162        Controls visibility of an item OW in ROUTE 24.
                                        163        Controls visibility of an item OW in ROUTE 25.
                                        164        Controls visibility of an item OW in S.S. ANNE (1.13).
                                        165        Controls visibility of an item OW in S.S. ANNE (1.19).
                                        166        Controls visibility of an item OW in S.S. ANNE (1.21).
                                        167        Controls visibility of an item OW in S.S. ANNE (1.25).
                                        168        Controls visibility of an item OW in S.S. ANNE (1.26).
                                        169        Controls visibility of an item OW in S.S. ANNE (1.28).
                                        16A        Controls visibility of an item OW in S.S. ANNE (1.10).
                                        16B        Controls visibility of an item OW in ROUTE 9.
                                        16C        Controls visibility of an item OW in ROCKET HIDEOUT (1.42).
                                        16D        Controls visibility of an item OW in ROCKET HIDEOUT (1.42).
                                        16E        Controls visibility of an item OW in ROCKET HIDEOUT (1.43).
                                        16F        Controls visibility of an item OW in ROCKET HIDEOUT (1.43).
                                        170        Controls visibility of an item OW in ROCKET HIDEOUT (1.43).
                                        171        Controls visibility of an item OW in ROCKET HIDEOUT (1.43).
                                        172        Controls visibility of an item OW in ROCKET HIDEOUT (1.44).
                                        173        Controls visibility of an item OW in ROCKET HIDEOUT (1.44).
                                        174        Controls visibility of an item OW in ROCKET HIDEOUT (1.45).
                                        175        Controls visibility of an item OW in ROCKET HIDEOUT (1.45).
                                        176        Controls visibility of an item OW in ROCKET HIDEOUT (1.45).
                                        177        Controls visibility of an item OW in POKeMON TOWER (1.90).
                                        178        Controls visibility of an item OW in POKeMON TOWER (1.91).
                                        179        Controls visibility of an item OW in POKeMON TOWER (1.91).
                                        17A        Controls visibility of an item OW in POKeMON TOWER (1.91).
                                        17B        Controls visibility of an item OW in POKeMON TOWER (1.92).
                                        17C        Controls visibility of an item OW in POKeMON TOWER (1.93).
                                        17D        Controls visibility of an item OW in POKeMON TOWER (1.93).
                                        17E        Controls visibility of an item OW in ROUTE 12.
                                        17F        Controls visibility of an item OW in ROUTE 12.
                                        180        Controls visibility of an item OW in ROUTE 15.
                                        181        Controls visibility of an item OW in SAFARI ZONE (1.63).
                                        182        Controls visibility of an item OW in SAFARI ZONE (1.64).
                                        183        Controls visibility of an item OW in SAFARI ZONE (1.64).
                                        184        Controls visibility of an item OW in SAFARI ZONE (1.64).
                                        185        Controls visibility of an item OW in SAFARI ZONE (1.64).
                                        186        Controls visibility of an item OW in SAFARI ZONE (1.65).
                                        187        Controls visibility of an item OW in SAFARI ZONE (1.65).
                                        188        Controls visibility of an item OW in SAFARI ZONE (1.66).
                                        189        Controls visibility of the item OW (GOLD TEETH) in SAFARI ZONE (1.66).
                                        18A        Controls visibility of an item OW in SAFARI ZONE (1.66).
                                        18B        Controls visibility of an item OW in SAFARI ZONE (1.66).
                                        18C        Controls visibility of an item OW in SILPH CO. (1.49).
                                        18D        Controls visibility of an item OW in SILPH CO. (1.50).
                                        18E        Controls visibility of an item OW in SILPH CO. (1.50).
                                        18F        Controls visibility of an item OW in SILPH CO. (1.50).
                                        190        Controls visibility of an item OW in SILPH CO. (1.51).
                                        191        Controls visibility of an item OW in SILPH CO. (1.51).
                                        192        Controls visibility of the item OW (CARD KEY) in SILPH CO. (1.52). Set if the player has the CARD KEY.
                                        193        Controls visibility of an item OW in SILPH CO. (1.52).
                                        194        Controls visibility of an item OW in SILPH CO. (1.52).
                                        195        Controls visibility of an item OW in SILPH CO. (1.53).
                                        196        Controls visibility of an item OW in SILPH CO. (1.53).
                                        197        Controls visibility of an item OW in SILPH CO. (1.56).
                                        198        Controls visibility of an item OW in SILPH CO. (1.56).
                                        199        Controls visibility of an item OW in SILPH CO. (1.56).
                                        19A        Controls visibility of an item OW in POWER PLANT (1.95).
                                        19B        Controls visibility of an item OW in POWER PLANT (1.95).
                                        19C        Controls visibility of an item OW in POWER PLANT (1.95).
                                        19D        Controls visibility of an item OW in POWER PLANT (1.95).
                                        19E        Controls visibility of an item OW in POWER PLANT (1.95).
                                        19F        Controls visibility of an item OW in POKeMON MANSION (1.59).
                                        1A1        Controls visibility of an item OW in POKeMON MANSION (1.60).
                                        1A2        Controls visibility of an item OW in POKeMON MANSION (1.61).
                                        1A3        Controls visibility of an item OW in POKeMON MANSION (1.61).
                                        1A4        Controls visibility of an item OW in POKeMON MANSION (1.62).
                                        1A5        Controls visibility of an item OW in POKeMON MANSION (1.62).
                                        1A7        Controls visibility of an item OW in POKeMON MANSION (1.62).
                                        1A8        Controls visibility of the item OW (SECRET KEY) in POKeMON MANSION (1.62).
                                                    Set if the player has the key for CINNABAR ISLAND's Gym.
                                        1A9        Controls visibility of an item OW in VICTORY ROAD (1.39).
                                        1AA        Controls visibility of an item OW in VICTORY ROAD (1.39).
                                        1AB        Controls visibility of an item OW in VICTORY ROAD (1.40).
                                        1AC        Controls visibility of an item OW in VICTORY ROAD (1.40).
                                        1AD        Controls visibility of an item OW in VICTORY ROAD (1.40).
                                        1AE        Controls visibility of an item OW in VICTORY ROAD (1.40).
                                        1AF        Controls visibility of an item OW in VICTORY ROAD (1.41).
                                        1B0        Controls visibility of an item OW in VICTORY ROAD (1.41).
                                        1B1        Controls visibility of an item OW in CERULEAN CAVE (1.72).
                                        1B2        Controls visibility of an item OW in CERULEAN CAVE (1.72).
                                        1B3        Controls visibility of an item OW in CERULEAN CAVE (1.72).
                                        1B4        Controls visibility of an item OW in CERULEAN CAVE (1.73).
                                        1B5        Controls visibility of an item OW in CERULEAN CAVE (1.73).
                                        1B6        Controls visibility of an item OW in CERULEAN CAVE (1.73).
                                        1B7        Controls visibility of an item OW in CERULEAN CAVE (1.74).
                                        1B8        Controls visibility of an item OW in CERULEAN CAVE (1.74).
                                        1B9        Controls visibility of an item OW in FUCHSIA CITY (11.7).
                                        1BA        Controls visibility of an item OW in TWO ISLAND.
                                        1BB        Controls visibility of an item OW in THREE ISLAND.
                                        1BE        Controls visibility of an item OW in VIRIDIAN FOREST.
                                        1BF        Controls visibility of an item OW in MT. MOON (1.3).
                                        1C0        Controls visibility of an item OW in MT. MOON (1.3).
                                        1C1        Controls visibility of an item OW in ROUTE 11.
                                        1C2        Controls visibility of an item OW in ROUTE 9.
                                        1C3        Controls visibility of an item OW in ROCK TUNNEL (1.81).
                                        1C4        Controls visibility of an item OW in ROCK TUNNEL (1.81).
                                        1C5        Controls visibility of an item OW in ROCK TUNNEL (1.81).
                                        1C6        Controls visibility of an item OW in ROCK TUNNEL (1.82).
                                        1C7        Controls visibility of an item OW in ROCK TUNNEL (1.82).
                                        1C8        Controls visibility of an item OW in SILPH CO. (1.54).
                                        1C9        Controls visibility of an item OW in SILPH CO. (1.57).
                                        1CA        Controls visibility of an item OW in POKeMON MANSION (1.59).
                                        1CB        Controls visibility of an item OW in POKeMON MANSION (1.60).
                                        1CC        Controls visibility of an item OW in POKeMON MANSION (1.60).
                                        1CD        Controls visibility of an item OW in VIRIDIAN CITY.
                                        1CE        Controls visibility of an item OW in ROUTE 11.
                                        1CF        Controls visibility of an item OW in ROUTE 11.
                                        1D0        Controls visibility of an item OW in POKeMON TOWER (1.92).
                                        1D1        Controls visibility of an item OW in CELADON CITY.
                                        1D2        Controls visibility of an item OW in ROCKET HIDEOUT (1.44).
                                        1D3        Controls visibility of an item OW in SAFARI ZONE (1.65).
                                        1D4        Controls visibility of an item OW in SEAFOAM ISLANDS (1.83).
                                        1D5        Controls visibility of an item OW in SEAFOAM ISLANDS (1.84).
                                        1D6        Controls visibility of an item OW in SEAFOAM ISLANDS (1.84).
                                        1D7        Controls visibility of an item OW in SEAFOAM ISLANDS (1.85).
                                        1D8        Controls visibility of an item OW in SEAFOAM ISLANDS (1.87).
                                        1D9        Controls visibility of an item OW in FOUR ISLAND.
                                        1DA        Controls visibility of an item OW in FOUR ISLAND.
                                        1DB        Controls visibility of an item OW in KINDLE ROAD.
                                        1DC        Controls visibility of an item OW in KINDLE ROAD.
                                        1DD        Controls visibility of an item OW in KINDLE ROAD.
                                        1DE        Controls visibility of an item OW in FIVE ISLE MEADOW.
                                        1DF        Controls visibility of an item OW in FIVE ISLE MEADOW.
                                        1E0        Controls visibility of an item OW in MEMORIAL PILLAR.
                                        1E1        Controls visibility of an item OW in OUTCAST ISLAND.
                                        1E2        Controls visibility of an item OW in WATER PATH.
                                        1E3        Controls visibility of an item OW in WATER PATH.
                                        1E4        Controls visibility of an item OW in RUIN VALLEY.
                                        1E5        Controls visibility of an item OW in RUIN VALLEY.
                                        1E6        Controls visibility of an item OW in RUIN VALLEY.
                                        1E7        Controls visibility of an item OW in SEVAULT CANYON.
                                        1E8        Controls visibility of an item OW in SEVAULT CANYON.
                                        1E9        Controls visibility of an item OW in SEVAULT CANYON.
                                        1EA        Controls visibility of an item OW in BERRY FOREST.
                                        1EB        Controls visibility of an item OW in BERRY FOREST.
                                        1EC        Controls visibility of an item OW in BERRY FOREST.
                                        1ED        Controls visibility of an item OW in MT. EMBER (1.97).
                                        1EE        Controls visibility of an item OW in MT. EMBER (1.97).
                                        1EF        Controls visibility of an item OW in MT. EMBER (1.97).
                                        1F0        Controls visibility of an item OW in ICEFALL CAVE (1.111).
                                        1F1        Controls visibility of an item OW in ICEFALL CAVE (1.111).
                                        1F2        Controls visibility of an item OW in ICEFALL CAVE (1.112).
                                        1F3        Controls visibility of an item OW in ICEFALL CAVE (1.112).
                                        1F4        Controls visibility of an item OW in ROCKET WAREHOUSE.
                                        1F5        Controls visibility of an item OW in ROCKET WAREHOUSE.
                                        1F6        Controls visibility of an item OW in ROCKET WAREHOUSE.
                                        1F7        Controls visibility of an item OW in ROCKET WAREHOUSE.
                                        1F8        Controls visibility of an item OW in LOST CAVE (2.22).
                                        1F9        Controls visibility of an item OW in LOST CAVE (2.23).
                                        1FA        Controls visibility of an item OW in LOST CAVE (2.24).
                                        1FB        Controls visibility of an item OW in LOST CAVE (2.25).
                                        1FC        Controls visibility of an item OW in LOST CAVE (2.26).
                                        1FD        Controls visibility of an item OW in SEVAULT CANYON (42.0).
                                        1FE        Controls visibility of an item OW in SILPH CO. (1.50).
                                        230        Set if the player received a POTION from the salesman on ROUTE 1.
                                        231        Set if the player has received TM34 SHOCK WAVE from VERMILION CITY Gym Leader LT. SURGE.
                                        232        Set if the player has taken either of the two fossils from MT. MOON.
                                        233        Set if the player helped BILL turn back into a human being.
                                        234        Set if the player received the S.S. ANNE TICKET from BILL.
                                        235        Unknown. Set after BILL gives the player the S.S. ANNE TICKET.
                                        236        Set if the player received TM42 from the bereaved man at MEMORIAL PILLAR.
                                        237        Set if the player received HM01 CUT from the captain of the S.S. ANNE.
                                        238        Set if the player received HM02 FLY from the woman on ROUTE 16 (map 25.0).
                                        239        Set if the player received HM03 SURF from the man in the SAFARI ZONE.
                                        23A        Set if the player received HM04 STRENGTH from the SAFARI ZONE Warden.
                                        23B        Set if the player received HM05 FLASH from one of OAK's assistants on ROUTE 2 (map 15.2).
                                        23C        Set after talking to MR. FUJI in POKeMON TOWER. Allows the player to sneak past a TEAM 
                                                ROCKET guard in SAFFRON CITY and enter the besieged SILPH CO. skyscraper.
                                        23D        Set if the player received the POKe FLUTE from MR. FUJI at his home in LAVENDER TOWN.
                                        23F        Unknown. If set, the hiker in the burglarized CERULEAN house calms down.
                                        240        Set if the player received the OLD ROD from the fisherman in VERMILION CITY.
                                        241        Set if the player obtained a BIKE VOUCHER from the man in the POKeMON Fan Club.
                                        243        Set if the player received the COIN CASE from a man in CELADON CITY.
                                                    Checked by the internal script that handles hidden item Signposts. (Item ID 0 is 
                                                    treated as a COINS pickup, you see.)
                                        244        Set if the player received the GOOD ROD from the fisherman in FUCHSIA CITY.
                                        245        Set if the player received TM29 PSYCHIC from MR. PSYCHIC in SAFFRON CITY.
                                        246        Set if the player received LAPRAS from the man in SILPH CO.
                                        247        Unknown. Checked when the player enters PROF. OAK's lab.
                                        248        Set if the player traded with a boy on ROUTE 2 (map 15.1).
                                        249        Set if the player purchased a MAGIKARP from the conman on ROUTE 4 (map 16.0).
                                        24A        Set if the player traded with an old man in CERULEAN CITY (map 7.2).
                                        24B        Set if the player traded with a young girl at the UNDERGROUND PATH entrance (map 1.30).
                                        24D        Set if the player traded with a young girl in VERMILION CITY (map 9.4).
                                        24E        Set if the player received TM38 FIRE BLAST from CINNABAR ISLAND Gym Leader BLAINE.
                                        24F        Unknown. Set if the player enters PROF. OAK's lab while 247 is set.
                                        250        Set if the player received the MASTER BALL from the SILPH CO. PRESIDENT.
                                        251        Set if the player traded with a boy on ROUTE 11 (map 22.1).
                                        252        Set if the player received the ITEMFINDER from one of OAK's aides on ROUTE 11 (map 22.1).
                                        253        Set if the player has battled the SNORLAX on ROUTE 12.
                                        254        Set if the player has received TM39 ROCK TOMB from PEWTER CITY Gym Leader BROCK.
                                        255        Set if the player has received the SUPER ROD from the fisherman on ROUTE 12 (map 23.2).
                                        256        Set if the player has received the EXP. SHARE from one of OAK's aides on ROUTE 15 (map 24.1).
                                        257        Set if the player traded with a boy on ROUTE 18 (map 26.1).
                                        258        Set after the first Rival battle. Allows the player to heal at their house in PALLET TOWN.
                                        259        Set if the player has received TM06 TOXIC from FUCHSIA CITY Gym Leader KOGA.
                                        25B        Set if the player has received TM27 RETURN from the bereaved woman on ROUTE 12 (map 23.1).
                                        25E        Set if the player has received OLD AMBER from a man in PEWTER CITY's Museum.
                                        263        Set if the player has received EEVEE from the Poke Ball OW in CELADON CITY (10.11).
                                        264        Unknown. Used as part of the trashcan puzzle in VERMILION CITY's Gym.
                                        265        Unknown. Used as part of the quiz puzzles in CINNABAR ISLAND's Gym.
                                        266        Set if the FOUR ISLAND Daycare has an EGG waiting for the player. Is directly manipulated by 
                                                the game engine.
                                        26C        Toggles which set of POKeMON MANSION blocked doorways is open.
                                        26D        Set if the player hit the switch behind the poster in the GAME CORNER.
                                        26E        Set if the player received 10 COINS from the fisherman in the GAME CORNER.
                                        26F        Set if the player received 20 COINS from the scientist in the GAME CORNER.
                                        270        Set if the player received 20 COINS from the gentleman in the GAME CORNER.
                                        271        Set if the player received a BICYCLE from CERULEAN CITY's bike salesman.
                                        272        Set if the player chose the DOME FOSSIL (KABUTO) in MT. MOON.
                                        273        Set if the player chose the HELIX FOSSIL (OMANYTE) in MT. MOON.
                                        274        Set if the player traded with an old man in CINNABAR ISLAND (map 12.2).
                                        275        Set if the player traded with a woman in CINNABAR ISLAND (map 12.2).
                                        276        Set if the player traded with a man in CINNABAR ISLAND (map 12.4).
                                        278        Set if the player has taken one of the two prize Pokemon from the SAFFRON CITY FIGHTING DOJO.
                                        27A        SILPH CO. blocked doorway. If set, the door is open.
                                        27B        SILPH CO. blocked doorway.
                                        27C        SILPH CO. blocked doorway.
                                        27D        SILPH CO. blocked doorway.
                                        27E        SILPH CO. blocked doorway.
                                        27F        SILPH CO. blocked doorway.
                                        280        SILPH CO. blocked doorway.
                                        281        SILPH CO. blocked doorway.
                                        282        SILPH CO. blocked doorway.
                                        283        SILPH CO. blocked doorway.
                                        284        SILPH CO. blocked doorway.
                                        285        SILPH CO. blocked doorway.
                                        286        SILPH CO. blocked doorway.
                                        287        SILPH CO. blocked doorway.
                                        288        SILPH CO. blocked doorway.
                                        289        SILPH CO. blocked doorway.
                                        28A        SILPH CO. blocked doorway.
                                        28B        SILPH CO. blocked doorway.
                                        28C        SILPH CO. blocked doorway.
                                        28D        SILPH CO. blocked doorway.
                                        290        Set if the player has spoken to the sticker kid on FOUR ISLAND at least once?
                                        291        Unknown. Checked in a PALLET TOWN level script. Set when the player has chosen a starter.
                                        293        Set if the player has received TM19 GIGA DRAIN from CELADON CITY Gym Leader ERIKA.
                                        294        Set if the player has given LEMONADE to the girl on the CELADON Department Store roof.
                                                    ...in exchange for TM33 REFLECT.
                                        295        Set if the player has given SODA POP to the girl on the CELADON Department Store roof.
                                                    ...in exchange for TM20 SAFEGUARD.
                                        296        Set if the player has given FRESH WATER to the girl on the CELADON Department Store roof.
                                                    ...in exchange for TM16 LIGHT SCREEN.
                                        297        Set if the player has received TM03 WATER PULSE from CERULEAN CITY Gym Leader MISTY.
                                        298        Set if the player has received TM26 EARTHQUAKE from VIRIDIAN CITY Gym Leader GIOVANNI.
                                        29A        Set if the player has received TM04 CALM MIND from SAFFRON CITY Gym Leader SABRINA.
                                        29B        Set after beating Gary at CERULEAN CITY.
                                        29C        Set if the player has shown a MAGIKARP to the fisherman on Route 12 (map 23.2) and had its 
                                                size recorded.
                                        29D        Set if the TWO ISLAND shopkeeper has told you that his shop is new.
                                        29E        Set if the TWO ISLAND shopkeeper has told you that he now stocks items with help from the 
                                                islanders now that you've rescued Lostelle.
                                        29F        Set if the TWO ISLAND shopkeeper has told you that he "gives it his best".
                                        2A0        Set if the TWO ISLAND shopkeeper has told you that he now stocks items from distant lands.
                                        2A1        Unknown. If set, the SEVII ISLAND PokeCenters will "now have PC linkage with people in 
                                                KANTO".
                                                    Set by a level script every time the player enters THREE ISLE PORT (3.49).
                                        2A2        Set when the player enters TWO ISLAND for the first time.
                                        2A3        Set after rescuing LOSTELLE in BERRY FOREST, before warping to her home.
                                        2A5        Set if the palyer picked up the LIFT KEY from the OW (ROCKET HIDEOUT (1.45)).
                                                    If unset, the ROCKET HIDEOUT elevator does not work. ("It appears to need a key.")
                                        2A6        Set if the player has received TEA from the old woman in CELADON CITY.
                                        2AC        If unset, the ROCKET HIDEOUT elevator does not work. ("It appears to need a key.")
                                        2BB        Set if the player has received a POWDER JAR from a man in CERULEAN CITY.
                                        2BC        Set if the MEWTWO battle does not end in an 0x4 (escaped) or 0x5 (?) outcome (special B4).
                                        2BD        Set if the MOLTRES battle does not end in an 0x4 (escaped) or 0x5 (?) outcome (special B4).
                                        2BE        Set if the ARTICUNO battle does not end in an 0x4 (escaped) or 0x5 (?) outcome (special B4).
                                        2BF        Set if the ZAPDOS battle does not end in an 0x4 (escaped) or 0x5 (?) outcome (special B4).
                                        2C0        Set if the ROCK SLIDE Move Tutor has already been used.
                                        2C1        Set if the THUNDER WAVE Move Tutor has already been used.
                                        2C2        Set if the ROCK SLIDE Move Tutor has already been used.
                                        2C3        Set if the EXPLOSION Move Tutor has already been used.
                                        2C4        Set if the MEGA PUNCH Move Tutor has already been used.
                                        2C5        Set if the MEGA KICK Move Tutor has already been used.
                                        2C6        Set if the DREAM EATER Move Tutor has already been used.
                                        2C7        Set if the SOFTBOILED Move Tutor has already been used.
                                        2C8        Set if the SUBSTITUTE Move Tutor has already been used.
                                        2C9        Set if the SWORDS DANCE Move Tutor has already been used.
                                        2CA        Set if the SEISMIC TOSS Move Tutor has already been used.
                                        2CB        Set if the COUNTER Move Tutor has already been used.
                                        2CC        Set if the METRONOME Move Tutor has already been used.
                                        2CD        Set if the player has given a POKe DOLL to the COPYCAT in SAFFRON CITY.
                                        2CE        Set if the BODY SLAM Move Tutor has already been used.
                                        2CF        Unknown. Set when entering PROF. OAK's lab.
                                        2D0        Set if a POWER PLANT ELECTRODE battle doesn't end in an 0x4 or 0x5 outcome (special B4).
                                        2D1        Set if a POWER PLANT ELECTRODE battle doesn't end in an 0x4 or 0x5 outcome (special B4).
                                        2D2        Unknown. Part of the SEAFOAM ISLANDS level scripts that determine whether the fast current is blocked.
                                                    If not set, a Route 20 level script clears 40 and 41, and sets 42 through 47.
                                        2D3        Unknown. Part of the SEAFOAM ISLANDS level scripts that determine whether the fast current is blocked.
                                                    If not set, a Route 20 level script clears 48 through 4B, and sets 4C and 4D.
                                        2D4        Unknown. Affects LORELEI's dialogue at her home on FOUR ISLAND.
                                        2D5        Set if the player has defeated TEAM ROCKET at ROCKET WAREHOUSE.
                                        2D6        If set, the player will be able to enter the ROCKET WAREHOUSE. (The tile will change to one 
                                                that enables warps.)
                                        2D7        Set if the player earned TM42 from the bereaved man at MEMORIAL PILLAR, but had no room for 
                                                it. Talking to the man with this flag set will make him remember the player and give the 
                                                item if there is now room for it.
                                        2D8        Set when the SAPPHIRE is stolen from DOTTED HOLE by TEAM ROCKET. Allows the player to enter 
                                                both of the necessary passwords to open the door to ROCKET WAREHOUSE.
                                        2D9        Set if the player has shown a HERACROSS to the woman on WATER PATH (map 41.0) and had its 
                                                size recorded.
                                        2DA        Set if the player received the EGG from the man in the WATER LABYRINTH.
                                        2DB        Set if the player "earned" the EGG from WATER LABYRINTH, but had no room for it at the time. 
                                                Upon talking to the man again, he'll give them the EGG immediately if this flag is set.
                                        2DC        Set when the player finds the SAPPHIRE at ROCKET WAREHOUSE.
                                        2DD        Set when the player finds the RUBY in MT. EMBER.
                                        2E1        Set if the player has learned a starter-only power move from the woman on CAPE BRINK (40.0).
                                        2E2        Set if the player received a NUGGET from the man in THREE ISLE PATH.
                                        2E3        Set if the door to the ruins in RUIN VALLEY is open. A level script enables the door warp.
                                        2E4        Set if the DEOXYS battle doesn't end in a 1, 4 (escaped), or 5 (?) (special B4).
                                        2EC        Set if the DOME FOSSIL (KABUTO) has been revived.
                                        2ED        Set if the HELIX FOSSIL (OMANYTE) has been revived.
                                        2EE        Set if the OLD AMBER (AERODACTYL) has been revived.
                                        2EF        Set if the player received HM06 ROCK SMASH from the man in EMBER SPA.
                                        2F0        Set if the VERMILION sailor already knows you have the MYSTICTICKET.
                                        2F1        Set if the VERMILION sailor already knows you have the AURORATICKET.
                                        2F2        Set if the LUGIA battle doesn't end in a 1, 4 (escaped), or 5 (?) (special B4).
                                        2F3        Set if the HO-OH battle doesn't end in a 1 (faint), 4 (escaped), or 5 (?) (special B4).
                                        2F5        Unknown. Allows you to rebattle a fainted LUGIA if you beat the ELITE FOUR again?
                                                    Cleared during the Hall of Fame room level script, if the National Dex is already unlocked.
                                                    Set if the LUGIA battle ends with the Pokemon fainting.
                                        2F6        Unknown. Allows you to rebattle a fainted HO-OH if you beat the ELITE FOUR again?
                                                    Cleared during the Hall of Fame room level script, if the National Dex is already unlocked.
                                                    Set if the HO-OH battle ends with the Pokemon fainting.
                                        2F7        Unknown. Allows you to rebattle a fainted DEOXYS if you beat the ELITE FOUR again?
                                                    Cleared during the Hall of Fame room level script, if the National Dex is already unlocked.
                                                    Set if the DEOXYS battle ends with the Pokemon fainting.
                                        2F8        Unknown. Affects the dialogue of the TEA-giving woman in CELADON CITY.
                                        2F9        Set if the player spoke to the OAK assistant in VERMILION CITY. When the player re-enters the map, this flag 
                                                will be used by a level script to hide the assistant's OW.
                                        2FA        Set if the player received an EVERSTONE from one of OAK's assistants on ROUTE 10 (map 21.0).
                                        2FB        Set if the player received a MOON STONE from the man in the TWO ISLAND GAME CORNER.
                                        2FC        Set if the player received a FULL RESTORE from a thankful THREE ISLAND civilian.
                                        2FD        Set if the player received an AMULET COIN from one of OAK's aides on ROUTE 16 (map 25.2).
                                        2FE        Set if the player earned the MOON STONE from the man in the TWO ISLAND GAME CORNER, but did 
                                                not have room for it. The player will receive it if they talk to the man again later.
                                        2FF        Used by the game's internal PC script. It is set immediately before the plaer is asked if they want their 
                                                Pokedex rated, and cleared immediately after (regardless of their selection).
                                        4B0        Champ-in-making guy flag. Set if the player has defeated PEWTER's Gym Leader, BROCK.
                                                    Also affects PokeCenter nurse dialog when she heals your Pokemon after a whiteout. If this flag is not 
                                                    set, she'll offer some advice.
                                        4B1        Champ-in-making guy flag. Set if the player has defeated CERULEAN's Gym Leader, MISTY.
                                        4B2        Champ-in-making guy flag. Set if the player has defeated VERMILION's Gym Leader, LT. SURGE.
                                        4B3        Champ-in-making guy flag. Set if the player has defeated CELADON's Gym Leader, ERIKA.
                                        4B4        Champ-in-making guy flag. Set if the player has defeated FUCHSIA's Gym Leader, KOGA.
                                        4B5        Champ-in-making guy flag. Set if the player has defeated SAFFRON's Gym Leader, SABRINA.
                                        4B6        Champ-in-making guy flag. Set if the player has defeated CINNABAR's Gym Leader, BLAINE.
                                        4B7        Champ-in-making guy flag. Set if the player has defeated VIRIDIAN's Gym Leader, GIOVANNI.
                                        4B8        Set if the player has defeated Lorelei during the current attempt at the E4. Cleared in the Hall of Fame room.
                                        4B9        Set if the player has defeated Bruno during the current attempt at the E4. Cleared in the Hall of Fame room.
                                        4BA        Set if the player has defeated Agatha during the current attempt at the E4. Cleared in the Hall of Fame room.
                                        4BB        Set if the player has defeated Lance during the current attempt at the E4. Cleared in the Hall of Fame room.
                                        4BC        Set if the player has defeated Gary during the current attempt at the E4. Cleared in the Hall of Fame room.
                                        
                                        // Flags 500 - 700 are trainer flags. Subtract 0x500 from a normal flag 
                                        // for the equivalent used in trainer flag script commands.
                                        
                                        805        Strength has already been used on this map.
                                        807        Set just prior to a wild battle triggered by talking to an OW, and cleared just after. Possibly used as a 
                                                failsafe for if a player faints during a legendary battle, as that would (I think) terminate script execution.
                                        820        Unknown. Appears to be set if the player has the TEACHY TV when talking to VIRIDIAN Old Man.
                                        820        If set, the player has the BOULDERBADGE.
                                        821        If set, the player has the CASCADEBADGE.
                                        822        If set, the player has the THUNDERBADGE.
                                        823        If set, the player has the RAINBOWBADGE.
                                        824        If set, the player has the SOULBADGE.
                                        825        If set, the player has the MARSHBADGE.
                                        826        If set, the player has the VOLCANOBADGE.
                                        827        If set, the player has the EARTHBADGE.
                                        828        If set, the POKeMON menu is accessible.
                                        829        If set, the POKeDEX menu is accessible.
                                                    Checked by the game's internal PC script.
                                                    Checked by the game's internal linking functions. ("It appears to be undergoing adjustments...")
                                                    If not set, the WIRELESS COMMUNICATION CLUB on PokeCenters 2F is disabled.
                                                    If not set, the MYSTERY GIFT questionnaire in PokeMarts is disabled.
                                        82C        If set, the player has beaten the Elite Four at least once.
                                                    Checked during Bruno's, Agatha's, Lance's, and Gary's Elite Four scripts.
                                                    Checked by the game's internal PC script. 
                                                    If set, DAISY will groom Pokemon.
                                                    Does this get set when you obtain the VS SEEKER?
                                        82D        Set if the player has customized their profile. (Apparently set by the game engine itself?)
                                        82F        Running Shoes
                                        830        Unknown. Set if variable 0x405E == 0x1 when entering ROUTE 16 and ROUTE 18.
                                        834        If set, the player knows the name of BILL's PC. (Unset = "Someone's".)
                                                    This is used both in normal scripts and in the internal script for the PC.
                                        839        UNCONFIRMED: Mystery Gift enabled.
                                        83B        Unknown.
                                                    Set by special 125.
                                        83E        Set when talking to some chick in PALLET TOWN that mimics a sign or whatever.
                                        841        Unknown. Cleared by a level script every time the player enters THREE ISLE PORT (3.49).
                                                    If set, the PC will be unusable ("The usual PC services aren't available...").
                                        842        Unknown. Checked after healing at a PokeCenter.
                                        843        Unknown.
                                                    Read and written to by special 165.
                                        844        Set when CELIO successfully connects to LANETTE -- in other words, when you're allowed to 
                                                trade to R/S/E.
                                        846        Set when obtaining the RAINBOW PASS.
                                        847        Unknown... Set if the player has no berries, or no BERRY POUCH? (Set by the game engine?)
                                        848        Cleared when entering BIRTH ISLAND when 2E4 is unset and 2F7 (DEOXYS fainted?) is unset.
                                        849        Set if the player has solved TANOBY KEY.
                                        84A        If not set, the VERMILION sailor won't check if you have the MYSTICTICKET. You can't use it.
                                        84B        If not set, the VERMILION sailor won't check if you have the AURORATICKET. You can't use it.
                                        890        World Map Flag (PALLET TOWN).
                                        891        World Map Flag (VIRIDIAN CITY).
                                        892        World Map Flag (PEWTER CITY).
                                        893        World Map Flag (CERULEAN CITY).
                                        894        World Map Flag (LAVENDER TOWN).
                                        895        World Map Flag (VERMILION CITY).
                                        896        World Map Flag (CELADON CITY).
                                        897        World Map Flag (FUCHSIA CITY).
                                        898        World Map Flag (CINNABAR ISLAND).
                                        899        World Map Flag (INDIGO PLATEAU).
                                        89A        World Map Flag (SAFFRON CITY).
                                        89B        World Map Flag (ONE ISLAND).
                                                    If set, OAK welcomes the player back to PALLET TOWN when they enter the town.
                                        89C        World Map Flag (TWO ISLAND).
                                        89D        World Map Flag (THREE ISLAND).
                                        89E        World Map Flag (FOUR ISLAND).
                                        89F        World Map Flag (FIVE ISLAND).
                                        8A0        World Map Flag (SEVEN ISLAND).
                                        8A1        World Map Flag (SIX ISLAND).
                                        8A4        World Map Flag (VIRIDIAN FOREST).
                                        8A5        World Map Flag (MT. MOON (1.1)).
                                        8A6        World Map Flag (S.S. ANNE (1.4)).
                                        8A7        World Map Flag (UNDERGROUND PATH (1.31)).
                                        8A8        World Map Flag (UNDERGROUND PATH (1.34)).
                                        8A9        World Map Flag (DIGLETT'S CAVE (1.37)).
                                        8AA        World Map Flag (VICTORY ROAD (1.39)).
                                        8AB        World Map Flag (ROCKET HIDEOUT (1.42)).
                                        8AC        World Map Flag (SILPH CO. (1.47)).
                                        8AD        World Map Flag (POKeMON MANSION (1.59)).
                                        8AE        World Map Flag (SAFARI ZONE (1.63)).
                                        8AF        World Map Flag (POKeMON LEAGUE (1.75)).
                                        8B0        World Map Flag (ROCK TUNNEL (1.81)).
                                        8B1        World Map Flag (SEAFOAM ISLANDS (1.83)).
                                        8B2        World Map Flag (POKeMON TOWER (1.88)).
                                        8B3        World Map Flag (CERULEAN CAVE (1.72)).
                                        8B4        World Map Flag (POWER PLANT).
                                        8B5        World Map Flag (NAVEL ROCK (2.0)).
                                        8B6        World Map Flag (MT. EMBER (1.97)).
                                        8B7        World Map Flag (BERRY FOREST).
                                        8B8        World Map Flag (ICEFALL CAVE (1.110)).
                                        8B9        World Map Flag (ROCKET WAREHOUSE).
                                        8BA        World Map Flag (TRAINER TOWER (2.10)).
                                        8BB        World Map Flag (DOTTED HOLE (1.115)).
                                        8BC        World Map Flag (LOST CAVE (2.12)).
                                        8BD        World Map Flag (PATTERN BUSH).
                                        8BE        World Map Flag (ALTERING CAVE).
                                        8BF        World Map Flag (MONEAN CHAMBER).
                                        8C0        World Map Flag (THREE ISLE PATH).
                                        8C1        World Map Flag (TANOBY KEY).
                                        8C2        World Map Flag (BIRTH ISLAND (2.56)).
                                        // I have reason to believe that flags 0x890 - 0x8FD 
                                        // are reserved for World Map Flags, even though you 
                                        // can't fly to most of them.
                                        
                                        
                                        
                                        LIST OF IDENTIFIED IN-GAME VARS (FIRERED)
                                        
                                        4000        Temporary/disposable variable.
                                                    Written to by special E7.
                                        4001        Temporary/disposable variable.
                                        4003        Temporary/disposable variable? Used in TRAINER TOWER.
                                        4006        Temporary/disposable variable? Used in TANOBY KEY.
                                        4008        Temporary/disposable variable? Used in TANOBY KEY.
                                        400E        Temporary/disposable variable? Used in TRAINER TOWER.
                                        400F        Temporary/disposable variable? Used in TRAINER TOWER.
                                        4010        Temporary/disposable variable.
                                                    Written to by (incomplete?) special 142.
                                        4020        Pedometer. It counts down, and upon reaching 0x0000, REPEL expires.
                                        4021        Pedometer. Max value 0x007F; it loops back to 0x0000 after.
                                        4022        Pedometer. Max value 0x0004; it loops back to 0x0000 after.
                                        4023        Pedometer. Max value 0x05DC; it just stays at that value after?
                                        4025        Pedometer? Used for DAISY's script? Haven't seen it in action myself yet.
                                                    Set to 0x01F4 (500) by GAME START SCRIPT.
                                        4031        The starter that the player chose (0, 1, 2).
                                                    Accessed directly by special 129.
                                        4036        Multi-use, for SELPHY's Pokemon-fetching-and-showing game.
                                                    Apparently set to 0x0000 when it's time for a new "round" to start.
                                                    Apparently set to 0xFFFF if you're out of time.
                                        4037        Box that a newly-received (givepokemon) Pokemon was sent to. Is directly manipulated by the game engine 
                                                itself.
                                                    Read by special 165.
                                        4038        Unknown.
                                                    Read by specials A6 and A9.
                                                    Written to by special A8.
                                                    Used by special AA.
                                        4039        Unknown.
                                                    Written to by specials A6, A7, and A9.
                                        403A        Used in elevator scripts (current floor?). Written to by special 0xD8.
                                        403C        0xXXYY -- the current bank and map, respectively.
                                        403E        Unknown.
                                                    Accessed directly by special 1AC.
                                        4042        Unknown.
                                                    Read by special 167.
                                        4043        Unknown.
                                                    Written to by special 167.
                                        4049        Unknown. Something to do with the sticker kid on FOUR ISLAND.
                                        404A        Unknown. Something to do with the sticker kid on FOUR ISLAND.
                                        404B        Unknown. Something to do with the sticker kid on FOUR ISLAND.
                                        404E        Unknown.
                                                    Written to by special 197.
                                        4050        Unknown or multi-use.
                                                    Set to 0x1 after the "Don't go out yet!" OAK Script event.
                                                    Set to 0x2 during the Hall of Fame room level script, if the National Dex is NOT already unlocked.
                                                    Set to 0x3 after OAK's chat with the player in PALLET TOWN after beating the E4.
                                        4051        Set to 0x2 to disable the "Old Man Needs Coffee" Script event in VIRIDIAN CITY.
                                        4052        Set to 0x1 to disable Script events for Gary in CERULEAN CITY.
                                        4053        Unknown. Set to 0x0 after the player watches the S.S. ANNE depart.
                                        4054        Unknown or multi-use.
                                                    Set to 0x2 to disable Script events for a Rival encounter on ROUTE 22.
                                                    Set to 0x3 after VIRIDIAN CITY Gym Leader GIOVANNI is defeated. Enables next Rival.
                                                    Set to 0x4 to disable Script events for a second Rival encounter on ROUTE 22.
                                        4055        Unknown.
                                                    Is set to 0x0 when the player hasn't encounted PROF. OAK yet.
                                                    Is set to 0x1 when OAK is escorting the player to his lab.
                                                    Is set to 0x2 when the player needs to choose a starter.
                                                    Is set to 0x3 when the player and their Rival have both chosen starters.
                                                    Is set to 0x4 after the player's first battle with their Rival.
                                                    Is set to 0x5 when the player needs to deliver OAK's PARCEL.
                                                    Is set to 0x9 when the player enters PROF. OAK while it is set to 0x8.
                                                    If >= 0x1 and no other events pending, then DAISY comments on a recent Rival battle.
                                                    Set to 0x7 after OAK's chat with the player in PALLET TOWN after beating the E4.
                                        4056        Unknown. If equal to 0x0, "sethealingplace" runs whenever the player enters their bedroom in 
                                                PALLET TOWN. Another level script then sets the variable to 0x1.
                                        4057        Multi-use.
                                                    Set to 0x1 to disable the OAK's PARCEL level script in VIRIDIAN CITY's PokeMart.
                                                    Set to some other value to enable VIRIDIAN CITY's normal PokeMart script.
                                        4058        Unknown. Checked by DAISY's script in PALLET TOWN. Apparently part of the sequence of events 
                                                that makes her give away the TOWN MAP.
                                                    Set to 0x2 when DAISY gives away the TOWN MAP.
                                        4059        If != 0x0, then the player beat the Ghost MAROWAK at POKeMON TOWER.
                                        405A        Set to some value to disable the Old Man that blocks the VIRIDIAN CITY Gym.
                                        405B        Multi-use.
                                                    Set to 0x1 to disable Script events for a Rival encounter on the S.S. ANNE.
                                                    Is set to 0x1 when entering LAVENDER TOWN.
                                        405C        If != 0x0, then the player beat Gary at SILPH CO.
                                        405D        If != 0x0, then the player beat Gary at POKeMON TOWER.
                                        405E        Set to 0x0 to disable Script events on the tiles bordering the exits to the CYCLING ROAD 
                                                gatehouse. Set to 0x1 to disable Script events on the tiles bordering the entrances.
                                        405F        Controls various badge-checking Script events on Route 23.
                                        4060        If >= 0x1, then TEAM ROCKET has left SILPH CO.
                                        4061        Set to 0x1 to disable the Pay-To-Enter Script events in PEWTER CITY's Museum.
                                        4062        Set to 0x1 to disable the thirsty-guard roadblock Script events in the SAFFRON gatehouses.
                                        4064        Unknown or multi-use.
                                                    Reset to 0x0000 when entering Route 23.
                                                    Used as part of the Boulder puzzle scripts in VICTORY ROAD.
                                        4065        Unknown or multi-use.
                                                    Reset to 0x0000 when entering Route 23.
                                                    Used as part of the Boulder puzzle scripts in VICTORY ROAD.
                                        4066        Unknown or multi-use.
                                                    Reset to 0x0000 when entering Route 23.
                                                    Used as part of the Boulder puzzle scripts in VICTORY ROAD.
                                        4067        Unknown. Reset to 0x0000 when entering Route 23.
                                        4068        Set to 0x2 after an Elite Four chamber level script forces the player to walk up. Rechecked 
                                                later after the E4 battle in that chamber has ended. Reset to 0x0000 in the Hall of Fame room.
                                        4069        Set to 0x1, 0x2, or 0x3 depending on which fossil is being revived at the CINNABAR ISLAND 
                                                lab.
                                        406A        Fossil revival process. 0x1 means that a revival is in progress. 0x2 means that it is 
                                                complete.
                                        406B        Set to 0x1 to disable Script events for the Nugget Bridge challenge.
                                        406C        Unknown or multi-use.
                                                    Set to 0x1 to disable the man that traps you in PEWTER until you beat Brock.
                                                    Set to 0x2 to disable Script events for the man that gives Running Shoes at PEWTER.
                                        406E        Safari Zone status.
                                                    Set to 0x0 when not in the SAFARI ZONE.
                                                    Set to 0x1 ...?
                                                    Set to 0x2 after paying to enter the SAFARI ZONE.
                                        406F        I haven't the faintest idea. Used in Pokemon Center 2F level scripts.
                                        4070        Set to 0x1 when talking to some chick in PALLET TOWN that mimics a sign or whatever.
                                        4071        See 408A.
                                        4073        Affects dialogue in the SAFFRON CITY TRAINER FAN CLUB building.
                                                    Is set to 0x1 when the occupants -- your new fans -- swarm you.
                                        4074        Unknown. Checked if != 0x0 in a level script for the woman-who-likes-battles's house (map 
                                                31.0).
                                        4075        Used in a ONE ISLAND level script. If it equals 0x2, BILL will welcome you to ONE ISLAND, 
                                                bring you into the PokeCenter to see CELIO, and then the variable will be set to 0x3.
                                        4076        Multi-use, for the RUBY/SAPPHIRE subplot.
                                                    Set to 0x4 if hasn't beaten the ROCKET GRUNTs they eavesdrop on at MT. EMBER?
                                                    Set to 0x5 when the RUBY has been delivered to CELIO on ONE ISLAND.
                                                    Set to 0x6 when the subplot is complete.
                                                    If >= 0x5, VERMILION dockworker acknowledges your RAINBOW PASS. (Travel to SEVII)
                                                    If >= 0x1, VERMILION dockworker acknowledges your TRI-PASS. (Travel to SEVII 1-3)
                                        4078        Affects the commentary and items offered by the shopkeeper on One Island. The variable's 
                                                value is managed by a TWO ISLAND level script that checks various flags.
                                                    0x4078 == 0x2 means that Lostelle has been rescued.
                                                    0x4078 == 0x3 means that you've beaten all Gyms, but not the Elite Four. (?)
                                                    0x4078 == 0x4 means that the shopkeeper offers items "from distant lands". (Beat E4)
                                        4079        Multi-use, for the LOSTELLE event.
                                                    Set to 0x1 after dealing with a Biker at the TWO ISLAND GAME CORNER.
                                                    Set to 0x2 after rescuing LOSTELLE in BERRY FOREST, before warping to her home.
                                                    Is set to 0x3 when LOSTELLE is reunited with her father.
                                                    Is set to 0x4 when the subplot is complete.
                                        407B        Unknown or multi-use.
                                                    Set to 0x2 to enable the first Script events for the Bikers in THREE ISLAND?
                                                    Set to 0x3 to disable the first Script events for the Bikers in THREE ISLAND.
                                                    Set to 0x4 to disable the second Script events for the Bikers. (They leave.)
                                        407C        Unknown or multi-use.
                                                    Set to 0x1 to ...?
                                                    Set to 0x2 to disable the Pokemon Center 2F level script (TEALA's tutorial).
                                        407D        Set to 0x1 to disable the ROCKET GRUNT Script events behind the broken home in CERULEAN.
                                        407E        Unknown or multi-use.
                                                    Is set to 0x1 after the player helps the S.S. ANNE's captain.
                                                    Is set to 0x2 when the player is stepping out of a boat and into VERMILION CITY or the S.S. ANNE harbor.
                                                    Is set to 0x3 when the S.S. ANNE has departed VERMILION CITY.
                                        407F        Set to 0x2 after a Script event on MT. EMBER, in which the player hears ROCKET GRUNTs talk.
                                        4080        Set to 0x1 after a Script event in ICEFALL CAVE, in which the player assists LORELEI.
                                        4081        Set to 0x1 to disable a Script event blocking access to the Pokemon in the FIGHTING DOJO.
                                        4082        Multi-use.
                                                    Set to 0x0 to enable a Script event at the TRAINER TOWER counter. (A level script 
                                                    on the tower's exterior (Map 3.62) does this.)
                                                    Set to 0x1 to disable a Script event at the TRAINER TOWER counter.
                                        4083        Set to 0x1 upon entering the LOST CAVE room with the lost woman.
                                        4084        Multi-use, for the SELPHY event.
                                                    Set to 0x1 upon rescuing SELPHY from LOST CAVE, before warping to RESORT GORGEOUS.
                                                    Set to 0x2 upon being promptly dismissed from her front door (level script).
                                        4085        Unknown. Used in two level scripts for INDIGO PLATEAU (3.9). Does something if it equals 1.
                                        4086        Set to 0x1 to disable a FOUR ISLAND level script (Gary encounter without battle).
                                        4088        Set to 0x1 to disable Script events in ROCKET WAREHOUSE.
                                        4089        Set to 0x1 to disable a SIX ISLAND (37.0) level script (Gary encounter without battle).
                                        408A        Multi-use, for an event where you meet BILL at CINNABAR ISLAND's PokeCenter, and he leaves on 
                                                a boat.
                                                    Set to 0x1 upon meeting BILL in the PokeCenter. The same script makes you both leave.
                                                    Is set to 0x1 when used in level scripts that show BILL's departure from the island.
                                        408B        Set to 0x1 to disable the Script events for the fossil guy in MT. MOON.
                                        ...
                                        5EF4 - 7FFF    CONFIRMED UNSAFE! In PC box space!
                                        
                                        
                                        
                                        
                                        
                                        LIST OF IDENTIFIED ITEM HIDDEN IDS (FIRERED)
                                        
                                        UNUSED: 07, 10, 18, 28, 2B, 2C, 2D, 2E, 7C, BC, BF, all above.
                                        
                                        00        POTION            VIRIDIAN FOREST (1.0)
                                        01        ANTIDOTE        VIRIDIAN FOREST (1.0)
                                        02        MOON STONE        MT. MOON (1.3)
                                        03        ETHER            MT. MOON (1.3)
                                        04        ELIXIR            ROUTE 25 (3.44)
                                        05        ETHER            ROUTE 25 (3.44)
                                        06        ETHER            ROUTE 9 (3.27)
                                        08        HYPER POTION        S.S. ANNE (1.8)
                                        09        SUPER POTION        ROUTE 10 (3.28)
                                        0A        MAX ETHER        ROUTE 10 (3.28)
                                        0B        PP UP            ROCKET HIDEOUT (1.42)
                                        0C        NUGGET            ROCKET HIDEOUT (1.44)
                                        0D        NEST BALL        ROCKET HIDEOUT (1.45)
                                        0E        BIG MUSHROOM        POKeMON TOWER (1.92)
                                        0F        PP UP            ROUTE 13 (3.31)
                                        11        RARE CANDY        ROUTE 17 (3.35)
                                        12        FULL RESTORE        ROUTE 17 (3.35)
                                        13        PP UP            ROUTE 17 (3.35)
                                        14        MAX REVIVE        ROUTE 17 (3.35)
                                        15        MAX ELIXIR        ROUTE 17 (3.35)
                                        16        LEAF STONE        SAFARI ZONE (1.63)
                                        17        REVIVE            SAFARI ZONE (1.66)
                                        19        MAX POTION        SILPH CO. (1.55)
                                        1A        NUGGET            SAFFRON CITY (14.1)
                                        1B        MAX ELIXIR        POWER PLANT (1.95)
                                        1C        THUNDERSTONE        POWER PLANT (1.95)
                                        1D        NUGGET            SEAFOAM ISLANDS (1.86)
                                        1E        WATER STONE        SEAFOAM ISLANDS (1.87)
                                        1F        MOON STONE        POKeMON MANSION (1.59)
                                        20        RARE CANDY        POKeMON MANSION (1.61)
                                        21        ELIXIR            POKeMON MANSION (1.62)
                                        22        FULL RESTORE        ROUTE 23 (3.42)
                                        23        ULTRA BALL        ROUTE 23 (3.42)
                                        24        MAX ETHER        ROUTE 23 (3.42)
                                        25        ULTRA BALL        VICTORY ROAD (1.39)
                                        26        FULL RESTORE        VICTORY ROAD (1.39)
                                        27        ULTRA BALL        CERULEAN CAVE (1.72)
                                        29        ESCAPE ROPE        ROUTE 11 (3.29)
                                        2A        HYPER POTION        ROUTE 12 (3.30)
                                        2F        PP UP            CELADON CITY (3.6)
                                        30        MAX ETHER        VERMILION CITY (3.5)
                                        31        RARE CANDY        CERULEAN CITY (3.3)
                                        32        GREAT BALL        ROUTE 4 (3.22)
                                        33        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        34        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        35        ???????? [0000]        CELADON CITY (10.14) // Amount: $14 -- COINS pickup?!
                                        36        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        37        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        38        ???????? [0000]        CELADON CITY (10.14) // Amount: $14 -- COINS pickup?!
                                        39        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        3A        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        3B        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        3C        ???????? [0000]        CELADON CITY (10.14) // Amount: $28 -- COINS pickup?!
                                        3D        ???????? [0000]        CELADON CITY (10.14) // Amount: $64 -- COINS pickup?!
                                        3E        ???????? [0000]        CELADON CITY (10.14) // Amount: $0A -- COINS pickup?!
                                        3F        CHERI BERRY        SEVAULT CANYON (3.64)
                                        40        HEART SCALE        TANOBY RUINS (3.65)
                                        41        HEART SCALE        TANOBY RUINS (3.65)
                                        42        HEART SCALE        TANOBY RUINS (3.65)
                                        43        HEART SCALE        TANOBY RUINS (3.65)
                                        44        NEST BALL        ROCKET WAREHOUSE (1.114)
                                        45        NET BALL        ROCKET WAREHOUSE (1.114)
                                        46        POTION            UNDERGROUND PATH (1.31)
                                        47        ANTIDOTE        UNDERGROUND PATH (1.31)
                                        48        PARLYZ HEAL        UNDERGROUND PATH (1.31)
                                        49        AWAKENING        UNDERGROUND PATH (1.31)
                                        4A        BURN HEAL        UNDERGROUND PATH (1.31)
                                        4B        ICE HEAL        UNDERGROUND PATH (1.31)
                                        4C        ETHER            UNDERGROUND PATH (1.31)
                                        4D        POTION            UNDERGROUND PATH (1.34)
                                        4E        ANTIDOTE        UNDERGROUND PATH (1.34)
                                        4F        PARLYZ HEAL        UNDERGROUND PATH (1.34)
                                        50        AWAKENING        UNDERGROUND PATH (1.34)
                                        51        BURN HEAL        UNDERGROUND PATH (1.34)
                                        52        ICE HEAL        UNDERGROUND PATH (1.34)
                                        53        ETHER            UNDERGROUND PATH (1.34)
                                        54        TINYMUSHROOM        MT. MOON (1.2)
                                        55        TINYMUSHROOM        MT. MOON (1.2)
                                        56        TINYMUSHROOM        MT. MOON (1.2)
                                        57        BIG MUSHROOM        MT. MOON (1.2)
                                        58        BIG MUSHROOM        MT. MOON (1.2)
                                        59        BIG MUSHROOM        MT. MOON (1.2)
                                        5A        RAZZ BERRY        BERRY FOREST (1.109)
                                        5B        BLUK BERRY        BERRY FOREST (1.109)
                                        5C        NANAB BERRY        BERRY FOREST (1.109)
                                        5D        WEPEAR BERRY        BERRY FOREST (1.109)
                                        5E        ORAN BERRY        BERRY FOREST (1.109)
                                        5F        CHERI BERRY        BERRY FOREST (1.109)
                                        60        CHESTO BERRY        BERRY FOREST (1.109)
                                        61        PECHA BERRY        BERRY FOREST (1.109)
                                        62        RAWST BERRY        BERRY FOREST (1.109)
                                        63        ASPEAR BERRY        BERRY FOREST (1.109)
                                        64        PERSIM BERRY        BERRY FOREST (1.109)
                                        65        PINAP BERRY        BERRY FOREST (1.109)
                                        66        LUM BERRY        BERRY FOREST (1.109)
                                        67        STARDUST        TREASURE BEACH (3.46)
                                        68        STARDUST        TREASURE BEACH (3.46)
                                        69        PEARL            TREASURE BEACH (3.46)
                                        6A        PEARL            TREASURE BEACH (3.46)
                                        6B        ULTRA BALL        TREASURE BEACH (3.46)
                                        6C        ULTRA BALL        TREASURE BEACH (3.46)
                                        6D        STAR PIECE        TREASURE BEACH (3.46)
                                        6E        BIG PEARL        TREASURE BEACH (3.46)
                                        6F        RARE CANDY        CAPE BRINK (3.47)
                                        70        POKe BALL        PEWTER CITY (3.2)
                                        71        ORAN BERRY        ROUTE 3 (3.21)
                                        72        PERSIM BERRY        ROUTE 4 (3.22)
                                        73        PECHA BERRY        ROUTE 24 (3.43)
                                        74        ORAN BERRY        ROUTE 25 (3.44)
                                        75        BLUK BERRY        ROUTE 25 (3.44)
                                        76        SITRUS BERRY        ROUTE 6 (3.24)
                                        77        RARE CANDY        ROUTE 6 (3.24)
                                        78        PECHA BERRY        S.S. ANNE (1.10)
                                        79        CHERI BERRY        S.S. ANNE (1.10)
                                        7A        CHESTO BERRY        S.S. ANNE (1.10)
                                        7B        RARE CANDY        ROUTE 9 (3.27)
                                        7D        PERSIM BERRY        ROUTE 10 (3.28)
                                        7E        CHERI BERRY        ROUTE 10 (3.28)
                                        7F        RAWST BERRY        ROUTE 8 (3.26)
                                        80        LUM BERRY        ROUTE 8 (3.26)
                                        81        LEPPA BERRY        ROUTE 8 (3.26)
                                        82        RARE CANDY        ROUTE 12 (3.30)
                                        83        LEFTOVERS        ROUTE 12 (3.30)
                                        84        LEFTOVERS        ROUTE 16 (3.34)
                                        85        MAX REVIVE        FUCHSIA CITY (3.7)
                                        86        NET BALL        ROCKET HIDEOUT (1.45)
                                        87        ULTRA BALL        SILPH CO. (1.48)
                                        88        PROTEIN            SILPH CO. (1.49)
                                        89        IRON            SILPH CO. (1.50)
                                        8A        PP UP            SILPH CO. (1.51)
                                        8B        CARBOS            SILPH CO. (1.52)
                                        8C        ZINC            SILPH CO. (1.53)
                                        8D        NUGGET            SILPH CO. (1.54)
                                        8E        CALCIUM            SILPH CO. (1.55)
                                        8F        HP UP            SILPH CO. (1.56)
                                        90        REVIVE            SILPH CO. (1.57)
                                        91        LUM BERRY        ROUTE 23 (3.42)
                                        92        SITRUS BERRY        ROUTE 23 (3.42)
                                        93        ASPEAR BERRY        ROUTE 23 (3.42)
                                        94        LEPPA BERRY        ROUTE 23 (3.42)
                                        95        ZINC            ROUTE 14 (3.32)
                                        96        CHESTO BERRY        ROUTE 9 (3.27)
                                        97        NANAB BERRY        ROUTE 10 (3.28)
                                        98        WEPEAR BERRY        ROUTE 7 (3.25)
                                        99        STARDUST        ROUTE 20 (3.38)
                                        9A        PEARL            ROUTE 21 (3.39)
                                        9B        MAX ELIXIR        ROUTE 23 (3.42)
                                        9C        RAZZ BERRY        ROUTE 4 (3.22)
                                        9D        PINAP BERRY        ROUTE 14 (3.32)
                                        9E        FIRE STONE        MT. EMBER (1.97)
                                        9F        SOOTHE BELL        POKeMON TOWER (1.94) // Amount: $81 ?!?
                                        A0        SACRED ASH        NAVEL ROCK (2.37)
                                        A1        PP MAX            CAPE BRINK (3.47)
                                        A2        ULTRA BALL        MT. EMBER (1.97)
                                        A3        NUGGET            THREE ISLE PATH (2.34)
                                        A4        PP UP            THREE ISLAND (3.14)
                                        A5        MAX REPEL        BOND BRIDGE (3.48)
                                        A6        PEARL            BOND BRIDGE (3.48)
                                        A7        STARDUST        BOND BRIDGE (3.48)
                                        A8        PEARL            FOUR ISLAND (3.15)
                                        A9        ULTRA BALL        FOUR ISLAND (3.15)
                                        AA        BIG PEARL        MEMORIAL PILLAR (3.57)
                                        AB        RAZZ BERRY        MEMORIAL PILLAR (3.57)
                                        AC        SITRUS BERRY        MEMORIAL PILLAR (3.57)
                                        AD        BLUK BERRY        MEMORIAL PILLAR (3.57)
                                        AE        NEST BALL        RESORT GORGEOUS (3.54)
                                        AF        STARDUST        RESORT GORGEOUS (3.54)
                                        B0        STAR PIECE        RESORT GORGEOUS (3.54)
                                        B1        STARDUST        RESORT GORGEOUS (3.54)
                                        B2        STAR PIECE        OUTCAST ISLAND (3.58)
                                        B3        NET BALL        OUTCAST ISLAND (3.58)
                                        B4        ULTRA BALL        GREEN PATH (3.59)
                                        B5        ASPEAR BERRY        WATER PATH (3.60)
                                        B6        ORAN BERRY        WATER PATH (3.60)
                                        B7        PINAP BERRY        WATER PATH (3.60)
                                        B8        LEPPA BERRY        SIX ISLAND (3.18)
                                        B9        BIG PEARL        TRAINER TOWER (3.62)
                                        BA        PEARL            TRAINER TOWER (3.62)
                                        BB        NANAB BERRY        TRAINER TOWER (3.62)
                                        BD        MACHO BRACE        VIRIDIAN CITY (5.1) // Amount: $81 ?!?
                                        BE        LAVA COOKIE        S.S. ANNE (1.4)


                                        EDIT: Updated with information from JPAN's special list as well as some hidden scripts I found (that are executed directly by the game engine, and are not referenced in maps).
                                        Reply With Quote
                                          #149    
                                        Old September 1st, 2011 (1:43 AM).
                                        knizz's Avatar
                                        knizz knizz is offline
                                           
                                          Join Date: Aug 2007
                                          Gender: Female
                                          Posts: 192
                                          DavidJCobb, I wish I knew you when I was still ROM Hacking. Great work.
                                          __________________
                                          Firered IDA 6.6 DB: https://www.dropbox.com/s/d856o3pyndyr5sr/firered.idb
                                          VBA-M with lua scripting support
                                          incomplete firered decompilation
                                          Reply With Quote
                                            #150    
                                          Old September 9th, 2011 (12:13 AM). Edited September 9th, 2011 by Missingyep.
                                          Missingyep Missingyep is offline
                                             
                                            Join Date: Jul 2010
                                            Posts: 275
                                            Quote:
                                            Originally Posted by knizz View Post
                                            DavidJCobb, I wish I knew you when I was still ROM Hacking. Great work.
                                            Thanks. I've seen some of your work; coming from someone of your skill, that compliment means a lot.

                                            * * * * *

                                            Building on some work by knizz --

                                            Quote:
                                            Originally Posted by knizz View Post
                                            As I said once in another thread there is an array of npc-data at 02036E38 . . .
                                            -- I have deciphered more of the OW/Person data structure:

                                            Bytes 0 - 8: Unknown.
                                            Byte 9: Map number for this Person event.
                                            Byte 10: Map bank number for this Person event.
                                            Bytes 11 - 15: Unknown
                                            Bytes 16 - 17: Tile X (stepping off of)
                                            Bytes 18 - 19: Tile Y (stepping off of)
                                            Bytes 20 - 21: Tile X (stepping onto)
                                            Bytes 22 - 23: Tile Y (stepping oto)
                                            Byte 24: Unknown. Changes with last movement direction. (11 down, 44 right, 33 left)
                                            Bytes 25 - 27: Unknown.
                                            Byte 28: Sprite frame
                                            Bytes 29 - 31: Unknown.
                                            Byte 32: Facing direction (same format as PLAYERFACING script var's values).
                                            Bytes 33 - 35: Unknown.

                                            Offset of the facing direction byte for Person event N: 0x02036E38 + (0x24 * N) + 0x20

                                            * * * * *

                                            EDIT: Found offsets for some scripts that people may find interesting.

                                            0x081A4EB4 and 0x081A4EC1
                                            Something to do with trainer battles... Is this used by the core game engine?

                                            0x081A6843
                                            This script handles hidden-item Signposts. Inputs are 0x8005 (item ID) and 0x8006 (amount). If the item ID is 0 (item: ????????) then it is treated as a Coins pickup.

                                            0x081A6955
                                            Script for the PC.

                                            0x081A6AC8
                                            Script for SURF. It does not include the badge check; that is evidently done in ASM before this is called.

                                            0x081A6B0D
                                            Script for current that is too fast to SURF in.

                                            0x081A7705
                                            Script for the Mystery Gift questionnaire.

                                            0x081A77A0
                                            Appears to be the script that is executed if you press Select without having a Key Item registered to that button.

                                            0x081A8D49
                                            I have no idea, but it has something to do with digging up an item. Where in FireRed can you do that?

                                            0x081A8D97
                                            Script for PokeCenter healing after whiting out.

                                            0x081A8DD8
                                            Script for Mom healing after whiting out.

                                            0x081A8DFD
                                            Script for whiting out (on the overworld, in battles, or both?).

                                            0x081AD008
                                            Script for a Fame Checker entry. This actually runs inside the Fame Checker. The others probably do, too.

                                            0x081BE2B7
                                            Script for WATERFALL. Like the SURF script, the badge check is performed elsewhere.

                                            0x081BE38B
                                            Script for DIVE (submerging). Apparently an R/S/E leftover. Like SURF and WATERFALL, there's no badge check here.

                                            0x081BE3D4
                                            Script for DIVE (emerging). No badge check.

                                            0x081BE420
                                            Script for if you try to use DIVE when you cannot emerge at the spot you're currently standing on.

                                            0x081BF546
                                            Internal script for hatching an EGG (by walking).

                                            0x081BFB65
                                            Script executed when REPEL wears off.

                                            * * * * *

                                            And some string offsets:

                                            0x0826CF8C - 0x0826D19D
                                            Nicknames of the Pokemon you can receive in in-game trades.

                                            0x081C55C9
                                            Strings for saving the game.

                                            0x081B2DF8 - 0x081BB1B3(?)
                                            L/R help strings.
                                            Reply With Quote
                                            Reply

                                            Quick Reply

                                            Join the conversation!

                                            Create an account to post a reply in this thread, participate in other discussions, and more!

                                            Create a PokéCommunity Account
                                            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 7:24 PM.