Past Gen RNG Research

chiizu

PPPPPPPPPPPPPPPPP RNG
is a Programmer Alumnusis a Top Researcher Alumnus
At the moment, we need volunteers with the corresponding language versions to help get DSi\3DS support for those games. Please post if you are able to help (and have lots of patience).
Actually just sent you a PM about this before seeing this post. I've got a volunteer for the German games lined up.
 
I can buy some different language games or consoles. What do you guys need. I am going to be super bored this winter.
 
Just wanted to throw a quick note of thanks to all involved in researching for your hard work.

Also, my shiny Misdreavus in a Battle CD in Pokemon XD doesn't provide any revelations in regards to shinies, does it?

I was going to volunteer to take a snapshot, but I believe that the data on my GC memory cards was all lost. I'll check tomorrow when I can, but I'm pretty sure it's gone =(
 

chiizu

PPPPPPPPPPPPPPPPP RNG
is a Programmer Alumnusis a Top Researcher Alumnus
German DSi/3DS Parameters.
Code:
German Black on EU 3DS:
Nazo: 0x027602f0
Timer0: 1165
VCount: 86
VFrame: 8

German White on EU 3DS (same hardware):
Nazo: 0x027602f0 (same as Black)
Timer0: 1260
VCount: 8D
VFrame: 8
Thank you to Kokoromori for doing the leg work to get the seeds. This guy was super consistent on his timing!

We still need volunteers for:
French
Italian
Korean
Spanish
 
I don't know if the two following routines have been already analyzed by somebody, but I'll post them

Feebas tiles determination in R/S/E

An unsigned 16bits number, called "feebas seed" is generated everyday, or when changing the "trendy phrase" in Dewford city. It is used to determine the feebas tiles.

The tiles are arranged like this : from left to right, then from up to down.
From tile #133, the order is modified : the row is in fact : #133, #134 etc ...
However, I cannot locate tiles #296 to #299 (included)





Oh, I have made some CBA codes to retreive the seed (and replacing the first party Pokémon's Attack stat), but I can't get them to work.

Code:
RS (U) 
88084AB4 2864
88084B78 4901
88084B7A 8008
88084B80 43BA
88084B82 0300

E (U)
880B49F6 2864
880B4ABC 4901
880B4ABE 8008
880B4AC4 4546
880B4AC6 0202
RS (J)
88081970 2864
88081A34 4901
88081A36 8008
88081A3C 56CC
88081A3E 0202

E(J) 
880B414E 2864
880B4214 4901
880B4216 8008
880B421C 5972
880B421E 0202

RS (FR)
88084FF0 2864
880850B4 4901
880850B6 8008
880850BC 59C6
880850BE 0202

E (FR)
880B4A0A 2864
880B4AD0 4901
880B4AD2 8008
880B4AD8 4546
880B4ADA 0202
Code:
08084AB0 0400     lsl     r0,r0,10h     ; this is at 0x080B49F2 in Emerald (U), 0x0808196C in R/S (J), 0x080B414A E (J), 0x08084FEC R/S (FR), 0x080B4A06 Emerald (FR)
08084AB2 0C00     lsr     r0,r0,10h
08084AB4 2831     cmp     r0,31h        ; see post #749
08084AB6 D907     bls     8084AC8h      
08084AB8 E03E     b       8084B38h      ; if the calculated slot is not feebas's ([0;49]), skip the feebas tile determination routine
08084ABE 0202     lsl     r2,r0,8h                                
08084AC0 DC00     bgt     8084AC4h       ; DIFFERENT ON R/S JAP and FR                         
08084AC2 0839     lsr     r1,r7,20h                               
08084AC4 2001     mov     r0,1h         ; feebas = true                           
08084AC6 E038     b       8084B3Ah
                                
08084AC8 481F     ldr     r0,=2025734h  ; r0 = 0x03005D8C (pointer) in Emerald (U)                          
08084ACA 4B20     ldr     r3,=2DD6h     ; 0x2E6A in Emerald.                          
08084ACC 18C0     add     r0,r0,r3      ; 0x0202850A in R/S (U and FR), 0x02028896 E (U), 0x0202826A R/S (J), 0x02028542 E (J), 0x02028882 E (FR)                      
08084ACE 8800     ldrh    r0,[r0]		; load feebas seed on r0                                 
08084AD0 F000F850 bl      8084B74h      

	08084B74 0400     lsl     r0,r0,10h                               
	08084B76 0C00     lsr     r0,r0,10h                               
	08084B78 4901     ldr     r1,=202FF80h ; store r0 in 0x202FF80 (R/S U)                            
	08084B7A 6008     str     r0,[r1]  
	08084B7C 4770     bx      r14  
                     
08084AD4 2500     mov     r5,0h         ; r5 (loop counter) = 0;                          
08084AD6 4E1E     ldr     r6,=1BFh      ; r6 = 0x1BF                          
08084AD8 F000F83C bl      8084B54h 

	08084B54 4A04     ldr     r2,=202FF80h                             
	08084B56 6811     ldr     r1,[r2]       ; load full seed                          
	08084B58 4804     ldr     r0,=41C64E6Dh                           
	08084B5A 4348     mul     r0,r1                                   
	08084B5C 4904     ldr     r1,=3039h     ; 0x3039 [B]NOT[/B] 0x6073 !                          
	08084B5E 1840     add     r0,r0,r1                                
	08084B60 6010     str     r0,[r2]		; store full (u32) result of (0x41C64E6D * seed + 0x3039) at 0x202FF80                        
	08084B62 0C00     lsr     r0,r0,10h     ; r0 (output) >>= 16                           
	08084B64 4770     bx      r14
                               
08084ADC 0069     lsl     r1,r5,1h		; r1 = 0                                
08084ADE 466A     mov     r2,r13        ; r2 = sp                          
08084AE0 1854     add     r4,r2,r1      ; r4 = r2 + 0                          
08084AE2 0400     lsl     r0,r0,10h                               
08084AE4 0C00     lsr     r0,r0,10h                               
08084AE6 1C31     mov     r1,r6         ; r1 = 0x1BF                          
08084AE8 F15CFA0E bl      81E0F08h      ; r0 = r0 mod r1                          
08084AEC 8020     strh    r0,[r4]       ; store r0 ( tile ) on the stack                          
08084AEE 0400     lsl     r0,r0,10h                               
08084AF0 2800     cmp     r0,0h         ; if r0 is null                          
08084AF2 D100     bne     8084AF6h                 
08084AF4 8026     strh    r6,[r4]       ; store 0x1BF instead                          
08084AF6 8820     ldrh    r0,[r4]       ; load calculated feebas tile                          
08084AF8 3801     sub     r0,1h                                   
08084AFA 0400     lsl     r0,r0,10h                               
08084AFC 0C00     lsr     r0,r0,10h                               
08084AFE 2802     cmp     r0,2h         ; if tile is either 1,2, or 3, (unacessible) don't increment the loop, so generate new tiles number to be checked with                          
08084B00 D902     bls     8084B08h                                
08084B02 1C68     add     r0,r5,1                                 
08084B04 0600     lsl     r0,r0,18h                               
08084B06 0E05     lsr     r5,r0,18h     ; increment r5 by 1.                          
08084B08 2D06     cmp     r5,6h         ; if r5 < 6;                          
08084B0A D1E5     bne     8084AD8h      ; calculate another feebas tile to check with.                          
08084B0C 464B     mov     r3,r9                                 
08084B0E 2100     mov     r1,0h                                   
08084B10 5E58     ldsh    r0,[r3,r1]    ; r0 = rod->map.x                          
08084B12 4642     mov     r2,r8                                   
08084B14 2300     mov     r3,0h                                   
08084B16 5ED1     ldsh    r1,[r2,r3]    ; r1 = rod->map.y                          
08084B18 1C3A     mov     r2,r7                                   
08084B1A F7FFFF33 bl      8084984h      ; from (fishing) coordinates return current tile in r0            
              
08084B1E 0400     lsl     r0,r0,10h                               
08084B20 0C01     lsr     r1,r0,10h                               
08084B22 2500     mov     r5,0h                                   
08084B24 0068     lsl     r0,r5,1h                                
08084B26 4468     add     r0,r13        ; r0 = sp                           
08084B28 8800     ldrh    r0,[r0]                                 
08084B2A 4281     cmp     r1,r0         ; is the current tile a feebas tile ?  SET A BREAKPOINT THERE TO SEE THE CURRENT TILE AND ALL YOUR FEEBAS TILES.
										; in emerald, this opcode is located at 0x080B4A6C (U)                        
08084B2C D0CA     beq     8084AC4h		; if so, feebas = true                          
08084B2E 1C68     add     r0,r5,1       ; increment r5                          
08084B30 0600     lsl     r0,r0,18h                               
08084B32 0E05     lsr     r5,r0,18h                               
08084B34 2D05     cmp     r5,5h                                   
08084B36 D9F5     bls     8084B24h      ; if r5 <= 5 increment                        
08084B38 2000     mov     r0,0h         ; The current tile is not a feebas tile (feebas = false)                         
08084B3A B004     add     sp,10h                                  
08084B3C BC18     pop     r3,r4                                   
08084B3E 4698     mov     r8,r3                                   
08084B40 46A1     mov     r9,r4                                   
08084B42 BCF0     pop     r4-r7                                   
08084B44 BC02     pop     r1                                      
08084B46 4708     bx      r1
In other words :
Code:
inline u32 RNG(u32 seed){
    return (0x41C64E6D * seed + 0x3039)
}

bool isFeebasTile(u16 feebasSeed, u16 currentTile){
    u32 fullRNGResult = (u32) feebasSeed, i = 0;
    u16 tile = 0;
    while(i <=5){ // Not exactly done this way, but equivalent
        fullRNGResult = RNG(fullRNGResult);
        tile = ((fullRNGResult >> 16) & 0xFFFF % 0x1BF);
        if (tile >= 4) i++;
        if (tile == currentTile) return true;
    }
    return false;
}

Munchlax trees determination

Code:
021F5138 B5F8     push    r3-r7,r14		                               
021F513A 1C0C     mov     r4,r1         ; r4 = current slathered tree                          
021F513C 0E02     lsr     r2,r0,18h		; r0 = SIDTID. For example r0 = 0x78CA5E96 when TID = 0x5E96 and SID = 0x78CA                      
021F513E A900     add     r1,sp,0h      ; r1 = sp                          
021F5140 700A     strb    r2,[r1]       ; set (SID >> 16) & 0xFF on the stack                          
021F5142 0C02     lsr     r2,r0,10h                               
021F5144 704A     strb    r2,[r1,1h]    ; set SID & 0xFF on the stack (+1)                          
021F5146 0A02     lsr     r2,r0,8h                                
021F5148 708A     strb    r2,[r1,2h]    ; set (TID >> 16) & 0xFF on the stack (+2)                          
021F514A 70C8     strb    r0,[r1,3h]    ; set TID & 0xFF on the stack (+3)
                          
021F514C 7808     ldrb    r0,[r1]       ; for each byte of the SID then the TID (byte #0)                         
021F514E 2115     mov     r1,15h                                  
021F5150 F6F6ED96 blx     20EBC80h		                               
021F5154 A800     add     r0,sp,0h                                
021F5156 7001     strb    r1,[r0]       ; store : byte mod 0x15 (=21). It corresponds to a tree number.                       
021F5158 7840     ldrb    r0,[r0,1h]    ; same order than precedently (byte #1)                         
021F515A 2115     mov     r1,15h                                  
021F515C F6F6ED90 blx     20EBC80h                                
021F5160 A800     add     r0,sp,0h                                
021F5162 7041     strb    r1,[r0,1h]                              
021F5164 7880     ldrb    r0,[r0,2h]    ; byte #2                          
021F5166 2115     mov     r1,15h                                  
021F5168 F6F6ED8A blx     20EBC80h                                
021F516C A800     add     r0,sp,0h                                
021F516E 7081     strb    r1,[r0,2h]                              
021F5170 78C0     ldrb    r0,[r0,3h]    ; byte #3                          
021F5172 2115     mov     r1,15h                                  
021F5174 F6F6ED84 blx     20EBC80h                                
021F5178 A800     add     r0,sp,0h                                
021F517A 70C1     strb    r1,[r0,3h]    
                          
021F517C 2000     mov     r0,0h         ; r0 = 0                          
021F517E 2301     mov     r3,1h         ; r3 = 1                          
021F5180 A900     add     r1,sp,0h      ; r1 = sp                          
021F5182 1C02     mov     r2,r0         ; r2 = 0                          
021F5184 1C15     mov     r5,r2         ; r5 = 0                          
021F5186 2B00     cmp     r3,0h         ; if r3 <= 0, r3++                           
021F5188 D90E     bls     21F51A8h                                
021F518A 5D4F     ldrb    r7,[r1,r5]                              
021F518C 5CCE     ldrb    r6,[r1,r3]    ; load two tree IDs                          
021F518E 42B7     cmp     r7,r6         ; if a same tree is chosen two times                         
021F5190 D105     bne     21F519Eh                                
021F5192 1C76     add     r6,r6,1       ; increment the second one                          
021F5194 54CE     strb    r6,[r1,r3]    ; store it                          
021F5196 5CCE     ldrb    r6,[r1,r3]    ; reload it                          
021F5198 2E15     cmp     r6,15h        ; if the chosen tree, r6, has an ID >= 21 (tree #21 doesn't exist)                          
021F519A D300     bcc     21F519Eh                                
021F519C 54C8     strb    r0,[r1,r3]    ; store 0 instead                          
021F519E 1C6D     add     r5,r5,1       ; r5++                          
021F51A0 062D     lsl     r5,r5,18h                               
021F51A2 0E2D     lsr     r5,r5,18h                               
021F51A4 429D     cmp     r5,r3         ; if r5 >= r3                          
021F51A6 D3F0     bcc     21F518Ah                                
021F51A8 1C5B     add     r3,r3,1       ; r3 ++                           
021F51AA 061B     lsl     r3,r3,18h                               
021F51AC 0E1B     lsr     r3,r3,18h                               
021F51AE 2B04     cmp     r3,4h         ; (if r3 >= 4, stop comparing trees)                          
021F51B0 D3E8     bcc     21F5184h      ; r5 = 0
										; r5 will take the following values : 0 0 1 0 1 2
										; r3 will take the following ones   : 1 2 2 3 3 3                          
021F51B2 2200     mov     r2,0h         ; r2 = 0                          
021F51B4 A900     add     r1,sp,0h      ; r1 = sp                          
021F51B6 5C88     ldrb    r0,[r1,r2]    ; load each tree ID                          
021F51B8 4284     cmp     r4,r0         ; is the tree being slathered a Munchlax one ?                          
021F51BA D101     bne     21F51C0h      ; if not ...                          
021F51BC 2001     mov     r0,1h         ; if the tree being slathered is a Munchlax tree, stop comparing, and return 1                          
021F51BE BDF8     pop     r3-r7,r15                               
021F51C0 1C50     add     r0,r2,1                                 
021F51C2 0600     lsl     r0,r0,18h                               
021F51C4 0E02     lsr     r2,r0,18h     ; ... increment r2                           
021F51C6 2A04     cmp     r2,4h         ; if r2 >= 4 stop comparing                          
021F51C8 D3F5     bcc     21F51B6h                                
021F51CA 2000     mov     r0,0h         ; and return 0                          
021F51CC BDF8     pop     r3-r7,r15
In other words :

Code:
bool isMunchlaxTree(u8 currentTree, u16 TID, u16 SID) //Not done this way, but equivalent      
        u8 trees[4];
	for(u8 num = 0;num < 2; num++){
		trees[num]= ((sid >> ((1-num) * 8)) & 0xFF) % 0x15;
		trees[num+2]= ( (tid >> ( (1-num) * 8)) & 0xFF) % 0x15; 
	}
	u8 i = 0, j = 1, k = 0;
	while(j < 4){
		if(trees[i] == trees[j])
			if(++trees[j] == 21) trees[j] = 0;
		if(++i == j){
			i = 0;
			j++;
		}
	}
        while(k < 4){
                if(currentTree == trees[k]) return true;
                k++;
        }
        return false;
}
 
At the moment, we need volunteers with the corresponding language versions to help get DSi\3DS support for those games. Please post if you are able to help (and have lots of patience).
Hi! I can help you to add DSi Spanish support. I understand basic english. Tell me the steps and I will give you the results as soon as possible.
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
I can't believe I didn't think of this sooner. We don't need to give ourselves a headache by messing around with a New Game and multiple trainer ID possibilities in order to calculate an initial seed for DSi research.

We just need to get people to catch just two wild Pokemon on sequential PIDRNG frames, that have the IVs of the initial IVRNG seed. That is all we need to calculate the initial seed, and we know both Pokemon come from the same timer0 because of the IVs.

New procedure:
You will need
- A Chatot (remember to record a Chatter first)
- A Sweet Scenter
- to save your game in a cave with no NPCs (like the top of Victory Road)
- your MAC address (instructions for 3DS)

1) Change your DSi\3DS clock to 12\11\2011 and change the clock to 10:15. Start the game from the DSi\3DS menu at 10:15:25.

2) Get in the game (do not turn on the C-Gear), and use Sweet Scent to capture a Pokemon. Check its IVs and save the game.

3) Repeat step 1. This time, do ONE Chatter flip. Then use Sweet Scent again to capture a Pokemon.

4) Check the IVs of the second Pokemon. If they are the same as the first Pokemon, save your game. If not, repeat step 3.

5) Trade me both Pokemon. Tell me which one is first and which one is second.
 
Hi OmegaDonut. Here are the Pokémon:

WHITE




Characteristics:

  • Spanish DSi --> MAC Address: 0024F3FCE2C2
  • Pokémon White Version (Spanish)
  • Giant Chasm (Inner Cave)
  • Pressing A button in DSi menu to run the game at December 11th ,2011 at 10:15:25 (maybe 10:15:26, but I do not think so)
  • I transferred Pokémon to computer using IR-GTS-BW.
BLACK





Characteristics:


  • Spanish DSi --> MAC Address: 0024F3FCE2C2
  • Pokémon Black Version (Spanish)
  • Mistralton Cave (Guidance Chamber)
  • Pressing A button in DSi menu to run the game at December 11th 2011, 10:15:25 (maybe 10:15:26, but I do not think so)
  • I transferred Pokémon to computer using Pokécheck.
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
That's perfect! Yes, it would be great if you could do the same for Black, because Black and White could RNG differently.

chiizu:
AdroMaster's initial seed for Spanish White is 83FA39C71957E373.
For Spanish Black it's 29F0C5F9E14ED208.
 

chiizu

PPPPPPPPPPPPPPPPP RNG
is a Programmer Alumnusis a Top Researcher Alumnus
chiizu:
AdroMaster's initial seed for Spanish White is 83FA39C71957E373.
For Spanish Black it's 29F0C5F9E14ED208.
My Internet connection has been kind of flaky for the last day, but anyway just confirming that the search is started. I don't have time to babysit it, so I set it to search a wider than usual search space. I expect there will be some results when I get home this evening (Japan time).

Edit:
Nothing found yet in the close range of other known values for seconds 25, 26, or 27, though still plenty to cover. I just wanted to check regarding the seeds, since I'm assuming you're using the PIDs in this process. Is the wild encounter PID modification is being accounted for?
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
My Internet connection has been kind of flaky for the last day, but anyway just confirming that the search is started. I don't have time to babysit it, so I set it to search a wider than usual search space. I expect there will be some results when I get home this evening (Japan time).

Edit:
Nothing found yet in the close range of other known values for seconds 25, 26, or 27, though still plenty to cover. I just wanted to check regarding the seeds, since I'm assuming you're using the PIDs in this process. Is the wild encounter PID modification is being accounted for?
Yeah. I took the PIDs, XOR'd both by 0x10000, then tested all possible combinations with the PIDs XOR'd by 0x80000000 and not.

Example with Boldore (PID 4466412A) and Axew (PID CF77155F)
Code:
Set 1 = a & b
4467412A4B4F0374
4467412AC22843FD
Set 2 = a & b (XOR'd)
4467412A18D16D07 <- seed, when rolled back matches the IVs obtained
Set 3 = a (XOR'd) & b
C467412A18D16D07
Set 4 = a (XOR'd) & b (XOR'd)
C467412A4B4F0374
C467412AC22843FD
 

chiizu

PPPPPPPPPPPPPPPPP RNG
is a Programmer Alumnusis a Top Researcher Alumnus
Seeds matched on second 28, a longer delay than I would expect for a start on 25 on a DSi.

Code:
White
Nazo: 0x027601f0
Timer0: 1277
VCount: 8e
VFrame: 8

Black
Nazo: 0x027601f0
Timer0: 127a
VCount: 8e
VFrame: 8
 
My friend will borrow me a 3DS to make the procedure. When I finish it, I will post the results in the same way that DSi. Probably tomorrow (Saturday).
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
My friend will borrow me a 3DS to make the procedure. When I finish it, I will post the results in the same way that DSi. Probably tomorrow (Saturday).
That is not necessary. Since you gave us DSi information, that will work for a 3DS as well.
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
Entralink PID Calculation

As Bond showed us earlier, the PIDs of Entralink Pokémon have the lower byte zeroed out and replaced with an unknown random value that forces a Pokémon to be either male or female, depending on the Pokémon caught in the Dream World. Bond and I did some debugging yesterday and uncovered more of the mystery:

(Gender threshold comes from the table of gender values listed here.)

Code:
For genderless Pokémon:
0 Initial
1 PID
5 Nature
No other modifications.

For all-male Pokémon such as Tyrogue:
0 Initial
1 PID
2 PID lower byte ((u32 * 0xF6 >> 32) + 8)
6 Nature

For all-female Pokémon such as Kangaskhan:
0 Initial
1 PID
2 PID lower byte ((u32 * 0x8 >> 32) + 1)
6 Nature

For all other males:
0 Initial
1 PID
2 PID lower byte ((u32 * (0xFE - gender threshold) >> 32) + gender threshold
6 Nature

For all other females:
0 Initial
1 PID
2 PID lower byte ((u32 * (gender threshold - 1) >> 32) + 1
6 Nature
We still don't know how the game determines whether an EL PID is XOR'd with 0x10000 or not. The game ANDs the PID with 0x10000. If the result is 0x10000, it XORs it with 0x10000.

Code:
RAM_ARM9:02018796 00 04    LSLS    R0, R0, #0x10  	#creates 0x10000
RAM_ARM9:02018798 22 1C    MOVS    R2, R4
RAM_ARM9:0201879A 02 40    ANDS    R2, R0  		#ANDs 0x10000 with the PID
RAM_ARM9:0201879C 09 04    LSLS    R1, R1, #0x10  	#blanks R1
RAM_ARM9:0201879E 8A 42    CMP     R2, R1  		#if R2 = 0...
RAM_ARM9:020187A0 00 D0    BEQ     loc_20187A4  	#skip ahead, else
RAM_ARM9:020187A2
RAM_ARM9:020187A2                                  @ CODE XREF: createPKM__+9Aj
RAM_ARM9:020187A2 44 40    EORS    R4, R0		#XOR the PID with the result in R0, which is 0x10000
RAM_ARM9:020187A4
RAM_ARM9:020187A4                                  @ CODE XREF: createPKM__+70j
EDIT: It looks like the PID calculation is still incorrect for species that don't have a 50\50 gender ratio. Fixed. I didn't notice the 254 - gender value part.
 

ΩDonut

don't glaze me bro
is a Programmer Alumnusis a Forum Moderator Alumnusis a Top Researcher Alumnusis a Top Contributor Alumnus
Kaphotics was testing the 3rd Gen Shiny Egg feature in (the yet unreleased) RNG Reporter 9.93, but found that none of the spreads he saw matched the IV inheritance he saw here. This really shouldn't come as a surprise to anyone by now, but Ruby\Sapphire also has a "split" breeding method like Emerald does. For split egg frames, the base IVs come from a Method 4 frame (which was what was programmed into RNG Reporter), while Kaphotics only saw Method 1 frames.
 

Kaphotics

Remodeling Kitchens
is a Top Researcher Alumnusis a Top Contributor Alumnus
RuSa Inheritance Spreads (Reference)

Code:
Frame	Time	U16	Spread
1876	0:31.26	CE14	30 / [color="white"]0[/color]6 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
3469	0:57.81	948F	30 / 14 / 30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]A[/color]
3617	1:00.28	C157	30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / [u]31[/u] / 30 / [color="RoyalBlue"]B[/color]
3710	1:01.83	CAC8	 [color="RoyalBlue"]A[/color] / [color="white"]0[/color]6 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / 30 / [u]31[/u]
4100	1:08.33	9A6B	30 / [color="white"]0[/color]7 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
4389	1:13.15	A30C	 [color="RoyalBlue"]B[/color] / [color="white"]0[/color]7 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30
6324	1:45.40	B045	 [color="RoyalBlue"]A[/color] / 30 / 30 /  [color="RoyalBlue"]A[/color] / 30 / [color="RoyalBlue"]A[/color]
6672	1:51.20	C100	 [color="RoyalBlue"]A[/color] / 14 / 30 /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
6772	1:52.86	8F25	 [color="RoyalBlue"]A[/color] / [color="white"]0[/color]7 / [u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
6929	1:55.48	5E47	 [color="RoyalBlue"]B[/color] / 23 / 30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / 30
7200	2:00.00	F597	 [color="RoyalBlue"]A[/color] / 18 / [u]31[/u] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
8174	2:16.23	083D	30 / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
8632	2:23.86	13F2	 [color="RoyalBlue"]A[/color] / [u]31[/u] / 30 /  [color="RoyalBlue"]B[/color] / 30 / [color="RoyalBlue"]A[/color]
10059	2:47.65	4080	30 / [color="white"]0[/color]6 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u]
11181	3:06.35	188D	30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 /  [color="RoyalBlue"]A[/color] / [u]31[/u]
13316	3:41.93	03AD	 [color="RoyalBlue"]A[/color] / 30 / 30 /  [color="RoyalBlue"]B[/color] / 30 / [color="RoyalBlue"]B[/color]
14102	3:55.03	3056	 [color="RoyalBlue"]B[/color] / 26 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u]
14871	4:07.85	202F	 [color="RoyalBlue"]A[/color] / 23 / [u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
15743	4:22.38	D380	[u]31[/u] / 22 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / [u]31[/u]
16248	4:30.80	13C3	 [color="RoyalBlue"]B[/color] / 11 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]B[/color] / [u]31[/u]
16560	4:36.00	7D0B	[u]31[/u] / 22 /  [color="RoyalBlue"]B[/color] / 30 /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]B[/color]
17733	4:55.55	C216	 [color="RoyalBlue"]B[/color] / 19 / 30 /  [color="RoyalBlue"]B[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
18825	5:13.75	72F9	 [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [u]31[/u] / [u]31[/u] / [color="RoyalBlue"]B[/color]
20343	5:39.05	5E2A	[u]31[/u] / 14 / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
21929	6:05.48	74DC	 [color="RoyalBlue"]A[/color] / 26 / [u]31[/u] / 30 /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
25728	7:08.80	7643	 [color="RoyalBlue"]B[/color] / [u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / 30 / [color="RoyalBlue"]A[/color]
26498	7:21.63	8985	 [color="RoyalBlue"]B[/color] / 15 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 / 30
27749	7:42.48	585E	 [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [u]31[/u]
28509	7:55.15	9FE5	[u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / 30 / [color="RoyalBlue"]B[/color]
30230	8:23.83	BC1F	[u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / 30
30564	8:29.40	AD57	30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / 30 / [u]31[/u] / [color="RoyalBlue"]A[/color]
30665	8:31.08	CADA	[u]31[/u] / 22 / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
32099	8:54.98	A64E	 [color="RoyalBlue"]A[/color] / 19 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 / [u]31[/u]
33028	9:10.46	A468	30 / 23 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [u]31[/u] / [color="RoyalBlue"]A[/color]
Code:
Frame	Time	U16	Spread		
1876	0:31.26	CE14	30 / [color="white"]0[/color]6 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
2693	0:44.88	2D7F	 [color="RoyalBlue"]A[/color] / [color="white"]0[/color]7 /  [color="RoyalBlue"]B[/color] / 30 / [u]31[/u] / [color="RoyalBlue"]A[/color]
3282	0:54.70	34EE	[u]31[/u] / [color="white"]0[/color]3 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [color="RoyalBlue"]A[/color]
3324	0:55.40	F1C9	30 / 30 /  [color="RoyalBlue"]B[/color] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]B[/color]
3469	0:57.81	948F	30 / 14 / 30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]A[/color]
3865	1:04.41	0DB0	[u]31[/u] / 23 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
4100	1:08.33	9A6B	30 / [color="white"]0[/color]7 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
5660	1:34.33	722D	[u]31[/u] / [color="white"]0[/color]6 /  [color="RoyalBlue"]B[/color] / 30 /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]A[/color]
6600	1:50.00	626B	 [color="RoyalBlue"]B[/color] / 27 /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / [u]31[/u]
6957	1:55.95	39C2	[u]31[/u] / 23 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]A[/color]
8070	2:14.50	ED4F	 [color="RoyalBlue"]B[/color] / 26 /  [color="RoyalBlue"]B[/color] / [u]31[/u] / [u]31[/u] / [color="RoyalBlue"]A[/color]
8889	2:28.15	E47A	 [color="RoyalBlue"]B[/color] / 18 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / 30 / 30
8998	2:29.96	A8B4	 [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]A[/color] / 30 / 30 / [color="RoyalBlue"]B[/color]
9357	2:35.95	C649	 [color="RoyalBlue"]B[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30 / 30 / [color="RoyalBlue"]B[/color]
10655	2:57.58	C69A	 [color="RoyalBlue"]A[/color] / 23 /  [color="RoyalBlue"]B[/color] / [u]31[/u] / 30 / [color="RoyalBlue"]B[/color]
10748	2:59.13	1B69	 [color="RoyalBlue"]A[/color] / [color="white"]0[/color]6 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / 30 / 30
11182	3:06.36	881E	 [color="RoyalBlue"]B[/color] / 18 /  [color="RoyalBlue"]B[/color] / 30 /  [color="RoyalBlue"]A[/color] / [u]31[/u]
11520	3:12.00	C651	30 / 26 /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
12904	3:35.06	4D73	[u]31[/u] / 23 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 / [color="RoyalBlue"]A[/color]
13951	3:52.51	AE1C	 [color="RoyalBlue"]A[/color] / 14 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]B[/color] / [u]31[/u]
14540	4:02.33	0E07	 [color="RoyalBlue"]B[/color] / 18 / [u]31[/u] / 30 /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
14633	4:03.88	10C9	 [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30
16199	4:29.98	499A	 [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]B[/color] / [u]31[/u]
16352	4:32.53	C405	 [color="RoyalBlue"]A[/color] / 27 / 30 / 30 /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]B[/color]
18621	5:10.35	9AC0	 [color="RoyalBlue"]A[/color] / 19 / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u]
19999	5:33.31	3F37	 [color="RoyalBlue"]A[/color] / [color="white"]0[/color]7 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 / 30
20228	5:37.13	1671	30 / 26 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
20343	5:39.05	5E2A	[u]31[/u] / 14 / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]A[/color]
20499	5:41.65	ADF7	[u]31[/u] / 19 /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]A[/color]
20649	5:44.15	7391	 [color="RoyalBlue"]A[/color] / 11 /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]A[/color] / 30
21251	5:54.18	280D	30 / [color="white"]0[/color]3 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / 30
22360	6:12.66	22BD	 [color="RoyalBlue"]B[/color] / 10 /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / [u]31[/u]
23039	6:23.98	2F20	30 / 14 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30
25911	7:11.85	E6C0	[u]31[/u] / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [color="RoyalBlue"]B[/color]
26173	7:16.21	7A04	[u]31[/u] /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] /  [color="RoyalBlue"]B[/color] / 30
30538	8:28.96	7586	 [color="RoyalBlue"]B[/color] / [color="white"]0[/color]7 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / 30 / 30
30665	8:31.08	CADA	[u]31[/u] / 22 / 30 /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [color="RoyalBlue"]B[/color]
31073	8:37.88	51FC	 [color="RoyalBlue"]A[/color] / 19 /  [color="RoyalBlue"]B[/color] / [u]31[/u] / 30 / [color="RoyalBlue"]A[/color]
31730	8:48.83	C7C0	 [color="RoyalBlue"]A[/color] / 15 /  [color="RoyalBlue"]A[/color] / 30 /  [color="RoyalBlue"]A[/color] / 30
33143	9:12.38	788B	30 / 14 / 30 /  [color="RoyalBlue"]A[/color] /  [color="RoyalBlue"]B[/color] / [color="RoyalBlue"]B[/color]
Alternate spread was recently added to RNG Reporter; don't feel like making another list.
There's only one flawless spread for Alternate Inheritance in the first 10 minutes.

Flawless Spreads:

Code:
18825	5:13.75    72F9	 [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color] / [u]31[/u] / [u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]B[/color]
Note: Split Spread

23746	06:35.8    F0DB	 [color="RoyalBlue"]A[/color] / [u]31[/u] / [u]31[/u] / [u]31[/u] /  [color="RoyalBlue"]B[/color] /  [color="RoyalBlue"]A[/color]
Note: Alternate Spread
 
I've RNG bred several pokemon on my retail Ruby cart, and most of the spreads I've seen use the inheritance from HGSS breeding 3 frames (not 4) after the Method 1 frame the base IVs come from. I have also seen spreads like the non-split ones Kaphotics listed.
I think the base IVs I've been seeing may have come from Method 2. I'm not experienced with Emerald egg abuse, but is this similar to its Alternate Inheritance?
 

Kaphotics

Remodeling Kitchens
is a Top Researcher Alumnusis a Top Contributor Alumnus
If people are looking to help research, you can chip in observations or data from gen3/4/5. We forgot about these abilities and their generation effects.

Code:
[s]Cute Charm		66.7% chance to encounter opposite gender[/s] - done 100%!
Vital Spirit		50% chance for Higher Level Pokemon to be summoned.
Intimidate/Keen Eye	decreases the chance of encountering a lower-level wild Pokémon by 50%. 
Magnet Pull		50%+ Chance for Steel Type
Static			50%+ Chance for Electric Type
Possible Theories:

Cute Charm -- Might reinitiate the PID routine again, either ignoring the predefined Nature or not. Or, it can modify the PID (unlikely).
Vital Spirit -- Either Inflates the default levels, or Selects higher level slots. Probably inflates levels.
Intimidate/Keen Eye -- See above.
u16%(maxlevel-minlevel)+minlevel - - - base calc

Magnet Pull -- Replaces certain slots with a different table, or only selects from valid slots if the calc passes. Probably the latter.
Static -- Same as above.

Open for research, this may allow different spreads to be hit in the same effect of a synchronizer. Emerald (no RSFRLG) onward.
 

Hozu

RNGenius
is a Contributor Alumnus
Some results with encounters in Emerald with an Intimidate pokemon in the lead slot :

I know 50 results is extremely low but if not a single pokemon is lower than the range given in the encounter slot info I'm willing to bet that Intimidate doesn't simply lower the levels of the encounters when it kicks in.

This was done on a retail cart btw so I can't tell what method was used for the encounters btw. Tomorrow I will take a look at Petalburg Woods on an emulator for some more information.
 

Kaphotics

Remodeling Kitchens
is a Top Researcher Alumnusis a Top Contributor Alumnus
Petalburg Woods with Vigoroth (Vital Spirit)

Code:
PETALBURG WOODS	
POOCHYENA	5	0	
WURMPLE		5	1
SHROOMISH	5	2
POOCHYENA	6	3
SILCOON		5	4
CASCOON		5	5
WURMPLE		6	6
SHROOMISH	6	7
TAILLOW		5	8
SLAKOTH		5	9
TAILLOW		6	10
SLAKOTH		6	11

Frame	Occidentary	Time	Slot	PID		Nature	Ability	HP	Atk	Def	SpA	SpD	Spe
1120	1124		0:18.66	4	2A07B5D6	Quirky	0	29	5	11	6	25	13

Slot7 received (6 Shroomish)
Slot4 is normal (5 Silcoon)

Frame	Occidentary	Time	Slot	PID		Nature	Ability	HP	Atk	Def	SpA	SpD	Spe
1121	1127		0:18.68	1	64CD2CBD	Impish	1	3	17	17	3	27	8	

Slot4 received (5 Wurmple)
Slot1 is normal (5 Wurmple)

Frame	Occidentary	Time	Slot	PID		Nature	Ability	HP	Atk	Def	SpA	SpD	Spe
1122	1138		0:18.70	11	C124057D	Naive	1	8	14	28	10	9	27

Slot1 received (5 Wurmple)
Slot11 is normal (6 Slakoth)

Frame	Occidentary	Time	Slot	PID		Nature	Ability	HP	Atk	Def	SpA	SpD	Spe
1123	1151		0:18.71	0	D6F4F7B9	Hardy	1	17	12	26	15	18	31

Slot11 received (6 Slakoth)
Slot0  is normal (5 Poochyena)
Wow, Method H works like a charm. With an emulator I got 4 sequential H-2 frames observed, no problem at all.

With these frames I don't see any preference on levels. Upon analysis of these 4 frames, you can see that the Slot of the next frame is what is received.

How is this done? The level calc (in between ESV and Nature) takes an extra calc, most likely. This calc may just amplify the determined level by a small amount, but at these small levels, there won't be any difference if the multiplication is *1.05 etc. Or maybe it doesn't work because of bad programming. We'll see!

It DEFINITELY changes slot / spread options, which REALLY makes this advantageous. Think of it as "changing" the possible slots of a spread!

Code:
n     - Initial
n + 1 - Battle
n + 2 - ESV
n + 3 - Level/Buffer
n + 4 - Buffer/Level
n + 5 - Nature

PIDloop
IV
IV
Basically another calc in between ESV and Nature, but there's still a level calc involved. Here's my guess - pass 50% to bias the level calc to higher numbers; kinda like sync. For now we don't care what the calc is, but we just need to know it operates with another calc in between ESV/Nature.
 
I've been meaning to test Cute Charm for awhile (mainly to see if I can use my female adamant spread to catch a male ralts) so when I saw Reject's post I leapt into action.

English (US) HG rom used.
Memory viewer used to find my seed (40160205)
Pokemon were caught in Ilex Forest while riding the bike.
Female CC Igglybuff, standard Oddish SweetScenter and a boring Skiploom were used.
The Zubats are available below as PKM. files if anyone more knowledgable wants to look at them under different programs.

Zubat caught with Skiploom lead.
Zubat caught with CC Iggly lead.
Another zubat caught with Iggly Lead. (1 irwin call used to advance frame)

Note that Legal.exe lists the CCed Zubats as unknown/hacked, i'll be testing some more later (getting late here) but it looks to me like Cute Charm modifies the PID, not just causes a re-roll.
 

Kaphotics

Remodeling Kitchens
is a Top Researcher Alumnusis a Top Contributor Alumnus
0x000000A3 first CC zubat,
IVs appeared Method 1 frame 2.
0x000000A5 second CC zubat
IVs appeared as Method 1 frame 3.

what the @$*# is this &*@%? Those are the most grotesque PID's I've ever seen.

Either way, it's a PID method akin to Chain Shiny. When it's convenient, can you keep going until you find a fail? So far all dem zubats have passed. Cool stuff!
 

Users Who Are Viewing This Thread (Users: 1, Guests: 1)

Top