葱级毁灭吧 关注:158贴子:14,644

【转帖】底层分析口袋妖怪rom的bug

只看楼主收藏回复

英文的,锻炼一下英文水平吧
内容大概是“乱码兽”的
Mystery Solved! 
Q: What is Missingno.?
A: For most variables on Game Boy games, the fewest possibilities for the variable is 256 (HEX 100), labeled 0 to 255 (HEX 00 to FF). This goes for most variables in RBY, including ones for all the Pokemon lookup slots. However, only 151 Pokemon exist in RBY. So, if there are 256 possibilities, and only 151 slots were defined by the programmers, what do the other 105 slots have? Glitches. And so, Missingno. was created. 
Q: How do I find it?
A: You don't know how to find it? Go play some more RBY. But, if you're one of the outcasts who doesn't know how to find it, here goes. Talk to the Old Man at the northern edge of Viridian, and let him catch a Weedle. Then, Fly to Cinnabar (you can also go to Fuchsia and Surf to Seafoam Islands, but that takes a lot longer) and Surf up and down the right edge. After a while, you'll run into some unnatural Pokemon at high levels, and Missingno. (or a Pokemon with a glitched name containing 'M in the middle). NOTE: THIS DOES NOT WORK IN YELLOW, OR THE EUROPEAN VERSIONS OF THE GAME.
Not true! I've received reports of MissingNos and 'Ms from European players!!! 
(At this point, it gets very complex. You'll be better off reading the rest if you know how to hack.) 
Q: Why does the above trick work?
A: There are two things that, when combined, made it possible for this trick to exist. Here they are: 
1. When creating the map for what Pokemon appear where, they made a crucial flaw. The 1-square-wide strip of water on the right side of Cinnabar and Seafoam Islands was programmed to be a place where wild Pokemon CAN appear. But (and thank GAMEFREAK for this one) they forgot to define what Pokemon can appear there. This wouldn't be that big of a deal, except that means the previous settings for "what Pokemon can appear" will remain, and if you read #2, you'll see why that causes the glitch. 



1楼2009-03-11 22:37回复

     
    2. When the Old Man catches the Weedle, they change the variables that are assigned to "Your Name" to Old Man, so it shows up as "Old Man threw the Poke Ball." Now, in order to do that, it overwrites the variables you gave to "Your Name". Therefore, the game must store the variables that make up your name to another place, so it can recall them later. So the programmers at NOA probably thought,
    "What are some variables that we can overwrite to assign to the character's name for this process?"
    "I got it! How about the slots that define what Pokemon you can run into?"
    "That's it! Whenever the character enters a new area, they'll be rewritten, so it won't disturb the game at all!"
    *points to #1* Umm.....no. As a result, that wonderful glitch can be yours for only *insert whatever price your local retailer charges for R/B*! Of course, it's not JUST Missingno. you can run into. There will also be some L100+ Pokemon, whose species and levels are determined by your name. 
    *sees audience sleeping*
    *turns on 12-inch subwoofers at full blast*
    There. Now that I have your attention,.... 
    Q: How do I determine the levels? 
    A: First off, look at letters 2, 4, and 6 of your name. Those letters will determine the levels of the Pokemon you can run into. First, take the NUMERICAL equivalent (A=1, B=2, etc.) of those letters, and add 127 for uppercase or 159 for lowercase. In addition, the symbols are as follows: 
    ( 154
    ) 155
    : 156
    ; 157
    [ 158
    ] 159
    PK 209
    MN 210
    ? 239
    P(monetary symbol) 240
    x(times sign) 241
    . 242
    ? 245
    Also, at the end of your name, the game inserts an 80 (HEX 50) to designate "End of Name". Because of how the variables are used, this means that one of the levels your Missingno. (or glitched 'M name) will be is always L80. 
    


    2楼2009-03-11 22:37
    回复

      Q: Species determined by name? Cool! I'll get a new name and try that so I can get Mew WITHOUT SHARKING! 
      A: Hold it right there. While it is determined by name, the lowest number assigned to a character (other than the 80 that is assigned to the "End of Name" character) is 128, for a capital A. In EVERY variable that designates a Pokemon, Mew is assigned the number 21 (HEX 15). If you can make the connection, that means that NO name you enter will result in Mew being a possibility. The low numbers like 21 represent glitch characters that are not available for naming anything and can only be found with a Shark. For convenience, here is the table of what Pokemon will appear for each letter. Letters 3, 5, and 7 are used to determine this: 
      A: Golduck
      B: Hypno
      C: Golbat
      D: Mewtwo (BIG OPPORTUNITY HERE!)
      E: Snorlax
      F: Magikarp
      G: Missingno.
      H: Missingno.
      I: Muk
      J: Missingno.
      K: Kingler
      L: Cloyster
      M: Missingno. ('M)
      N: Electrode
      O: Clefable
      P: Weezing
      Q: Persian
      R: Marowak
      S: Missingno.
      T: Haunter
      U: Abra
      V: Alakazam
      W: Pidgeotto
      X: Pidgeot
      Y: Starmie
      Z: Bulbasaur (Get all the starters without trading!)
      a: Missingno.
      b: Missingno.
      c: Missingno.
      d: Ponyta
      e: Rapidash
      f: Rattata
      g: Raticate
      h: Nidorino
      i: Nidorina
      j: Geodude
      k: Porygon
      l: Aerodactyl
      m: Missingno.
      n: Magnemite
      o: Missingno.
      p: Missingno.
      q: Charmander (Get all the starters without trading!)
      r: Squirtle (Get all the starters without trading!)
      s: Charmeleon
      t: Wartortle
      u: Charizard
      v: Missingno.
      w: Missingno. (KABUTOPS FOSSIL)
      x: Missingno. (AERODACTYL FOSSIL)
      y: Missingno. (GHOST)
      z: Oddish 
      Note: If you want to try the glitch, DO NOT use one of the special characters in your name. If you do, you might end up facing a Trainer. You will not be able to get out of the match, and eventually one of their Pokemon will be a glitch that can freeze (and possibly erase) your game. Also, species from 3 goes with level from 2, species from 5 goes with level from 4, and species from 7 goes with level from 6. 
      


      3楼2009-03-11 22:37
      回复

        Q: How do I shark a name change? I want that "DxDyDzD" name without having to restart! 
        A: Well, if you're sharking, just go ahead and get the Pokemon that way. But if you want a name change, here it is:
        Letter 1: 01**58D1
        Letter 2: 01**59D1
        Letter 3: 01**5AD1
        Letter 4: 01**5BD1
        Letter 5: 01**5CD1
        Letter 6: 01**5DD1
        Letter 7: 01**5ED1
        End Name: 01505FD1
        That ends this venture into the World of Glitches. If you are still here, consider yourself lucky to understand what I was saying. 
        


        5楼2009-03-11 22:37
        回复
          • 61.48.120.*
          楼主吃多了吧!!


          6楼2009-03-12 18:41
          回复
            • 123.114.112.*
            这人英语和数学都学得好


            7楼2009-03-12 21:40
            回复
              哇!太厉害啦!我都看不懂


              IP属地:北京8楼2009-03-12 21:42
              回复
                • 123.114.188.*
                总算看懂了-
                简而言之就是把名字调成DyDyDz(dyz???!!!)就能收着六只Lv.255超梦


                9楼2009-03-13 21:56
                回复
                  ………………真有意义


                  IP属地:北京10楼2009-03-13 22:01
                  回复
                    • 124.42.6.*
                    wululu!


                    11楼2009-03-14 17:27
                    回复
                      • 124.42.6.*
                      Q:什么是“乱码兽”?
                      A: Game Boy游戏中的大多数变量至少有256种可能,从1到255。 RBY中的多数变量也是如此,包括怪兽的编号。然而,RBY里面只有151种怪兽。所以,如果有256种可能,只有151种可能是编好的,那么另外105个是什么?BUG^_^。这样,乱码兽横空出世。


                      12楼2009-03-14 17:33
                      回复
                        • 124.42.6.*
                        Q:我该怎么找到它? 
                        A:不知道怎么找到它?多玩玩RBY吧。不过,如果你真的不知道,我可以讲一下。和Viridian最北边的那个老人对话,让他抓住一只Weedle(是什么呢……囧)。然后飞到Cinnabar(也可以去Fuchsia再冲浪到Seafoam岛,不过那样需要的时间长得多),在右边上下进行冲浪。过一会,你就会遇到一些反常的高级别怪兽,还有乱码兽。(或者一只名字中间有'M的怪兽)。


                        13楼2009-03-14 17:41
                        回复
                          • 123.114.161.*
                          weedle是[可爱的]独角虫


                          14楼2009-03-14 17:49
                          回复
                            • 124.42.6.*
                            Q:这种方法为什么能成功呢?
                            A:有两个问题同时出现,使得这种方法能生效。它们是:
                            1. 做地图时,制作组出了致命的问题。Cinnabar和Seafoam岛最右面1格宽的条形区域被编成允许野生精灵出现的地方。但是(谢谢GAMEFREAK指出这一点)他们忘了规定什么精灵可以出现。这本不是什么大事,只不过之前设置的“什么精灵可以出现”会继续生效,如果你读了第二条, 你就会知道为什么这会导致漏洞。


                            15楼2009-03-14 23:15
                            回复
                              • 124.42.6.*
                              2. 老人抓到独角虫的时候,他们把被赋予值“你的名字”的变量改成“OLD MAN”,这样界面中就会出现“老人扔球”。现在。为了这样做,你给自己起的名字要被覆盖。所以,游戏必须把储存你名字的变量放到其他地方,以便之后能恢复。于是NOA的程序员也许想道:“有什么变量我们在这里可以重写呢?”
                              “有了!那些决定你可以遇到的精灵的变量如何?” 
                              “很好!玩家只要进入新区域,这些变量就会被重写,所以这样一点都不会影响游戏!”
                              (指指第一条)嗯……事实并非如此。于是,这个漂亮的漏洞可以被你利用,来插入——比如说,你家旁边的零售商把R/B卖给你的价钱!(*insert whatever price your local retailer charges for R/B*! 这句话应该是这么理解……)当然,你不只能遇到乱码兽。还会有一些100级以上的精灵,种族和级别有你的名字决定。


                              16楼2009-03-14 23:28
                              回复