1. New to the forums? Check out our Mentorship Program!
    Our mentors will answer your questions and help you become a part of the community!
  2. Welcome to Smogon Forums! Please take a minute to read the rules.
  3. Welcome to Wi-Fi! Please remember to read the rules and do NOT create a new thread for simple trades or Friend Safari codes.

Past Gen RNG Research

Discussion in 'Wi-Fi' started by mingot, Sep 12, 2009.

  1. RotatingAtom

    RotatingAtom

    Joined:
    Sep 24, 2010
    Messages:
    320
    Is playing an english (UK) White 2 Version on a german DSi a special case you guys need data for? Or is it just the version language that matters for RNG purposes?
    Also, is RNG'ing (including the calibration process, finding your parameters and such) significantly easier on a DS Lite than on a DSi? Or is there no difference?
  2. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    It's language specific so you're fine. I'm actually shocked that it works on the German DSi for you. The DS Lite is slightly easier because you can set the clock with the A button instead of being forced to use the touch screen and it has a second hand on the main menu. Really though it's a very minor difference and you should be fine with either.
  3. AdroMaster

    AdroMaster

    Joined:
    Nov 29, 2011
    Messages:
    12
    My results:

    Game: Spanish White 2
    Console: Spanish 3DS
    Mac Address: 2C10C1074ABA
    Date Started: December 11th, 2011
    Time Started: 10:15:25
    First Pokemon: https://www.pokecheck.org/?p=detail&uid=2378831
    Second Pokemon: https://www.pokecheck.org/?p=detail&uid=2378833

    I couldn´t capture a Chatot, so I saved the game ONE time in order to advance ONE frame the PIDRNG. I assumed that save the game is the same in BW2 that in BW. If it´s wrong, tell me and I will make another test the weekend, including Black 2 results.
  4. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Saving still advances the PIDRNG so that works fine. Thanks, I'll try to get Reporter updated for Spanish games ASAP, probably waiting on the Black 2 results.

    Initial seed: 5F9C5140EF3E439A
    Nazo = 0x27a5fb0, Second = 33, timer0 = 1662, vcount = ac, vframe = 8
  5. AdroMaster

    AdroMaster

    Joined:
    Nov 29, 2011
    Messages:
    12
    OK, thanks. BTW, B2 results:

    My results:

    Game: Spanish Black 2
    Console: Spanish DSi
    Mac Address: 0024F3FCE2C2
    Date Started: December 11th, 2011
    Time Started: 10:15:25
    First Pokemon: http://www.pokecheck.org/?p=detail&uid=2426955
    Second Pokemon: http://www.pokecheck.org/?p=detail&uid=2426965

    Same process that my previous test. Made it in Castelia's City secret grass (no idea if PIDRNG has random advancements in this place, but is the only available place without NPCs atm...)
  6. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Initial: 8601231516C1EF36
    Nazo = 0x27a6070, Second = 26, timer0 = 187e, vcount = bc, vframe = 8
  7. Bond697

    Bond697 Dies, died, will die.
    is a Pokemon Researcher

    Joined:
    Jun 20, 2010
    Messages:
    307
    the egg seed bug in bw2 also applies to ivs, so the ivs will be set for the first egg. they make, no joke, 18 ivs for a given egg and only use the middle 6. this is very depressing. they really drive me crazy sometimes.
  8. nitricacid

    nitricacid

    Joined:
    Nov 8, 2012
    Messages:
    2
    I just got Korean White 2, which was released yesterday. I have only it and Korean/Japanese DSL. Can I help anything with them?
  9. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Unfortunately the only way to obtain the data we need is to do the process on a DSi or 3DS. Thanks for offering.
  10. Kaphotics

    Kaphotics Remodeling Kitchens
    is a Pokemon Researcheris a Contributor to Smogon

    Joined:
    Apr 25, 2009
    Messages:
    779
    Move Recommender in Humilau

    [​IMG]

    rand(5) for the recommended move. Simple.

    Code:
    Hey, Trainer! The move I recommend for you is none other than Roost! Roost is a move that can restore HP! Also, if a Flying-type Pokémon uses it, it won't be Flying type during the turn, which means the type matchup will change. A supereffective move will be an ordinary move, or a move that would otherwise have no effect will land on it. It's a quite tricky move.
    Hey, Trainer! The move I recommend for you is none other than Synthesis! Synthesis is a move that can restore HP! When the sunlight is harsh, the Pokémon can restore a lot of HP. But in rain, hail, or a sandstorm, the Pokémon cannot restore HP very much. So, watch out for the weather!
    Hey, Trainer! The move I recommend for you is none other than Heal Bell! Heal Bell can heal status conditions of allies. It's a loving move to heal status conditions of all the party Pokémon!
    Hey, Trainer! The move I recommend for you is none other than Tailwind! Tailwind doubles the Speed of all party Pokémon the turn the move is used and for the next three turns. If Pokémon can act before their opponents, they can have an upper hand!
    Hey, Trainer! The move I recommend for you is none other than Pain Split! Pain Split adds the user's HP to the target's HP, divides it by two, and has the Pokémon share it. Use it when the target's HP is higher than your Pokémon's HP. You can reduce the opponent's HP while recovering your Pokémon's HP.
    Was just a test so I could see how the game gets random stuff by just using scripts. The game uses script command 00CB to get a random number with a certain max value (in this case, 5) and then displays an entry of text corresponding to the resultant random number. Slash and I were discussing other ways to calibrate besides catching... the TV is much more 'random' so that'd probably be a better route. That's for later :)
  11. Gahagan

    Gahagan

    Joined:
    Aug 16, 2009
    Messages:
    73
    What's the process? I've got a DSi, I'd like to help. Sorry if I missed it, only read Mingot's first post.
  12. kiddu

    kiddu

    Joined:
    May 1, 2010
    Messages:
    418
  13. mirkosp

    mirkosp

    Joined:
    Oct 14, 2012
    Messages:
    7
    Alright, met with a few friends over the weekend and one of them had an Italian White 2.

    Game: Italian White 2
    Console: Italian 3DS
    Mac Address: 58BDA32F0D0F
    Date Started: December 11th, 2011
    Time Started: 10:15:25 (actual second might be something like 33, since I find there tends to be an 8 second delay on the 3DS)
    First Pokemon: https://www.pokecheck.org/?p=detail&uid=2841732
    Second Pokemon: https://www.pokecheck.org/?p=detail&uid=2840953

    Since he was somewhat early in the game, I believe the only area with no WNPCs was the castelia park, so I went for that. The only NPC there is static and I believe it's not tied to the rest of castelia, so there should be no extra frame advancements.
  14. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Thanks for helping us out.

    Initial Seed: 6C613FEFCA843731 He memory linked and there was one PIDRNG advancement probably caused by NPCS.

    Nazo = 0x27a5ed0, Second = 33, vframeBase = 0x8, timer0 = 165e, vcount = ac, vframe = 8
  15. nitricacid

    nitricacid

    Joined:
    Nov 8, 2012
    Messages:
    2
  16. Hozu

    Hozu RNGenius
    is a Contributor to Smogon

    Joined:
    Feb 10, 2011
    Messages:
    1,420
    FYI just south of Virbank is the earliest spot with no NPCs. Music is the same as the town, not in the area where the map and bgm changes.
  17. Kaphotics

    Kaphotics Remodeling Kitchens
    is a Pokemon Researcheris a Contributor to Smogon

    Joined:
    Apr 25, 2009
    Messages:
    779
    Castelia Massage +Happiness

    Code:
    rand(100)
    	if     <=5  then increase Happiness by 30
    	elseif <=25 then increase Happiness by 10
            else             increase Happiness by 5.
    
     6% to +30   (0-5)
    20% to +10   (6-25)
    74% to +5    (26-99)

    ingame script code (open)
    Code:
    Offset: 403 StoreRandom 0x400A 100 
    Offset: 409 StoreVar 0x400A 
    Offset: 413 CompareTo 5 
    Offset: 417 Condition LOWER/EQUAL
    Offset: 421 If FALSE Function 9 (458 )
    Offset: 428 0xFD 0x8022 30 1 
    Offset: 436 Message 0 4 10 5 0 0 = ' There. All done!\r\nThe massage has made your Pokémon\nmuch more friendly to you! '
    Offset: 448 WaitButton 
    Offset: 450 CloseMessageKeyPress 
    Offset: 452 Jump  Function 10 (531 )
    
    === Function3=== 
    
    Offset: 458 StoreVar 0x400A 
    Offset: 462 CompareTo 25 
    Offset: 466 Condition LOWER/EQUAL
    Offset: 470 If FALSE Function 11 (507 )
    Offset: 477 0xFD 0x8022 10 1 
    Offset: 485 Message 0 4 11 5 0 0 = ' There. All done!\r\nThe massage has made your Pokémon\nmore friendly to you! '
    Offset: 497 WaitButton 
    Offset: 499 CloseMessageKeyPress 
    Offset: 501 Jump  Function 10 (531 )
    
    === Function4=== 
    
    Offset: 507 0xFD 0x8022 5 1 
    Offset: 515 Message 0 4 12 5 0 0 = ' There. All done!\r\nThe massage has made your Pokémon\na little bit more friendly to you! '
    Offset: 527 WaitButton 
    Offset: 529 CloseMessageKeyPress 
    Offset: 531 SetFlag 2761 
    Offset: 535 Jump  Function 12 (557 )
    
    And yes, it is "LOWER/EQUAL" not "LOWER"; there are multiple compare cases that the game can do.
  18. chiizu

    chiizu PPPPPPPPPPPPPPPPP RNG
    is a Programmeris a Pokemon Researcher

    Joined:
    Nov 12, 2010
    Messages:
    422
    We won't be able to use this data until we have some data from the game running on an original DS or DS lite. If you have access to one of those, could you do the same procedure there as well?

    Also, do you have access to Korean Black 2, Black 1, and/or White 1? We need DSi/3DS info for those games as well.
  19. Kaphotics

    Kaphotics Remodeling Kitchens
    is a Pokemon Researcheris a Contributor to Smogon

    Joined:
    Apr 25, 2009
    Messages:
    779
    Pickup Changes in B2W2

    Different table, that's all. No more lucky eggs ;(

    decompressed overlay9_0166.bin @ 0x7E2

    Common Item Table: (open)
    Code:
    11 00 Potion
    12 00 Antidote
    1A 00 Super Potion
    03 00 Great Ball
    4F 00 Repel
    4E 00 Escape Rope
    1B 00 Full Heal
    19 00 Hyper Potion
    02 00 Ultra Ball
    1C 00 Revive
    32 00 Rare Candy
    50 00 Sun Stone
    51 00 Moon Stone
    5D 00 Heart Scale
    17 00 Full Restore
    1D 00 Max Revive
    33 00 PP Up
    29 00 Max Elixir
    Rare Item Table: (open)
    Code:
    32 00 Rare Candy
    19 00 Hyper Potion
    5C 00 Nugget
    DD 00 King's Rock
    17 00 Full Restore
    26 00 Ether
    16 01 Iron Ball
    19 02 Prism Scale
    28 00 Elixir
    19 02 Prism Scale
    EA 00 Leftovers
    19 02 Prism Scale
    
    Notes: (open)
    The rare item table is located before the regular table.
    [​IMG]

    It's pretty obvious how it works.

    For the rare table, it starts off with the first two. For every 10 levels, shift down one row. Similar deal for the common table.
  20. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Obedience in BW2:
    If the Pokemon's level is above number of badges * 10 a random call is made to see if the Pokemon will listen to you. The check is
    if (rand(badges * 10 + level + 1) < badges * 10)

    If this fails the Pokemon won't attack, there's a few different possible results.
    First if some flag on the Pokemon is set it will always loaf around.
    rand(0x100) is called and compared to (level - badges * 10).
    Depending on the result of this comparison it'll fall asleep, display "wont obey" or display "is loafing around". I'm a bit tired so I haven't managed to exactly grasp the C code behind the comparison for these 3 different states. I'm mostly mystified by sub_21A0B68. Here's the assembly:
    Code:
    ROM:021A0B22 loc_21A0B22
    ROM:021A0B22 MOVS    R0, 0x100
    ROM:021A0B26 BL      _brng__
    ROM:021A0B2A LSLS    R0, R0, #0x10
    ROM:021A0B2C LSRS    R0, R0, #0x10
    ROM:021A0B2E STR     R0, [SP,#0x18+var_18]
    ROM:021A0B30 LDR     R0, [SP,#0x18+var_18]
    ROM:021A0B32 SUBS    R1, R4, R6
    ROM:021A0B34 CMP     R0, R1
    ROM:021A0B36 BGE     loc_21A0B48
    ROM:021A0B38 MOVS    R0, R5
    ROM:021A0B3A MOVS    R1, R7
    ROM:021A0B3C BL      sub_21A0B68
    ROM:021A0B40 CMP     R0, #0
    ROM:021A0B42 BNE     loc_21A0B48
    ROM:021A0B44 MOVS    R0, #2
    ROM:021A0B46 POP     {R3-R7,PC}
    ROM:021A0B48 ; ---------------------------------------------------------------------------
    ROM:021A0B48
    ROM:021A0B48 loc_21A0B48                             ; CODE XREF: sub_21A0A84+B2j
    ROM:021A0B48                                         ; sub_21A0A84+BEj
    ROM:021A0B48 SUBS    R2, R4, R6
    ROM:021A0B4A LSLS    R0, R2, #0x10
    ROM:021A0B4C LSRS    R1, R0, #0x10
    ROM:021A0B4E LDR     R0, [SP,#0x18+var_18]
    ROM:021A0B50 SUBS    R0, R0, R1
    ROM:021A0B52 LSLS    R0, R0, #0x10
    ROM:021A0B54 LSRS    R0, R0, #0x10
    ROM:021A0B56 CMP     R0, R2
    ROM:021A0B58 BGE     loc_21A0B5E
    ROM:021A0B5A MOVS    R0, #3
    ROM:021A0B5C POP     {R3-R7,PC}
    ROM:021A0B5E ; ---------------------------------------------------------------------------
    ROM:021A0B5E
    ROM:021A0B5E loc_21A0B5E                             ; CODE XREF: sub_21A0A84+D4j
    ROM:021A0B5E MOVS    R0, #4
    ROM:021A0B60 POP     {R3-R7,PC}
    
    This check is done by sub_21A0A84. This fn is called for every Pokemon. It returns a value based off what the result of the check is.
    0 = attack
    1 = ??? (impossible)
    2 = Began to nap
    3 = Won't Obey
    4 = is loafing around

    Inputs:
    R0 (moved to R5) = pointer to trainer information
    R1 (moved to R7) = pointer to Pokemon information
  21. Bond697

    Bond697 Dies, died, will die.
    is a Pokemon Researcher

    Joined:
    Jun 20, 2010
    Messages:
    307
    wishmkr berries:

    Code:
    RAM:0201336E             loc_201336E                             ; CODE XREF: sub_20132F0+74j
    RAM:0201336E 60 1C                       ADDS    R0, R4, #1
    RAM:02013370 00 06                       LSLS    R0, R0, #0x18
    RAM:02013372 04 0E                       LSRS    R4, R0, #0x18
    RAM:02013374 03 2C                       CMP     R4, #3
    RAM:02013376 F1 D9                       BLS     loc_201335C
    RAM:02013378 FD F7 D8 F8                 BL      rand
    RAM:0201337C 03 21                       MOVS    R1, #3
    RAM:0201337E 01 F0 A5 F9                 BL      __divsi3
    RAM:02013382 01 21                       MOVS    R1, #1
    RAM:02013384 01 40                       ANDS    R1, R0
    RAM:02013386 00 29                       CMP     R1, #0
    RAM:02013388 0A D0                       BEQ     loc_20133A0
    RAM:0201338A 04 49                       LDR     R1, =byte_2018A08
    RAM:0201338C A9 20                       MOVS    R0, #0xA9
    RAM:0201338E 09 E0                       B       loc_20133A4
    RAM:0201338E             ; ---------------------------------------------------------------------------
    RAM:02013390 28 8A 01 02 off_2013390     DCD dword_2018A28       ; DATA XREF: sub_20132F0+Cr
    RAM:02013394 50 5C 00 03 dword_2013394   DCD 0x3005C50           ; DATA XREF: sub_20132F0+12r
    RAM:02013398 99 01 00 00 dword_2013398   DCD 0x199               ; DATA XREF: sub_20132F0+20r
    RAM:0201339C 08 8A 01 02 off_201339C     DCD byte_2018A08        ; DATA XREF: sub_20132F0+30r
    RAM:0201339C                                                     ; sub_20132F0+9Ar
    RAM:020133A0             ; ---------------------------------------------------------------------------
    RAM:020133A0
    RAM:020133A0             loc_20133A0                             ; CODE XREF: sub_20132F0+98j
    RAM:020133A0 0B 49                       LDR     R1, =byte_2018A08
    RAM:020133A2 AA 20                       MOVS    R0, #0xAA
    

    (rand() / 3) & 1 (yes, division)

    if 0, ganlon berry; if 1, salac berry (this might be backwards, i don't know the gen 3 item numbers very well)
  22. Bond697

    Bond697 Dies, died, will die.
    is a Pokemon Researcher

    Joined:
    Jun 20, 2010
    Messages:
    307
    korean white 2 nazos:

    209B62C
    203A501
    2200770
    22007C4
    22007C4
  23. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Initial Seed: A9805B34E5B774CA
    Nazo = 0x27a57b0, Second = 32, timer0 = 1666, vcount = ac, vframe = 8
  24. Kraalp

    Kraalp

    Joined:
    Jan 17, 2013
    Messages:
    1
  25. Slashmolder

    Slashmolder 'Ello Governor
    is a Programmer Alumnusis a Researcher Alumnus

    Joined:
    Mar 27, 2011
    Messages:
    278
    Initial seed: 3CC837C5A88EAD7B
    Nazo = 0x27a5ef0: Second = 32, timer0 = 187a, vcount = bc, vframe = 8

    Korean Black 2 DS Nazos:
    209B60C
    203A4D5
    2200750
    22007A4
    22007A4

    Credits to https://twitter.com/GayHerrington/status/292276612068700160

Users Viewing Thread (Users: 0, Guests: 1)