|
|||||||
![]() |
|
|
Thread Tools |
|
|
#851 |
|
sometimes experimentation begins with "let's multi battle strip pokémon"
![]() ![]() ![]()
Moderator
Join Date: Aug 2006
Posts: 3,691
|
It looks like Cute Charm forces the PID to be a value between 0-255 (the gender value). That means 24 of of the PID's bits are going to be constant. Since three of the bits don't matter to shininess, that leaves only 5 bits to worry about.
In other words, with the right ID\SID, Cute Charm could force shinies to appear with a 1\32 probability. EDIT: Seems to be for DPPtHGSS only. In 5th gen, PID generation works like Entralink generation, except the nature comes from a different frame. Last edited by ΩDonut; Dec 21st, 2011 at 2:09:49 AM. |
|
|
|
|
|
#852 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
Cute Charm in Generation III (Emerald Only)
Stage 0 - Unformatted Raw Data
Stage 1 - Data Consolidation
Stage 2 - Pattern Recognition
Stage 3 - Final Analysis
Altered Call Structure Code:
n - ????? n + 1 - Battle (?) n + 2 - ESV n + 3 - CuteCharm n + 4 - Level n + 5 - Nature Code:
after ESV, before level
U16 % 3 , if [1 or 2] pass, else fail (0).
If Passed,
PID finding loop satisfies gender and nature!
If Failed,
PID finding loop satisfies nature only.
IVs generated the same, but for the end user
PIDIV may be preferential to Method H1/H2.
Last edited by Kaphotics; Dec 23rd, 2011 at 9:54:25 PM. Reason: :DDDDDD |
|
|
|
|
|
#853 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
Cute Charm in HGSS
Code:
n - Initial
n + 1 - u16 % 0x64 = ESV
n + 2 - u16 % 0x03 = CuteCharm
n + 3 - u16 % 0x19 = Nature#
With Nature# -> Form PID
Buffer [0x96 for 50/50]
(such that Buffer%0x19=0, still above GV)
+ Nature#
n + 4 - IV
n + 5 - IV
Debuggers are for the weak.
Last edited by ΩDonut; Dec 22nd, 2011 at 6:31:52 PM. Reason: :D |
|
|
|
|
|
#854 |
|
Join Date: Sep 2010
Posts: 576
|
8 more PKM for you, Female CC Iggly used for all of them, same seed and stuff as before, these are all from sequential frames (last nights Zubats were from frames 2 and 3, these are 4-11) these were all caught during Daytime ingame.
#1. 2 frames advanced by date rollover. #2. ^+1 frame advanced by Irwin call. #3. ^etc. #4. #5. #6. #7. #8. I can catch some more if you still need. EDIT: From what I can see CC advances the RNG by 1 (activation check?) as even when I got normal pokemon they were 1 frame off from what I should have gotten. It also looks like when CC activates it uses current method K frame for ES, current method 1 for IVs, next method K for nature and IDK what for PID. EDIT#2: Proof that cute charm is useful.
__________________
Colour-coded searchable list of released DW Pokemon. Chained shiny RNG on retail cart. Last edited by Dark Ray; Dec 21st, 2011 at 12:56:27 PM. |
|
|
|
|
|
#855 |
|
sometimes experimentation begins with "let's multi battle strip pokémon"
![]() ![]() ![]()
Moderator
Join Date: Aug 2006
Posts: 3,691
|
Cute Charm in DPPt
Code:
n - Initial n + 1 - u16 / 0x290 = ESV n + 2 - u16 / 0x5556 = Cute Charm check n + 3 - u16 / 0xA3E = Nature# this + buffer with a value such that %25 = 0 (if male) forms the PID n + 4 - IV n + 5 - IV Last edited by ΩDonut; Dec 22nd, 2011 at 8:02:52 PM. |
|
|
|
|
|
#856 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
So basically I forgot that Gen 4 games don't have the level calc for Land Pokemon (no level range in the slots).
Reasoning behind the Buffering of CuteCharm PIDs Code:
n - Battle
n + 1 - ESV
n + 2 - CuteCharm (P/F)
n + 3 - Nature
Pass -> Buffer Method for PID
Fail -> Loop Method (J/K) as usual
Code:
Game CuteCharm Nature DPPt High16 / 0x5556 High16 / 0xA3E HGSS High16 % 0x3 High16 % 0x19 (moving resulting nature up one frame, compared to current J/K) For HGSS (at least), the Buffer method adds a nonbiased buffer, whose %25 = 0. They can just add the nature value (0-24) to the buffer to get a valid PID within the Gender Range that has the intended Nature. Logic behind the calculation: Code:
PID = Buffer + Nature# PID%25 = Nature# PID%256 = Within Specified Gender Range Code:
Buffer > Threshold AND Buffer%25=0 Female Forced CuteCharm would be fine with a 0 buffer, because no matter the ratio, 0-24 will always be below it. 0/ For the other encounter types in which level has to be determined (another call needed), the CuteCharm calc would occur before (just like in Emerald). Last edited by Kaphotics; Jan 5th, 2012 at 1:15:48 AM. Reason: removed now-irrelevant implementation notes |
|
|
|
|
|
#857 |
|
Join Date: Dec 2011
Posts: 11
|
@OmegaDonut : I have made the procedure which is needed to calculate initial seed, with my French DSi and French White.
Here are the Pokémon. My DSi's MAC adress is EF-E7-51-E9-A3-4B. I launched my game at December 21st, 10:15:25. OD's Note to chiizu: C74B7FB378FBE9C9 is the initial seed he got I hope that will serve ^^ (even if I have neither a retail card of French Pokémon Black nor CycloDS iEvolution). Method H in the Safari Park in RSE In the Safari Park of RSE, if you have put a Pokéblock in the feeder where your player is, you'll get in 20 % of cases the Sync check (or directly a Pokémon with a random nature in RS); in the remaining 80 %, you'll get a Pokémon with a nature that likes the Pokéblock (if no nature likes the Pokéblock, goto Sync check). Here is the Pokéblock structure in RAM : Code:
typedef struct Pokeblock{
// In the following order :
u8 typeID;
s8 spicyLevel, dryLevel, sweetLevel, bitterLevel, sourLevel; // If a taste != 0, it is present in the Pokéblock
u8 feel; // If feel > 99, then feel = 99
u8 unknown;
// The global level is determined by the unsigned value of the highest taste level
}; Pokeblock
Code:
typedef struct NatureTastes{
// In this order :
s8 spicy, dry, sweet, bitter, sour;
/* A nature's taste value is :
-1 if the nature dislikes the taste
0 if the nature is indifferent to the taste
1 if the nature likes the taste
*/
}; NatureTastes
All negative Pokéblock tastes (if this would happen) are replaced by 0. Let : Code:
const NatureTastes tastesOfNature[25] = // ... ... ... ;
s32 doesThePokemonLikesTaste(u8 nature, Pokeblock const& pokeblock){
return pokeblock.spicyLevel * tastesOfNature[nature].spicy + pokeblock.dryLevel * tastesOfNature[nature].dry + pokeblock.sweetLevel * tastesOfNature[nature].sweet + pokeblock.bitterLevel * tastesOfNature[nature].bitter + pokeblock.sourLevel * tastesOfNature[nature].sour;
/*
If the result is negative, the Pokémon doesn't like the Pokéblock
If the result is zero, the Pokémon is indifferent to the Pokéblock. This is always the case for neutral natures (#0, #6, #12, #18, #24)
If the result is positive, the Pokémon likes the Pokéblock
*/
}
Code:
MethodH
ROM:080B4F26
ROM:080B4F26 arg_0 = 0
ROM:080B4F26
ROM:080B4F26 LSLS R2, R0, #8
ROM:080B4F28
ROM:080B4F28 loc_80B4F28 ; CODE XREF: sub_80B4E68+32j
ROM:080B4F28 ; sub_80B4E68+40j ...
ROM:080B4F28 BL chooseNature
ROM:080B4F2C LSLS R0, R0, #0x18
ROM:080B4F2E LSRS R0, R0, #0x18
ROM:080B4F30 LDR R1, =0x2024744
ROM:080B4F32 STR R0, [SP,#arg_0]
ROM:080B4F34 MOVS R0, R1
ROM:080B4F36 MOVS R1, R6
ROM:080B4F38 MOVS R2, R7
ROM:080B4F3A MOVS R3, #0x20
ROM:080B4F3C BL MethodH_BuildPkm ; 0x08067E96 not 0x08067E90
ROM:080B4F40
ROM:080B4F40 loc_80B4F40 ; CODE XREF: sub_80B4E68+B8j
ROM:080B4F40 ADD SP, SP, #0xC
ROM:080B4F42 POP {R4-R7}
ROM:080B4F44 POP {R0}
ROM:080B4F46 BX R0
ROM:080B4F46 ; End of function MethodH
Code:
ROM:080B4D78 ; =============== S U B R O U T I N E =======================================
ROM:080B4D78
ROM:080B4D78
ROM:080B4D78 chooseNature ; CODE XREF: sub_80B4E68:loc_80B4F02p
ROM:080B4D78 ; MethodH:loc_80B4F28p
ROM:080B4D78 PUSH {R4-R7,LR}
ROM:080B4D7A SUB SP, SP, #0x1C
ROM:080B4D7C BL isSafari ; Return 1 if player is in Safari Park, 0 otherwise
ROM:080B4D80 CMP R0, #1
ROM:080B4D82 BNE hasFirstPokemonSync ; If the player is not in the Safari Park, directly jump to the classic Method H's Sync check
ROM:080B4D84 BL PRNG
ROM:080B4D88 LSLS R0, R0, #0x10
ROM:080B4D8A LSRS R0, R0, #0x10
ROM:080B4D8C MOVS R1, #0x64
ROM:080B4D8E BL Mod
ROM:080B4D92 LSLS R0, R0, #0x10
ROM:080B4D94 LSRS R0, R0, #0x10
ROM:080B4D96 CMP R0, #0x4F
ROM:080B4D98 BHI hasFirstPokemonSync ; 80 % : do "Pokéblock to wild Pokémon nature"
ROM:080B4D98 ; 20 % : directly jump to the classic Sync check
ROM:080B4D9A BL isPkblckSet ; Return 0 if there isn't any Pokéblock put in the current zone's Pokéblock feeder.
ROM:080B4D9A ; Otherwise, return the the Pokéblock in the current zone's Pokéblock feeder structure's adress
ROM:080B4D9E MOVS R7, R0
ROM:080B4DA0 CMP R7, #0
ROM:080B4DA2 BEQ hasFirstPokemonSync
ROM:080B4DA4 MOVS R5, #0
ROM:080B4DA6
ROM:080B4DA6 loc_80B4DA6 ; CODE XREF: chooseNature+3Cj
ROM:080B4DA6 MOV R1, SP
ROM:080B4DA8 ADDS R0, R1, R5
ROM:080B4DAA STRB R5, [R0]
ROM:080B4DAC ADDS R0, R5, #1
ROM:080B4DAE LSLS R0, R0, #0x18
ROM:080B4DB0 LSRS R5, R0, #0x18
ROM:080B4DB2 CMP R5, #0x18
ROM:080B4DB4 BLS loc_80B4DA6 ; Fill *(sp + n) by n from 0 to 24 (nature IDs)
ROM:080B4DB6 MOVS R5, #0
ROM:080B4DB8
ROM:080B4DB8 shuffleNatures ; CODE XREF: chooseNature+76j
ROM:080B4DB8 ADDS R1, R5, #1 ; 300 iterations
ROM:080B4DBA LSLS R0, R1, #0x18
ROM:080B4DBC LSRS R4, R0, #0x18
ROM:080B4DBE MOVS R6, R1
ROM:080B4DC0 CMP R4, #0x18
ROM:080B4DC2 BHI loc_80B4DE8
ROM:080B4DC4 ADD R5, SP
ROM:080B4DC6
ROM:080B4DC6 shuffleDecision ; CODE XREF: chooseNature+6Ej
ROM:080B4DC6 BL PRNG
ROM:080B4DCA MOVS R1, #1
ROM:080B4DCC ANDS R1, R0
ROM:080B4DCE CMP R1, #0
ROM:080B4DD0 BEQ loc_80B4DDE ; 1/2 chance (if PRNG result is odd)
ROM:080B4DD2 LDRB R2, [R5] ; Swap nature IDs at *sp and *(sp + r4)
ROM:080B4DD4 MOV R0, SP
ROM:080B4DD6 ADDS R1, R0, R4
ROM:080B4DD8 LDRB R0, [R1]
ROM:080B4DDA STRB R0, [R5]
ROM:080B4DDC STRB R2, [R1]
ROM:080B4DDE
ROM:080B4DDE loc_80B4DDE ; CODE XREF: chooseNature+58j
ROM:080B4DDE ADDS R0, R4, #1
ROM:080B4DE0 LSLS R0, R0, #0x18
ROM:080B4DE2 LSRS R4, R0, #0x18
ROM:080B4DE4 CMP R4, #0x18
ROM:080B4DE6 BLS shuffleDecision
ROM:080B4DE8
ROM:080B4DE8 loc_80B4DE8 ; CODE XREF: chooseNature+4Aj
ROM:080B4DE8 LSLS R0, R6, #0x18
ROM:080B4DEA LSRS R5, R0, #0x18
ROM:080B4DEC CMP R5, #0x17
ROM:080B4DEE BLS shuffleNatures
ROM:080B4DF0 MOVS R5, #0
ROM:080B4DF2
ROM:080B4DF2 loc_80B4DF2 ; CODE XREF: chooseNature+94j
ROM:080B4DF2 MOV R1, SP
ROM:080B4DF4 ADDS R4, R1, R5
ROM:080B4DF6 LDRB R0, [R4] ; Load each nature to r0
ROM:080B4DF6 ; Reminder : the nature IDs list has been shuffled
ROM:080B4DF8 MOVS R1, R7
ROM:080B4DFA BL doesPkmLikesPblck
ROM:080B4DFE LSLS R0, R0, #0x10 ; Negative sign will be kept if r0 <= 32768
ROM:080B4E00 CMP R0, #0
ROM:080B4E02 BGT PokeblockSuccessful ; If the Pokémon's nature likes the Pokéblock, load this nature
ROM:080B4E04 ADDS R0, R5, #1
ROM:080B4E06 LSLS R0, R0, #0x18
ROM:080B4E08 LSRS R5, R0, #0x18
ROM:080B4E0A CMP R5, #0x18
ROM:080B4E0C BLS loc_80B4DF2 ; If not any nature likes the Pokéblock, the determination is a failure.
ROM:080B4E0C ; The game will jump to the classic Sync determination.
ROM:080B4E0E
ROM:080B4E0E hasFirstPokemonSync ; CODE XREF: chooseNature+Aj
ROM:080B4E0E ; chooseNature+20j ...
ROM:080B4E0E LDR R4, =0x20244EC
ROM:080B4E10 MOVS R0, R4
ROM:080B4E12 MOVS R1, #6
ROM:080B4E14 BL sub_806A518
ROM:080B4E18 CMP R0, #0
ROM:080B4E1A BNE loc_80B4E4C
ROM:080B4E1C MOVS R0, R4
ROM:080B4E1E BL sub_806B6D8
ROM:080B4E22 LSLS R0, R0, #0x18
ROM:080B4E24 LSRS R0, R0, #0x18
ROM:080B4E26 CMP R0, #0x1C
ROM:080B4E28 BNE randomNature
ROM:080B4E2A
ROM:080B4E2A Sync
ROM:080B4E2A BL PRNG
ROM:080B4E2E LSLS R0, R0, #0x10
ROM:080B4E30 LSRS R0, R0, #0x10
ROM:080B4E32 MOVS R1, #1
ROM:080B4E34 ANDS R0, R1
ROM:080B4E36 CMP R0, #0
ROM:080B4E38 BNE loc_80B4E4C
ROM:080B4E3A MOVS R0, R4
ROM:080B4E3C MOVS R1, #0
ROM:080B4E3E BL sub_806A518
ROM:080B4E42 B randomNature
ROM:080B4E2A Sync
ROM:080B4E2A BL PRNG
ROM:080B4E2E LSLS R0, R0, #0x10
ROM:080B4E30 LSRS R0, R0, #0x10
ROM:080B4E32 MOVS R1, #1
ROM:080B4E34 ANDS R0, R1
ROM:080B4E36 CMP R0, #0
ROM:080B4E38 BNE randomNature
ROM:080B4E3A MOVS R0, R4
ROM:080B4E3C MOVS R1, #0
ROM:080B4E3E BL sub_806A518
ROM:080B4E42 B Nature_setup
ROM:080B4E42 ; ---------------------------------------------------------------------------
ROM:080B4E44 dword_80B4E44 DCD 0x20244EC ; DATA XREF: chooseNature:hasFirstPokemonSyncr
ROM:080B4E48 ; ---------------------------------------------------------------------------
ROM:080B4E48
ROM:080B4E48 PokeblockSuccessful ; CODE XREF: chooseNature+8Aj
ROM:080B4E48 LDRB R0, [R4]
ROM:080B4E4A B loc_80B4E5E
ROM:080B4E4C ; ---------------------------------------------------------------------------
ROM:080B4E4C
ROM:080B4E4C randomNature ; CODE XREF: chooseNature+A2j
ROM:080B4E4C ; chooseNature+B0j ...
ROM:080B4E4C BL PRNG
ROM:080B4E50 LSLS R0, R0, #0x10
ROM:080B4E52 LSRS R0, R0, #0x10
ROM:080B4E54
ROM:080B4E54 Nature_setup ; CODE XREF: chooseNature+CAj
ROM:080B4E54 MOVS R1, #0x19
ROM:080B4E56 BL Mod
ROM:080B4E5A LSLS R0, R0, #0x18
ROM:080B4E5C LSRS R0, R0, #0x18
ROM:080B4E5E
ROM:080B4E5E loc_80B4E5E ; CODE XREF: chooseNature+D2j
ROM:080B4E5E ADD SP, SP, #0x1C
ROM:080B4E60 POP {R4-R7}
ROM:080B4E62 POP {R1}
ROM:080B4E64 BX R1
ROM:080B4E64 ; End of function chooseNature
ROM:080B4E64
ROM:080B4E64 ; ---------------------------------------------------------------------------
Code:
ROM:08136FE4 ; =============== S U B R O U T I N E =======================================
ROM:08136FE4
ROM:08136FE4
ROM:08136FE4 doesPkmLikesPblck ; CODE XREF: chooseNature+82p
ROM:08136FE4 PUSH {R4-R7,LR}
ROM:08136FE6 MOV R7, R9
ROM:08136FE8 MOV R6, R8
ROM:08136FEA PUSH {R6,R7}
ROM:08136FEC MOV R8, R1
ROM:08136FEE LSLS R0, R0, #0x18
ROM:08136FF0 LSRS R0, R0, #0x18
ROM:08136FF2 MOVS R6, #0
ROM:08136FF4 MOVS R4, #0
ROM:08136FF6 LDR R1, =tasteLookupStructList ; This list is stored at 0x085B25A0 (Emerald U).
ROM:08136FF6 ; It contains the tastes of each of the 25 natures.
ROM:08136FF8 MOV R9, R1
ROM:08136FFA LSLS R1, R0, #2
ROM:08136FFC ADDS R7, R1, R0 ; r7 = nature * 5
ROM:08136FFE
ROM:08136FFE loc_8136FFE ; CODE XREF: doesPkmLikesPblck+4Aj
ROM:08136FFE ADDS R0, R4, #1
ROM:08137000 LSLS R0, R0, #0x18
ROM:08137002 LSRS R5, R0, #0x18
ROM:08137004 MOV R0, R8
ROM:08137006 MOVS R1, R5
ROM:08137008 BL sub_8136F9C ; Load *(currentZone_Feeder_Pokeblock + counter) into r0.
ROM:08137008 ; This corresponds to the taste[counter] level of the feeder's Pokéblock.
ROM:0813700C LSLS R0, R0, #0x10
ROM:0813700E ASRS R1, R0, #0x10
ROM:08137010 CMP R1, #0
ROM:08137012 BLE loc_813702A ; If Pokéblock.taste[counter] = 0 (tast not present, e.g taste[0] means the PBlock is not spicy), or
ROM:08137012 ; Pokéblock.taste[counter] < 0 <=> (u8) Pokéblock.taste[counter] > 128, continue loop.
ROM:08137014 ADDS R0, R7, R4
ROM:08137016 ADD R0, R9
ROM:08137018 LDRB R0, [R0] ; Load tasteLookupStructList[counter + nature*5].
ROM:08137018 ; This is :
ROM:08137018 ; 0 if the nature makes the Pokémon indifferent to the taste
ROM:08137018 ; 1 if the nature makes the Pokémon like the taste
ROM:08137018 ; -1 if the nature makes the Pokémon dislike the taste
ROM:0813701A LSLS R0, R0, #0x18
ROM:0813701C ASRS R0, R0, #0x18
ROM:0813701E MULS R1, R0 ; Multiply Pokéblock.taste[counter] with tasteLookupStructList[nature * 5 + counter]
ROM:08137020 LSLS R0, R6, #0x10
ROM:08137022 ASRS R0, R0, #0x10
ROM:08137024 ADDS R0, R0, R1 ; Perform currentResult += previousResult (0 if there isn't any)
ROM:08137026 LSLS R0, R0, #0x10
ROM:08137028 LSRS R6, R0, #0x10
ROM:0813702A
ROM:0813702A loc_813702A ; CODE XREF: doesPkmLikesPblck+2Ej
ROM:0813702A MOVS R4, R5
ROM:0813702C CMP R4, #4
ROM:0813702E BLS loc_8136FFE
ROM:08137030 LSLS R0, R6, #0x10
ROM:08137032 ASRS R0, R0, #0x10
ROM:08137034 POP {R3,R4}
ROM:08137036 MOV R8, R3
ROM:08137038 MOV R9, R4
ROM:0813703A POP {R4-R7}
ROM:0813703C POP {R1}
ROM:0813703E BX R1
ROM:0813703E ; End of function doesPkmLikesPblck
ROM:0813703E ; ---------------------------------------------------------------------------
Diagram
Last edited by ΩDonut; Dec 21st, 2011 at 10:01:43 PM. |
|
|
|
|
|
#858 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
PokeBlock Success Calc
Emerald Only... Since PokeBlock Calc happens before PokeBlock Check (which is before sync), we can assume it would be after ESV and Level (those 2 are essentially always one after another) but before Sync/Nature determination.
General Logic
Code:
PokeBlock
n - Initial
n + 1 - ESV
n + 2 - Level
n + 3 - PokeBlock
n + 4 - Nature
PokeBlock Success: High16 % 100, if (0-79) pass,
check to see if PokeBlock is present.
Else, do sync/nature.
Fail Example
Last edited by Kaphotics; Dec 23rd, 2011 at 10:12:39 PM. Reason: :D |
|
|
|
|
|
#859 |
|
Join Date: Dec 2011
Posts: 11
|
@Reject Monk Poop :
The "80 % calc" is done before checking if a Pokéblock is present (sorry, I forgot to add pseudo-code) Code:
Fill listNatures[n] with n, for n from 0 to 24 included (increment by 1 every iteration) Randomization (300 iterations) : For i from 0 to 24 excluded (incremented by 1 every iteration) For j from i+1 to 24 included (incremented by 1 every iteration) If ((rand() AND 1) != 0) // 1/2 chance (if PRNG result is odd) Swap listNatures[0] with listNatures[j] EndIf EndFor EndFor Checking : For n from 0 to 24 included (increment by 1 every iteration) Does nature listNatures[n] likes the Pokéblock in the feeder ? If so, select this nature EndFor If not any nature like the Pokéblock : Sync ... |
|
|
|
|
|
#860 |
|
The Flyin' Wifin' Hawaiian
![]()
Join Date: Apr 2011
Posts: 1,333
Hilo
|
Okay, so last couple days MMX and I have been doing some testing on how much the rain and thunder Thundurus creates advances the PID. A few things we've been able to establish so far through our trial and error testing of a few different seeds:
-The rain Thundurus creates remains at ~420 PID Advances. -Number of Lightning strikes may be associated with the number of advances or PID frame you would hit with only 1 strike of lightning. -Even with multiple numbers of advancements, you still might lead to one frame. Here is the link to all the data we've recorded for our tests and attempts to RNG Thundurus: https://docs.google.com/spreadsheet/...hl=en_US#gid=0 So pretty much, one thing that I've noticed about that Thundurus that makes it different from Tornadus is the way you can determine if the desired PID frame is reachable or not. For Tornadus, if you hit 1 under or over the frame, you can't hit it. If you hit 2 under or over, you could nearly always hit the frame. For Thundurus, there seems to be an entirely different process for this. As you can see in the notes we have, I hit every possible number of advancements, but due to the amount of lightning on some advancements I couldn't hit the frame. MMX and I will still be doing some more testing on different seeds to try and find more results. Any help is appreciated, so just feel free to pop in on IRC and help him and I with this. Thanks
__________________
![]() 1st Place Winter VGCS and 2nd Place Long Beach Winter Regionals! |
|
|
|
|
|
#861 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
wrong lol
Last edited by Kaphotics; Jan 5th, 2012 at 1:14:37 AM. Reason: fixed tags for hiding so people can see what my wrong thinking was |
|
|
|
|
|
#862 |
|
Join Date: Dec 2011
Posts: 11
|
I don't agree with your understandings. In fact, the PID is generated AFTER the nature has been determined. Here is some C++ (pseudo-)code :
Code:
void methodH(){
buildPkm(chooseNature());
}
u8 chooseNature(){
if (isPlayerinSafari() && (rand() % 100 <= 79) && isPokeblockSet()){
//Safari Pokéblock routine
u8 listOfNatures[25];
for(u8 n = 0; n <= 24; n++) listOfNatures[n] = n; // Fill the list of natures
for(u8 i = 0; i < 24; i++) // 300 iteration. Randomize the list
for(u8 j = i+1; j <= 24; j++)
if((rand() & 1) == 0){
exchangeValues(listOfNatures[0], listOfNatures[j]);
for(u8 m = 0; m <= 24; m++)
if((doesThePokemonLikesPokeblock(listOfNatures[m]) << 16 /* Sign keeped if >= -32768 */ ) >= 0)
return listOfNatures[m];
goto SyncCheck; // If no nature likes the Pokéblock
}
else goto SyncCheck;
SyncCheck : if(doesTheFistPartyPokemonHaveSync() && ((rand() & 1) == 0) ) return natureOfFirstPartyPokemon; // Not in R/S
else return (rand() % 25);
}
void buildPokemon(u8 nature){
u16 uPID = 0, lPID = 0, tempPID = 0, finalPID = 0;
//BUILD PID
while((tempPID % 25) != nature){
lPID = rand();
uPID = rand() << 16;
tempPID = lPID | uPID;
}
finalPID = tempPID;
//BUILD IV
// ... ... ...
}
|
|
|
|
|
|
#863 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
Ok that makes a little bit more sense. A few more tries I invalidated what I thought was true. But I do see it your way:
Code:
n - Initial n + 1 - ESV n + 2 - Level n + 3 - PokeBlock ...? 300x natures generated ...find first nature that likes block, set = nature# Generate PIDs until %25 = nature#
Examples of the game passing the PokeBlock calc and building the table
Last edited by Kaphotics; Dec 23rd, 2011 at 10:14:08 PM. |
|
|
|
|
|
#864 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
Magnet Pull / Static in Emerald
How Many Calls?
Call Determination
Call Order Code:
n + 0 Initial
n + 1 SlotForce
|->Pass => n + 2 FVSlot
\->Fail => n + 2 ESV
n + 3 Level
n + 4 Nature#
Code:
SlotForce High16 & 1 If 0, Pass. Do FVSlot If 1, Fail. Do ESV FVSlot High16 % (#Valid Slots) Left to Right selection, no slot preference! FVSlot - Find Valid Slot, in which left to right valid slot# is used. Last edited by Kaphotics; Dec 22nd, 2011 at 9:32:03 PM. Reason: "in emerald" |
|
|
|
|
|
#865 | |
|
PPPPPPPPPPPPPPPPPPPPPPPPP RNG
![]()
Join Date: Nov 2010
Posts: 369
|
Quote:
__________________
RNG Abuse for Mac Users: PPRNG 1.15.0 |
|
|
|
|
|
|
#866 | |
|
sometimes experimentation begins with "let's multi battle strip pokémon"
![]() ![]() ![]()
Moderator
Join Date: Aug 2006
Posts: 3,691
|
Quote:
|
|
|
|
|
|
|
#867 | |
|
sometimes experimentation begins with "let's multi battle strip pokémon"
![]() ![]() ![]()
Moderator
Join Date: Aug 2006
Posts: 3,691
|
Quote:
|
|
|
|
|
|
|
#868 | ||
|
PPPPPPPPPPPPPPPPPPPPPPPPP RNG
![]()
Join Date: Nov 2010
Posts: 369
|
Quote:
French White DSi Parameters
Quote:
French Black DSi Parameters
And as requested, here is a download link for my Nazo searcher. Some notes:
Nazo Searcher Info
__________________
RNG Abuse for Mac Users: PPRNG 1.15.0 |
||
|
|
|
|
|
#869 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
PokéRadar Abuse
trying to be more transparent/verbose with the research process and conclusions so that other people can see how this works After chatting a bit about the lack of stuff to do, the topic of PokéRadar abuse popped up. We are all now very familiar with how each game likes to handle calcs. OmegaDonut said he had a seed which produced a shiny Radar patch with a count of 39. Seed - 1E3863CE. We know that DPPt almost exclusively uses the div operation ( / ), so let's take a look at the seed. In researcher, we see this: Code:
0 1E3863CE .... 6 0098BB4C 0098 BB4C
Ok, so we then do High16 / 0xA4 [HEX], and lo and behold our ShinyPatch determination comes out to 0, being true! We then test similar low-value seeds and we see that this is a valid description of how PokéRadar determines whether a patch will be shiny (for a chain of 39). Hold on, we have to make sure the probabilities for all of the chain counts are correct. Turns out, they aren't! ==================== Correcting the Onsite Article The game does operations in steps, flooring between each one. If we take the given probability calc: Code:
Probability = floor((14747 – 40 × c) ÷ (1640 – 40 × c)) ÷ 65536
Now we re-generate the list of probabilities, and you are left with this:
Chain Count vs Probability
Compare this to the Onsite Article (example: chain=37). The odds are worse by ~1 for a few of the chain values! By working it out with knowledge of how the game computes, we see that the onsite probabilities are wrong. The Onsite Article did not do the flooring when calculating the probability; it instead rounded so that the c=40 chain was 200 instead of 199 (to make it line up with actual data, wrong thing to do!). Improper Rounding was done like this: =ROUND((1/(FLOOR((14747-40*c)/(1640-40*c),1)/65536)),0). It should have been floored and +1. All the numbers that rounded down caused the discrepancy of 1. How would the game decide what is in a (would be) shiny patch if the chain was 0? Nothing is chained! We still have to make sure that this is actually how the game acts! ==================== So now that that's cleared up, we are now left with the actual div values the game uses to determine if the shaking spot is shiny or not.
Div Values in relation to Chain Count
But what's the overall call order that happens when the PokéRadar is activated?
Even frames determine Shiny. One would think that GrassType(Slot)->Shiny is the most logical answer. But how is the placement determined? We are now a little ahead of ourselves -- the overall structure of the PokéRadar calls has yet to be ironed out! ~soon™ Last edited by Kaphotics; Dec 29th, 2011 at 4:31:00 PM. Reason: disclaimer on the correctional |
|
|
|
|
|
#870 | |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
WORK IN PROGRESS
just so we can see what happens and make sense of any debugging if needed Calls following an Activated PokéRadar First we must chain something. If we don't have a chain, we can't have any shiny patches. By noting the current seed BEFORE and AFTER activating the PokéRadar, we can find out how many calls happen if we activate it. If we try it a few times with different seed, we can see that the current seed after activating is 12 frames after the initial. So, 12 random numbers are used to calculate how the PokéRadar gives patches. We know that each patch requires 2 calls (for ESV and Shiny). That leaves us with 4 position calls, and 4x2 calls for ESV/Shiny. Perfect! Upon further observation (first 4 call debugging courtesy of Bond697), we see that the game calculates position with 4 different divisions - 0x20, x18, 0x10, 0x8. After the 4 positions, slot and shiny are determined. But how does the game position? Code:
Div values the game uses to determine position: High16/(position div) 0x20, 0x18, 0x10, 0x8 -> Possible Range: 0x20 0x0000-0x07FF 0x18 0x0000-0x0AAB 0x10 0x0000-0x0FFF 0x8 0x0000-0x1FFF Bit ranges of the max result 7FF 7x7 perimiter = 24 (5 bits) 5x5 perimiter = 16 (4 bits) 3x3 perimiter = 8 (3 bits) Code:
0 - Initial 1 - Position1 2 - Position2 3 - Position3 4 - Position4 56 - ESV1/Shiny1 78 - ESV2/Shiny2 910 - ESV3/Shiny3 1112 - ESV4/Shiny4 However, we can't assume that it will allow for shiny-notchain Pokemon. Quote:
Last edited by Kaphotics; Dec 30th, 2011 at 3:11:59 AM. |
|
|
|
|
|
|
#871 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
conversation arose in IRC about hitting funny keypresses. Since we didn't have a list of every single one (1506 different ones!) I decided to permute all possible theoretical keypress states the game can have (some may not register?)
(13*9*13) - soft resetting combos = 1506 Code:
2FFF None 2FFE A 2FFD B 2FFC A-B 2FFB Select 2FFA Select-A 2FF9 Select-B 2FF8 Select-A-B 2FF7 Start 2FF6 Start-A 2FF5 Start-B 2FF4 Start-A-B 2FF3 Start-Select 2FEF Right 2FEE A-Right 2FED B-Right 2FEC A-B-Right 2FEB Select-Right 2FEA Select-A-Right 2FE9 Select-B-Right 2FE8 Select-A-B-Right 2FE7 Start-Right 2FE6 Start-A-Right 2FE5 Start-B-Right 2FE4 Start-A-B-Right 2FE3 Start-Select-Right 2FDF Left 2FDE A-Left 2FDD B-Left 2FDC A-B-Left 2FDB Select-Left 2FDA Select-A-Left 2FD9 Select-B-Left 2FD8 Select-A-B-Left 2FD7 Start-Left 2FD6 Start-A-Left 2FD5 Start-B-Left 2FD4 Start-A-B-Left 2FD3 Start-Select-Left 2FBF Up 2FBE A-Up 2FBD B-Up 2FBC A-B-Up 2FBB Select-Up 2FBA Select-A-Up 2FB9 Select-B-Up 2FB8 Select-A-B-Up 2FB7 Start-Up 2FB6 Start-A-Up 2FB5 Start-B-Up 2FB4 Start-A-B-Up 2FB3 Start-Select-Up 2FAF Up-Right 2FAE A-Up-Right 2FAD B-Up-Right 2FAC A-B-Up-Right 2FAB Select-Up-Right 2FAA Select-A-Up-Right 2FA9 Select-B-Up-Right 2FA8 Select-A-B-Up-Right 2FA7 Start-Up-Right 2FA6 Start-A-Up-Right 2FA5 Start-B-Up-Right 2FA4 Start-A-B-Up-Right 2FA3 Start-Select-Up-Right 2F9F Up-Left 2F9E A-Up-Left 2F9D B-Up-Left 2F9C A-B-Up-Left 2F9B Select-Up-Left 2F9A Select-A-Up-Left 2F99 Select-B-Up-Left 2F98 Select-A-B-Up-Left 2F97 Start-Up-Left 2F96 Start-A-Up-Left 2F95 Start-B-Up-Left 2F94 Start-A-B-Up-Left 2F93 Start-Select-Up-Left 2F7F Down 2F7E A-Down 2F7D B-Down 2F7C A-B-Down 2F7B Select-Down 2F7A Select-A-Down 2F79 Select-B-Down 2F78 Select-A-B-Down 2F77 Start-Down 2F76 Start-A-Down 2F75 Start-B-Down 2F74 Start-A-B-Down 2F73 Start-Select-Down 2F6F Down-Right 2F6E A-Down-Right 2F6D B-Down-Right 2F6C A-B-Down-Right 2F6B Select-Down-Right 2F6A Select-A-Down-Right 2F69 Select-B-Down-Right 2F68 Select-A-B-Down-Right 2F67 Start-Down-Right 2F66 Start-A-Down-Right 2F65 Start-B-Down-Right 2F64 Start-A-B-Down-Right 2F63 Start-Select-Down-Right 2F5F Down-Left 2F5E A-Down-Left 2F5D B-Down-Left 2F5C A-B-Down-Left 2F5B Select-Down-Left 2F5A Select-A-Down-Left 2F59 Select-B-Down-Left 2F58 Select-A-B-Down-Left 2F57 Start-Down-Left 2F56 Start-A-Down-Left 2F55 Start-B-Down-Left 2F54 Start-A-B-Down-Left 2F53 Start-Select-Down-Left 2EFF R 2EFE A-R 2EFD B-R 2EFC A-B-R 2EFB Select-R 2EFA Select-A-R 2EF9 Select-B-R 2EF8 Select-A-B-R 2EF7 Start-R 2EF6 Start-A-R 2EF5 Start-B-R 2EF4 Start-A-B-R 2EF3 Start-Select-R 2EEF Right-R 2EEE A-Right-R 2EED B-Right-R 2EEC A-B-Right-R 2EEB Select-Right-R 2EEA Select-A-Right-R 2EE9 Select-B-Right-R 2EE8 Select-A-B-Right-R 2EE7 Start-Right-R 2EE6 Start-A-Right-R 2EE5 Start-B-Right-R 2EE4 Start-A-B-Right-R 2EE3 Start-Select-Right-R 2EDF Left-R 2EDE A-Left-R 2EDD B-Left-R 2EDC A-B-Left-R 2EDB Select-Left-R 2EDA Select-A-Left-R 2ED9 Select-B-Left-R 2ED8 Select-A-B-Left-R 2ED7 Start-Left-R 2ED6 Start-A-Left-R 2ED5 Start-B-Left-R 2ED4 Start-A-B-Left-R 2ED3 Start-Select-Left-R 2EBF Up-R 2EBE A-Up-R 2EBD B-Up-R 2EBC A-B-Up-R 2EBB Select-Up-R 2EBA Select-A-Up-R 2EB9 Select-B-Up-R 2EB8 Select-A-B-Up-R 2EB7 Start-Up-R 2EB6 Start-A-Up-R 2EB5 Start-B-Up-R 2EB4 Start-A-B-Up-R 2EB3 Start-Select-Up-R 2EAF Up-Right-R 2EAE A-Up-Right-R 2EAD B-Up-Right-R 2EAC A-B-Up-Right-R 2EAB Select-Up-Right-R 2EAA Select-A-Up-Right-R 2EA9 Select-B-Up-Right-R 2EA8 Select-A-B-Up-Right-R 2EA7 Start-Up-Right-R 2EA6 Start-A-Up-Right-R 2EA5 Start-B-Up-Right-R 2EA4 Start-A-B-Up-Right-R 2EA3 Start-Select-Up-Right-R 2E9F Up-Left-R 2E9E A-Up-Left-R 2E9D B-Up-Left-R 2E9C A-B-Up-Left-R 2E9B Select-Up-Left-R 2E9A Select-A-Up-Left-R 2E99 Select-B-Up-Left-R 2E98 Select-A-B-Up-Left-R 2E97 Start-Up-Left-R 2E96 Start-A-Up-Left-R 2E95 Start-B-Up-Left-R 2E94 Start-A-B-Up-Left-R 2E93 Start-Select-Up-Left-R 2E7F Down-R 2E7E A-Down-R 2E7D B-Down-R 2E7C A-B-Down-R 2E7B Select-Down-R 2E7A Select-A-Down-R 2E79 Select-B-Down-R 2E78 Select-A-B-Down-R 2E77 Start-Down-R 2E76 Start-A-Down-R 2E75 Start-B-Down-R 2E74 Start-A-B-Down-R 2E73 Start-Select-Down-R 2E6F Down-Right-R 2E6E A-Down-Right-R 2E6D B-Down-Right-R 2E6C A-B-Down-Right-R 2E6B Select-Down-Right-R 2E6A Select-A-Down-Right-R 2E69 Select-B-Down-Right-R 2E68 Select-A-B-Down-Right-R 2E67 Start-Down-Right-R 2E66 Start-A-Down-Right-R 2E65 Start-B-Down-Right-R 2E64 Start-A-B-Down-Right-R 2E63 Start-Select-Down-Right-R 2E5F Down-Left-R 2E5E A-Down-Left-R 2E5D B-Down-Left-R 2E5C A-B-Down-Left-R 2E5B Select-Down-Left-R 2E5A Select-A-Down-Left-R 2E59 Select-B-Down-Left-R 2E58 Select-A-B-Down-Left-R 2E57 Start-Down-Left-R 2E56 Start-A-Down-Left-R 2E55 Start-B-Down-Left-R 2E54 Start-A-B-Down-Left-R 2E53 Start-Select-Down-Left-R 2DFF L 2DFE A-L 2DFD B-L 2DFC A-B-L 2DFB Select-L 2DFA Select-A-L 2DF9 Select-B-L 2DF8 Select-A-B-L 2DF7 Start-L 2DF6 Start-A-L 2DF5 Start-B-L 2DF4 Start-A-B-L 2DF3 Start-Select-L 2DEF Right-L 2DEE A-Right-L 2DED B-Right-L 2DEC A-B-Right-L 2DEB Select-Right-L 2DEA Select-A-Right-L 2DE9 Select-B-Right-L 2DE8 Select-A-B-Right-L 2DE7 Start-Right-L 2DE6 Start-A-Right-L 2DE5 Start-B-Right-L 2DE4 Start-A-B-Right-L 2DE3 Start-Select-Right-L 2DDF Left-L 2DDE A-Left-L 2DDD B-Left-L 2DDC A-B-Left-L 2DDB Select-Left-L 2DDA Select-A-Left-L 2DD9 Select-B-Left-L 2DD8 Select-A-B-Left-L 2DD7 Start-Left-L 2DD6 Start-A-Left-L 2DD5 Start-B-Left-L 2DD4 Start-A-B-Left-L 2DD3 Start-Select-Left-L 2DBF Up-L 2DBE A-Up-L 2DBD B-Up-L 2DBC A-B-Up-L 2DBB Select-Up-L 2DBA Select-A-Up-L 2DB9 Select-B-Up-L 2DB8 Select-A-B-Up-L 2DB7 Start-Up-L 2DB6 Start-A-Up-L 2DB5 Start-B-Up-L 2DB4 Start-A-B-Up-L 2DB3 Start-Select-Up-L 2DAF Up-Right-L 2DAE A-Up-Right-L 2DAD B-Up-Right-L 2DAC A-B-Up-Right-L 2DAB Select-Up-Right-L 2DAA Select-A-Up-Right-L 2DA9 Select-B-Up-Right-L 2DA8 Select-A-B-Up-Right-L 2DA7 Start-Up-Right-L 2DA6 Start-A-Up-Right-L 2DA5 Start-B-Up-Right-L 2DA4 Start-A-B-Up-Right-L 2DA3 Start-Select-Up-Right-L 2D9F Up-Left-L 2D9E A-Up-Left-L 2D9D B-Up-Left-L 2D9C A-B-Up-Left-L 2D9B Select-Up-Left-L 2D9A Select-A-Up-Left-L 2D99 Select-B-Up-Left-L 2D98 Select-A-B-Up-Left-L 2D97 Start-Up-Left-L 2D96 Start-A-Up-Left-L 2D95 Start-B-Up-Left-L 2D94 Start-A-B-Up-Left-L 2D93 Start-Select-Up-Left-L 2D7F Down-L 2D7E A-Down-L 2D7D B-Down-L 2D7C A-B-Down-L 2D7B Select-Down-L 2D7A Select-A-Down-L 2D79 Select-B-Down-L 2D78 Select-A-B-Down-L 2D77 Start-Down-L 2D76 Start-A-Down-L 2D75 Start-B-Down-L 2D74 Start-A-B-Down-L 2D73 Start-Select-Down-L 2D6F Down-Right-L 2D6E A-Down-Right-L 2D6D B-Down-Right-L 2D6C A-B-Down-Right-L 2D6B Select-Down-Right-L 2D6A Select-A-Down-Right-L 2D69 Select-B-Down-Right-L 2D68 Select-A-B-Down-Right-L 2D67 Start-Down-Right-L 2D66 Start-A-Down-Right-L 2D65 Start-B-Down-Right-L 2D64 Start-A-B-Down-Right-L 2D63 Start-Select-Down-Right-L 2D5F Down-Left-L 2D5E A-Down-Left-L 2D5D B-Down-Left-L 2D5C A-B-Down-Left-L 2D5B Select-Down-Left-L 2D5A Select-A-Down-Left-L 2D59 Select-B-Down-Left-L 2D58 Select-A-B-Down-Left-L 2D57 Start-Down-Left-L 2D56 Start-A-Down-Left-L 2D55 Start-B-Down-Left-L 2D54 Start-A-B-Down-Left-L 2D53 Start-Select-Down-Left-L 2CFF R-L 2CFE A-R-L 2CFD B-R-L 2CFC A-B-R-L 2CFB Select-R-L 2CFA Select-A-R-L 2CF9 Select-B-R-L 2CF8 Select-A-B-R-L 2CF7 Start-R-L 2CF6 Start-A-R-L 2CF5 Start-B-R-L 2CF4 Start-A-B-R-L 2CEF Right-R-L 2CEE A-Right-R-L 2CED B-Right-R-L 2CEC A-B-Right-R-L 2CEB Select-Right-R-L 2CEA Select-A-Right-R-L 2CE9 Select-B-Right-R-L 2CE8 Select-A-B-Right-R-L 2CE7 Start-Right-R-L 2CE6 Start-A-Right-R-L 2CE5 Start-B-Right-R-L 2CE4 Start-A-B-Right-R-L 2CDF Left-R-L 2CDE A-Left-R-L 2CDD B-Left-R-L 2CDC A-B-Left-R-L 2CDB Select-Left-R-L 2CDA Select-A-Left-R-L 2CD9 Select-B-Left-R-L 2CD8 Select-A-B-Left-R-L 2CD7 Start-Left-R-L 2CD6 Start-A-Left-R-L 2CD5 Start-B-Left-R-L 2CD4 Start-A-B-Left-R-L 2CBF Up-R-L 2CBE A-Up-R-L 2CBD B-Up-R-L 2CBC A-B-Up-R-L 2CBB Select-Up-R-L 2CBA Select-A-Up-R-L 2CB9 Select-B-Up-R-L 2CB8 Select-A-B-Up-R-L 2CB7 Start-Up-R-L 2CB6 Start-A-Up-R-L 2CB5 Start-B-Up-R-L 2CB4 Start-A-B-Up-R-L 2CAF Up-Right-R-L 2CAE A-Up-Right-R-L 2CAD B-Up-Right-R-L 2CAC A-B-Up-Right-R-L 2CAB Select-Up-Right-R-L 2CAA Select-A-Up-Right-R-L 2CA9 Select-B-Up-Right-R-L 2CA8 Select-A-B-Up-Right-R-L 2CA7 Start-Up-Right-R-L 2CA6 Start-A-Up-Right-R-L 2CA5 Start-B-Up-Right-R-L 2CA4 Start-A-B-Up-Right-R-L 2C9F Up-Left-R-L 2C9E A-Up-Left-R-L 2C9D B-Up-Left-R-L 2C9C A-B-Up-Left-R-L 2C9B Select-Up-Left-R-L 2C9A Select-A-Up-Left-R-L 2C99 Select-B-Up-Left-R-L 2C98 Select-A-B-Up-Left-R-L 2C97 Start-Up-Left-R-L 2C96 Start-A-Up-Left-R-L 2C95 Start-B-Up-Left-R-L 2C94 Start-A-B-Up-Left-R-L 2C7F Down-R-L 2C7E A-Down-R-L 2C7D B-Down-R-L 2C7C A-B-Down-R-L 2C7B Select-Down-R-L 2C7A Select-A-Down-R-L 2C79 Select-B-Down-R-L 2C78 Select-A-B-Down-R-L 2C77 Start-Down-R-L 2C76 Start-A-Down-R-L 2C75 Start-B-Down-R-L 2C74 Start-A-B-Down-R-L 2C73 Start-Select-Down-R-L 2C6F Down-Right-R-L 2C6E A-Down-Right-R-L 2C6D B-Down-Right-R-L 2C6C A-B-Down-Right-R-L 2C6B Select-Down-Right-R-L 2C6A Select-A-Down-Right-R-L 2C69 Select-B-Down-Right-R-L 2C68 Select-A-B-Down-Right-R-L 2C67 Start-Down-Right-R-L 2C66 Start-A-Down-Right-R-L 2C65 Start-B-Down-Right-R-L 2C64 Start-A-B-Down-Right-R-L 2C63 Start-Select-Down-Right-R-L 2C5F Down-Left-R-L 2C5E A-Down-Left-R-L 2C5D B-Down-Left-R-L 2C5C A-B-Down-Left-R-L 2C5B Select-Down-Left-R-L 2C5A Select-A-Down-Left-R-L 2C59 Select-B-Down-Left-R-L 2C58 Select-A-B-Down-Left-R-L 2C57 Start-Down-Left-R-L 2C56 Start-A-Down-Left-R-L 2C55 Start-B-Down-Left-R-L 2C54 Start-A-B-Down-Left-R-L 2C53 Start-Select-Down-Left-R-L 2BFF X 2BFE A-X 2BFD B-X 2BFC A-B-X 2BFB Select-X 2BFA Select-A-X 2BF9 Select-B-X 2BF8 Select-A-B-X 2BF7 Start-X 2BF6 Start-A-X 2BF5 Start-B-X 2BF4 Start-A-B-X 2BF3 Start-Select-X 2BEF Right-X 2BEE A-Right-X 2BED B-Right-X 2BEC A-B-Right-X 2BEB Select-Right-X 2BEA Select-A-Right-X 2BE9 Select-B-Right-X 2BE8 Select-A-B-Right-X 2BE7 Start-Right-X 2BE6 Start-A-Right-X 2BE5 Start-B-Right-X 2BE4 Start-A-B-Right-X 2BE3 Start-Select-Right-X 2BDF Left-X 2BDE A-Left-X 2BDD B-Left-X 2BDC A-B-Left-X 2BDB Select-Left-X 2BDA Select-A-Left-X 2BD9 Select-B-Left-X 2BD8 Select-A-B-Left-X 2BD7 Start-Left-X 2BD6 Start-A-Left-X 2BD5 Start-B-Left-X 2BD4 Start-A-B-Left-X 2BD3 Start-Select-Left-X 2BBF Up-X 2BBE A-Up-X 2BBD B-Up-X 2BBC A-B-Up-X 2BBB Select-Up-X 2BBA Select-A-Up-X 2BB9 Select-B-Up-X 2BB8 Select-A-B-Up-X 2BB7 Start-Up-X 2BB6 Start-A-Up-X 2BB5 Start-B-Up-X 2BB4 Start-A-B-Up-X 2BB3 Start-Select-Up-X 2BAF Up-Right-X 2BAE A-Up-Right-X 2BAD B-Up-Right-X 2BAC A-B-Up-Right-X 2BAB Select-Up-Right-X 2BAA Select-A-Up-Right-X 2BA9 Select-B-Up-Right-X 2BA8 Select-A-B-Up-Right-X 2BA7 Start-Up-Right-X 2BA6 Start-A-Up-Right-X 2BA5 Start-B-Up-Right-X 2BA4 Start-A-B-Up-Right-X 2BA3 Start-Select-Up-Right-X 2B9F Up-Left-X 2B9E A-Up-Left-X 2B9D B-Up-Left-X 2B9C A-B-Up-Left-X 2B9B Select-Up-Left-X 2B9A Select-A-Up-Left-X 2B99 Select-B-Up-Left-X 2B98 Select-A-B-Up-Left-X 2B97 Start-Up-Left-X 2B96 Start-A-Up-Left-X 2B95 Start-B-Up-Left-X 2B94 Start-A-B-Up-Left-X 2B93 Start-Select-Up-Left-X 2B7F Down-X 2B7E A-Down-X 2B7D B-Down-X 2B7C A-B-Down-X 2B7B Select-Down-X 2B7A Select-A-Down-X 2B79 Select-B-Down-X 2B78 Select-A-B-Down-X 2B77 Start-Down-X 2B76 Start-A-Down-X 2B75 Start-B-Down-X 2B74 Start-A-B-Down-X 2B73 Start-Select-Down-X 2B6F Down-Right-X 2B6E A-Down-Right-X 2B6D B-Down-Right-X 2B6C A-B-Down-Right-X 2B6B Select-Down-Right-X 2B6A Select-A-Down-Right-X 2B69 Select-B-Down-Right-X 2B68 Select-A-B-Down-Right-X 2B67 Start-Down-Right-X 2B66 Start-A-Down-Right-X 2B65 Start-B-Down-Right-X 2B64 Start-A-B-Down-Right-X 2B63 Start-Select-Down-Right-X 2B5F Down-Left-X 2B5E A-Down-Left-X 2B5D B-Down-Left-X 2B5C A-B-Down-Left-X 2B5B Select-Down-Left-X 2B5A Select-A-Down-Left-X 2B59 Select-B-Down-Left-X 2B58 Select-A-B-Down-Left-X 2B57 Start-Down-Left-X 2B56 Start-A-Down-Left-X 2B55 Start-B-Down-Left-X 2B54 Start-A-B-Down-Left-X 2B53 Start-Select-Down-Left-X 2AFF X-R 2AFE A-X-R 2AFD B-X-R 2AFC A-B-X-R 2AFB Select-X-R 2AFA Select-A-X-R 2AF9 Select-B-X-R 2AF8 Select-A-B-X-R 2AF7 Start-X-R 2AF6 Start-A-X-R 2AF5 Start-B-X-R 2AF4 Start-A-B-X-R 2AF3 Start-Select-X-R 2AEF Right-X-R 2AEE A-Right-X-R 2AED B-Right-X-R 2AEC A-B-Right-X-R 2AEB Select-Right-X-R 2AEA Select-A-Right-X-R 2AE9 Select-B-Right-X-R 2AE8 Select-A-B-Right-X-R 2AE7 Start-Right-X-R 2AE6 Start-A-Right-X-R 2AE5 Start-B-Right-X-R 2AE4 Start-A-B-Right-X-R 2AE3 Start-Select-Right-X-R 2ADF Left-X-R 2ADE A-Left-X-R 2ADD B-Left-X-R 2ADC A-B-Left-X-R 2ADB Select-Left-X-R 2ADA Select-A-Left-X-R 2AD9 Select-B-Left-X-R 2AD8 Select-A-B-Left-X-R 2AD7 Start-Left-X-R 2AD6 Start-A-Left-X-R 2AD5 Start-B-Left-X-R 2AD4 Start-A-B-Left-X-R 2AD3 Start-Select-Left-X-R 2ABF Up-X-R 2ABE A-Up-X-R 2ABD B-Up-X-R 2ABC A-B-Up-X-R 2ABB Select-Up-X-R 2ABA Select-A-Up-X-R 2AB9 Select-B-Up-X-R 2AB8 Select-A-B-Up-X-R 2AB7 Start-Up-X-R 2AB6 Start-A-Up-X-R 2AB5 Start-B-Up-X-R 2AB4 Start-A-B-Up-X-R 2AB3 Start-Select-Up-X-R 2AAF Up-Right-X-R 2AAE A-Up-Right-X-R 2AAD B-Up-Right-X-R 2AAC A-B-Up-Right-X-R 2AAB Select-Up-Right-X-R 2AAA Select-A-Up-Right-X-R 2AA9 Select-B-Up-Right-X-R 2AA8 Select-A-B-Up-Right-X-R 2AA7 Start-Up-Right-X-R 2AA6 Start-A-Up-Right-X-R 2AA5 Start-B-Up-Right-X-R 2AA4 Start-A-B-Up-Right-X-R 2AA3 Start-Select-Up-Right-X-R 2A9F Up-Left-X-R 2A9E A-Up-Left-X-R 2A9D B-Up-Left-X-R 2A9C A-B-Up-Left-X-R 2A9B Select-Up-Left-X-R 2A9A Select-A-Up-Left-X-R 2A99 Select-B-Up-Left-X-R 2A98 Select-A-B-Up-Left-X-R 2A97 Start-Up-Left-X-R 2A96 Start-A-Up-Left-X-R 2A95 Start-B-Up-Left-X-R 2A94 Start-A-B-Up-Left-X-R 2A93 Start-Select-Up-Left-X-R 2A7F Down-X-R 2A7E A-Down-X-R 2A7D B-Down-X-R 2A7C A-B-Down-X-R 2A7B Select-Down-X-R 2A7A Select-A-Down-X-R 2A79 Select-B-Down-X-R 2A78 Select-A-B-Down-X-R 2A77 Start-Down-X-R 2A76 Start-A-Down-X-R 2A75 Start-B-Down-X-R 2A74 Start-A-B-Down-X-R 2A73 Start-Select-Down-X-R 2A6F Down-Right-X-R 2A6E A-Down-Right-X-R 2A6D B-Down-Right-X-R 2A6C A-B-Down-Right-X-R 2A6B Select-Down-Right-X-R 2A6A Select-A-Down-Right-X-R 2A69 Select-B-Down-Right-X-R 2A68 Select-A-B-Down-Right-X-R 2A67 Start-Down-Right-X-R 2A66 Start-A-Down-Right-X-R 2A65 Start-B-Down-Right-X-R 2A64 Start-A-B-Down-Right-X-R 2A63 Start-Select-Down-Right-X-R 2A5F Down-Left-X-R 2A5E A-Down-Left-X-R 2A5D B-Down-Left-X-R 2A5C A-B-Down-Left-X-R 2A5B Select-Down-Left-X-R 2A5A Select-A-Down-Left-X-R 2A59 Select-B-Down-Left-X-R 2A58 Select-A-B-Down-Left-X-R 2A57 Start-Down-Left-X-R 2A56 Start-A-Down-Left-X-R 2A55 Start-B-Down-Left-X-R 2A54 Start-A-B-Down-Left-X-R 2A53 Start-Select-Down-Left-X-R 29FF X-L 29FE A-X-L 29FD B-X-L 29FC A-B-X-L 29FB Select-X-L 29FA Select-A-X-L 29F9 Select-B-X-L 29F8 Select-A-B-X-L 29F7 Start-X-L 29F6 Start-A-X-L 29F5 Start-B-X-L 29F4 Start-A-B-X-L 29F3 Start-Select-X-L 29EF Right-X-L 29EE A-Right-X-L 29ED B-Right-X-L 29EC A-B-Right-X-L 29EB Select-Right-X-L 29EA Select-A-Right-X-L 29E9 Select-B-Right-X-L 29E8 Select-A-B-Right-X-L 29E7 Start-Right-X-L 29E6 Start-A-Right-X-L 29E5 Start-B-Right-X-L 29E4 Start-A-B-Right-X-L 29E3 Start-Select-Right-X-L 29DF Left-X-L 29DE A-Left-X-L 29DD B-Left-X-L 29DC A-B-Left-X-L 29DB Select-Left-X-L 29DA Select-A-Left-X-L 29D9 Select-B-Left-X-L 29D8 Select-A-B-Left-X-L 29D7 Start-Left-X-L 29D6 Start-A-Left-X-L 29D5 Start-B-Left-X-L 29D4 Start-A-B-Left-X-L 29D3 Start-Select-Left-X-L 29BF Up-X-L 29BE A-Up-X-L 29BD B-Up-X-L 29BC A-B-Up-X-L 29BB Select-Up-X-L 29BA Select-A-Up-X-L 29B9 Select-B-Up-X-L 29B8 Select-A-B-Up-X-L 29B7 Start-Up-X-L 29B6 Start-A-Up-X-L 29B5 Start-B-Up-X-L 29B4 Start-A-B-Up-X-L 29B3 Start-Select-Up-X-L 29AF Up-Right-X-L 29AE A-Up-Right-X-L 29AD B-Up-Right-X-L 29AC A-B-Up-Right-X-L 29AB Select-Up-Right-X-L 29AA Select-A-Up-Right-X-L 29A9 Select-B-Up-Right-X-L 29A8 Select-A-B-Up-Right-X-L 29A7 Start-Up-Right-X-L 29A6 Start-A-Up-Right-X-L 29A5 Start-B-Up-Right-X-L 29A4 Start-A-B-Up-Right-X-L 29A3 Start-Select-Up-Right-X-L 299F Up-Left-X-L 299E A-Up-Left-X-L 299D B-Up-Left-X-L 299C A-B-Up-Left-X-L 299B Select-Up-Left-X-L 299A Select-A-Up-Left-X-L 2999 Select-B-Up-Left-X-L 2998 Select-A-B-Up-Left-X-L 2997 Start-Up-Left-X-L 2996 Start-A-Up-Left-X-L 2995 Start-B-Up-Left-X-L 2994 Start-A-B-Up-Left-X-L 2993 Start-Select-Up-Left-X-L 297F Down-X-L 297E A-Down-X-L 297D B-Down-X-L 297C A-B-Down-X-L 297B Select-Down-X-L 297A Select-A-Down-X-L 2979 Select-B-Down-X-L 2978 Select-A-B-Down-X-L 2977 Start-Down-X-L 2976 Start-A-Down-X-L 2975 Start-B-Down-X-L 2974 Start-A-B-Down-X-L 2973 Start-Select-Down-X-L 296F Down-Right-X-L 296E A-Down-Right-X-L 296D B-Down-Right-X-L 296C A-B-Down-Right-X-L 296B Select-Down-Right-X-L 296A Select-A-Down-Right-X-L 2969 Select-B-Down-Right-X-L 2968 Select-A-B-Down-Right-X-L 2967 Start-Down-Right-X-L 2966 Start-A-Down-Right-X-L 2965 Start-B-Down-Right-X-L 2964 Start-A-B-Down-Right-X-L 2963 Start-Select-Down-Right-X-L 295F Down-Left-X-L 295E A-Down-Left-X-L 295D B-Down-Left-X-L 295C A-B-Down-Left-X-L 295B Select-Down-Left-X-L 295A Select-A-Down-Left-X-L 2959 Select-B-Down-Left-X-L 2958 Select-A-B-Down-Left-X-L 2957 Start-Down-Left-X-L 2956 Start-A-Down-Left-X-L 2955 Start-B-Down-Left-X-L 2954 Start-A-B-Down-Left-X-L 2953 Start-Select-Down-Left-X-L 28FF X-R-L 28FE A-X-R-L 28FD B-X-R-L 28FC A-B-X-R-L 28FB Select-X-R-L 28FA Select-A-X-R-L 28F9 Select-B-X-R-L 28F8 Select-A-B-X-R-L 28F7 Start-X-R-L 28F6 Start-A-X-R-L 28F5 Start-B-X-R-L 28F4 Start-A-B-X-R-L 28F3 Start-Select-X-R-L 28EF Right-X-R-L 28EE A-Right-X-R-L 28ED B-Right-X-R-L 28EC A-B-Right-X-R-L 28EB Select-Right-X-R-L 28EA Select-A-Right-X-R-L 28E9 Select-B-Right-X-R-L 28E8 Select-A-B-Right-X-R-L 28E7 Start-Right-X-R-L 28E6 Start-A-Right-X-R-L 28E5 Start-B-Right-X-R-L 28E4 Start-A-B-Right-X-R-L 28E3 Start-Select-Right-X-R-L 28DF Left-X-R-L 28DE A-Left-X-R-L 28DD B-Left-X-R-L 28DC A-B-Left-X-R-L 28DB Select-Left-X-R-L 28DA Select-A-Left-X-R-L 28D9 Select-B-Left-X-R-L 28D8 Select-A-B-Left-X-R-L 28D7 Start-Left-X-R-L 28D6 Start-A-Left-X-R-L 28D5 Start-B-Left-X-R-L 28D4 Start-A-B-Left-X-R-L 28D3 Start-Select-Left-X-R-L 28BF Up-X-R-L 28BE A-Up-X-R-L 28BD B-Up-X-R-L 28BC A-B-Up-X-R-L 28BB Select-Up-X-R-L 28BA Select-A-Up-X-R-L 28B9 Select-B-Up-X-R-L 28B8 Select-A-B-Up-X-R-L 28B7 Start-Up-X-R-L 28B6 Start-A-Up-X-R-L 28B5 Start-B-Up-X-R-L 28B4 Start-A-B-Up-X-R-L 28B3 Start-Select-Up-X-R-L 28AF Up-Right-X-R-L 28AE A-Up-Right-X-R-L 28AD B-Up-Right-X-R-L 28AC A-B-Up-Right-X-R-L 28AB Select-Up-Right-X-R-L 28AA Select-A-Up-Right-X-R-L 28A9 Select-B-Up-Right-X-R-L 28A8 Select-A-B-Up-Right-X-R-L 28A7 Start-Up-Right-X-R-L 28A6 Start-A-Up-Right-X-R-L 28A5 Start-B-Up-Right-X-R-L 28A4 Start-A-B-Up-Right-X-R-L 28A3 Start-Select-Up-Right-X-R-L 289F Up-Left-X-R-L 289E A-Up-Left-X-R-L 289D B-Up-Left-X-R-L 289C A-B-Up-Left-X-R-L 289B Select-Up-Left-X-R-L 289A Select-A-Up-Left-X-R-L 2899 Select-B-Up-Left-X-R-L 2898 Select-A-B-Up-Left-X-R-L 2897 Start-Up-Left-X-R-L 2896 Start-A-Up-Left-X-R-L 2895 Start-B-Up-Left-X-R-L 2894 Start-A-B-Up-Left-X-R-L 2893 Start-Select-Up-Left-X-R-L 287F Down-X-R-L 287E A-Down-X-R-L 287D B-Down-X-R-L 287C A-B-Down-X-R-L 287B Select-Down-X-R-L 287A Select-A-Down-X-R-L 2879 Select-B-Down-X-R-L 2878 Select-A-B-Down-X-R-L 2877 Start-Down-X-R-L 2876 Start-A-Down-X-R-L 2875 Start-B-Down-X-R-L 2874 Start-A-B-Down-X-R-L 2873 Start-Select-Down-X-R-L 286F Down-Right-X-R-L 286E A-Down-Right-X-R-L 286D B-Down-Right-X-R-L 286C A-B-Down-Right-X-R-L 286B Select-Down-Right-X-R-L 286A Select-A-Down-Right-X-R-L 2869 Select-B-Down-Right-X-R-L 2868 Select-A-B-Down-Right-X-R-L 2867 Start-Down-Right-X-R-L 2866 Start-A-Down-Right-X-R-L 2865 Start-B-Down-Right-X-R-L 2864 Start-A-B-Down-Right-X-R-L 2863 Start-Select-Down-Right-X-R-L 285F Down-Left-X-R-L 285E A-Down-Left-X-R-L 285D B-Down-Left-X-R-L 285C A-B-Down-Left-X-R-L 285B Select-Down-Left-X-R-L 285A Select-A-Down-Left-X-R-L 2859 Select-B-Down-Left-X-R-L 2858 Select-A-B-Down-Left-X-R-L 2857 Start-Down-Left-X-R-L 2856 Start-A-Down-Left-X-R-L 2855 Start-B-Down-Left-X-R-L 2854 Start-A-B-Down-Left-X-R-L 2853 Start-Select-Down-Left-X-R-L 27FF Y 27FF Y-R 27FE A-Y 27FE A-Y-R 27FD B-Y 27FD B-Y-R 27FC A-B-Y 27FC A-B-Y-R 27FB Select-Y 27FB Select-Y-R 27FA Select-A-Y 27FA Select-A-Y-R 27F9 Select-B-Y 27F9 Select-B-Y-R 27F8 Select-A-B-Y 27F8 Select-A-B-Y-R 27F7 Start-Y 27F7 Start-Y-R 27F6 Start-A-Y 27F6 Start-A-Y-R 27F5 Start-B-Y 27F5 Start-B-Y-R 27F4 Start-A-B-Y 27F4 Start-A-B-Y-R 27F3 Start-Select-Y 27F3 Start-Select-Y-R 27EF Right-Y 27EF Right-Y-R 27EE A-Right-Y 27EE A-Right-Y-R 27ED B-Right-Y 27ED B-Right-Y-R 27EC A-B-Right-Y 27EC A-B-Right-Y-R 27EB Select-Right-Y 27EB Select-Right-Y-R 27EA Select-A-Right-Y 27EA Select-A-Right-Y-R 27E9 Select-B-Right-Y 27E9 Select-B-Right-Y-R 27E8 Select-A-B-Right-Y 27E8 Select-A-B-Right-Y-R 27E7 Start-Right-Y 27E7 Start-Right-Y-R 27E6 Start-A-Right-Y 27E6 Start-A-Right-Y-R 27E5 Start-B-Right-Y 27E5 Start-B-Right-Y-R 27E4 Start-A-B-Right-Y 27E4 Start-A-B-Right-Y-R 27E3 Start-Select-Right-Y 27E3 Start-Select-Right-Y-R 27DF Left-Y 27DF Left-Y-R 27DE A-Left-Y 27DE A-Left-Y-R 27DD B-Left-Y 27DD B-Left-Y-R 27DC A-B-Left-Y 27DC A-B-Left-Y-R 27DB Select-Left-Y 27DB Select-Left-Y-R 27DA Select-A-Left-Y 27DA Select-A-Left-Y-R 27D9 Select-B-Left-Y 27D9 Select-B-Left-Y-R 27D8 Select-A-B-Left-Y 27D8 Select-A-B-Left-Y-R 27D7 Start-Left-Y 27D7 Start-Left-Y-R 27D6 Start-A-Left-Y 27D6 Start-A-Left-Y-R 27D5 Start-B-Left-Y 27D5 Start-B-Left-Y-R 27D4 Start-A-B-Left-Y 27D4 Start-A-B-Left-Y-R 27D3 Start-Select-Left-Y 27D3 Start-Select-Left-Y-R 27BF Up-Y 27BF Up-Y-R 27BE A-Up-Y 27BE A-Up-Y-R 27BD B-Up-Y 27BD B-Up-Y-R 27BC A-B-Up-Y 27BC A-B-Up-Y-R 27BB Select-Up-Y 27BB Select-Up-Y-R 27BA Select-A-Up-Y 27BA Select-A-Up-Y-R 27B9 Select-B-Up-Y 27B9 Select-B-Up-Y-R 27B8 Select-A-B-Up-Y 27B8 Select-A-B-Up-Y-R 27B7 Start-Up-Y 27B7 Start-Up-Y-R 27B6 Start-A-Up-Y 27B6 Start-A-Up-Y-R 27B5 Start-B-Up-Y 27B5 Start-B-Up-Y-R 27B4 Start-A-B-Up-Y 27B4 Start-A-B-Up-Y-R 27B3 Start-Select-Up-Y 27B3 Start-Select-Up-Y-R 27AF Up-Right-Y 27AF Up-Right-Y-R 27AE A-Up-Right-Y 27AE A-Up-Right-Y-R 27AD B-Up-Right-Y 27AD B-Up-Right-Y-R 27AC A-B-Up-Right-Y 27AC A-B-Up-Right-Y-R 27AB Select-Up-Right-Y 27AB Select-Up-Right-Y-R 27AA Select-A-Up-Right-Y 27AA Select-A-Up-Right-Y-R 27A9 Select-B-Up-Right-Y 27A9 Select-B-Up-Right-Y-R 27A8 Select-A-B-Up-Right-Y 27A8 Select-A-B-Up-Right-Y-R 27A7 Start-Up-Right-Y 27A7 Start-Up-Right-Y-R 27A6 Start-A-Up-Right-Y 27A6 Start-A-Up-Right-Y-R 27A5 Start-B-Up-Right-Y 27A5 Start-B-Up-Right-Y-R 27A4 Start-A-B-Up-Right-Y 27A4 Start-A-B-Up-Right-Y-R 27A3 Start-Select-Up-Right-Y 27A3 Start-Select-Up-Right-Y-R 279F Up-Left-Y 279F Up-Left-Y-R 279E A-Up-Left-Y 279E A-Up-Left-Y-R 279D B-Up-Left-Y 279D B-Up-Left-Y-R 279C A-B-Up-Left-Y 279C A-B-Up-Left-Y-R 279B Select-Up-Left-Y 279B Select-Up-Left-Y-R 279A Select-A-Up-Left-Y 279A Select-A-Up-Left-Y-R 2799 Select-B-Up-Left-Y 2799 Select-B-Up-Left-Y-R 2798 Select-A-B-Up-Left-Y 2798 Select-A-B-Up-Left-Y-R 2797 Start-Up-Left-Y 2797 Start-Up-Left-Y-R 2796 Start-A-Up-Left-Y 2796 Start-A-Up-Left-Y-R 2795 Start-B-Up-Left-Y 2795 Start-B-Up-Left-Y-R 2794 Start-A-B-Up-Left-Y 2794 Start-A-B-Up-Left-Y-R 2793 Start-Select-Up-Left-Y 2793 Start-Select-Up-Left-Y-R 277F Down-Y 277F Down-Y-R 277E A-Down-Y 277E A-Down-Y-R 277D B-Down-Y 277D B-Down-Y-R 277C A-B-Down-Y 277C A-B-Down-Y-R 277B Select-Down-Y 277B Select-Down-Y-R 277A Select-A-Down-Y 277A Select-A-Down-Y-R 2779 Select-B-Down-Y 2779 Select-B-Down-Y-R 2778 Select-A-B-Down-Y 2778 Select-A-B-Down-Y-R 2777 Start-Down-Y 2777 Start-Down-Y-R 2776 Start-A-Down-Y 2776 Start-A-Down-Y-R 2775 Start-B-Down-Y 2775 Start-B-Down-Y-R 2774 Start-A-B-Down-Y 2774 Start-A-B-Down-Y-R 2773 Start-Select-Down-Y 2773 Start-Select-Down-Y-R 276F Down-Right-Y 276F Down-Right-Y-R 276E A-Down-Right-Y 276E A-Down-Right-Y-R 276D B-Down-Right-Y 276D B-Down-Right-Y-R 276C A-B-Down-Right-Y 276C A-B-Down-Right-Y-R 276B Select-Down-Right-Y 276B Select-Down-Right-Y-R 276A Select-A-Down-Right-Y 276A Select-A-Down-Right-Y-R 2769 Select-B-Down-Right-Y 2769 Select-B-Down-Right-Y-R 2768 Select-A-B-Down-Right-Y 2768 Select-A-B-Down-Right-Y-R 2767 Start-Down-Right-Y 2767 Start-Down-Right-Y-R 2766 Start-A-Down-Right-Y 2766 Start-A-Down-Right-Y-R 2765 Start-B-Down-Right-Y 2765 Start-B-Down-Right-Y-R 2764 Start-A-B-Down-Right-Y 2764 Start-A-B-Down-Right-Y-R 2763 Start-Select-Down-Right-Y 2763 Start-Select-Down-Right-Y-R 275F Down-Left-Y 275F Down-Left-Y-R 275E A-Down-Left-Y 275E A-Down-Left-Y-R 275D B-Down-Left-Y 275D B-Down-Left-Y-R 275C A-B-Down-Left-Y 275C A-B-Down-Left-Y-R 275B Select-Down-Left-Y 275B Select-Down-Left-Y-R 275A Select-A-Down-Left-Y 275A Select-A-Down-Left-Y-R 2759 Select-B-Down-Left-Y 2759 Select-B-Down-Left-Y-R 2758 Select-A-B-Down-Left-Y 2758 Select-A-B-Down-Left-Y-R 2757 Start-Down-Left-Y 2757 Start-Down-Left-Y-R 2756 Start-A-Down-Left-Y 2756 Start-A-Down-Left-Y-R 2755 Start-B-Down-Left-Y 2755 Start-B-Down-Left-Y-R 2754 Start-A-B-Down-Left-Y 2754 Start-A-B-Down-Left-Y-R 2753 Start-Select-Down-Left-Y 2753 Start-Select-Down-Left-Y-R 25FF Y-L 25FE A-Y-L 25FD B-Y-L 25FC A-B-Y-L 25FB Select-Y-L 25FA Select-A-Y-L 25F9 Select-B-Y-L 25F8 Select-A-B-Y-L 25F7 Start-Y-L 25F6 Start-A-Y-L 25F5 Start-B-Y-L 25F4 Start-A-B-Y-L 25F3 Start-Select-Y-L 25EF Right-Y-L 25EE A-Right-Y-L 25ED B-Right-Y-L 25EC A-B-Right-Y-L 25EB Select-Right-Y-L 25EA Select-A-Right-Y-L 25E9 Select-B-Right-Y-L 25E8 Select-A-B-Right-Y-L 25E7 Start-Right-Y-L 25E6 Start-A-Right-Y-L 25E5 Start-B-Right-Y-L 25E4 Start-A-B-Right-Y-L 25E3 Start-Select-Right-Y-L 25DF Left-Y-L 25DE A-Left-Y-L 25DD B-Left-Y-L 25DC A-B-Left-Y-L 25DB Select-Left-Y-L 25DA Select-A-Left-Y-L 25D9 Select-B-Left-Y-L 25D8 Select-A-B-Left-Y-L 25D7 Start-Left-Y-L 25D6 Start-A-Left-Y-L 25D5 Start-B-Left-Y-L 25D4 Start-A-B-Left-Y-L 25D3 Start-Select-Left-Y-L 25BF Up-Y-L 25BE A-Up-Y-L 25BD B-Up-Y-L 25BC A-B-Up-Y-L 25BB Select-Up-Y-L 25BA Select-A-Up-Y-L 25B9 Select-B-Up-Y-L 25B8 Select-A-B-Up-Y-L 25B7 Start-Up-Y-L 25B6 Start-A-Up-Y-L 25B5 Start-B-Up-Y-L 25B4 Start-A-B-Up-Y-L 25B3 Start-Select-Up-Y-L 25AF Up-Right-Y-L 25AE A-Up-Right-Y-L 25AD B-Up-Right-Y-L 25AC A-B-Up-Right-Y-L 25AB Select-Up-Right-Y-L 25AA Select-A-Up-Right-Y-L 25A9 Select-B-Up-Right-Y-L 25A8 Select-A-B-Up-Right-Y-L 25A7 Start-Up-Right-Y-L 25A6 Start-A-Up-Right-Y-L 25A5 Start-B-Up-Right-Y-L 25A4 Start-A-B-Up-Right-Y-L 25A3 Start-Select-Up-Right-Y-L 259F Up-Left-Y-L 259E A-Up-Left-Y-L 259D B-Up-Left-Y-L 259C A-B-Up-Left-Y-L 259B Select-Up-Left-Y-L 259A Select-A-Up-Left-Y-L 2599 Select-B-Up-Left-Y-L 2598 Select-A-B-Up-Left-Y-L 2597 Start-Up-Left-Y-L 2596 Start-A-Up-Left-Y-L 2595 Start-B-Up-Left-Y-L 2594 Start-A-B-Up-Left-Y-L 2593 Start-Select-Up-Left-Y-L 257F Down-Y-L 257E A-Down-Y-L 257D B-Down-Y-L 257C A-B-Down-Y-L 257B Select-Down-Y-L 257A Select-A-Down-Y-L 2579 Select-B-Down-Y-L 2578 Select-A-B-Down-Y-L 2577 Start-Down-Y-L 2576 Start-A-Down-Y-L 2575 Start-B-Down-Y-L 2574 Start-A-B-Down-Y-L 2573 Start-Select-Down-Y-L 256F Down-Right-Y-L 256E A-Down-Right-Y-L 256D B-Down-Right-Y-L 256C A-B-Down-Right-Y-L 256B Select-Down-Right-Y-L 256A Select-A-Down-Right-Y-L 2569 Select-B-Down-Right-Y-L 2568 Select-A-B-Down-Right-Y-L 2567 Start-Down-Right-Y-L 2566 Start-A-Down-Right-Y-L 2565 Start-B-Down-Right-Y-L 2564 Start-A-B-Down-Right-Y-L 2563 Start-Select-Down-Right-Y-L 255F Down-Left-Y-L 255E A-Down-Left-Y-L 255D B-Down-Left-Y-L 255C A-B-Down-Left-Y-L 255B Select-Down-Left-Y-L 255A Select-A-Down-Left-Y-L 2559 Select-B-Down-Left-Y-L 2558 Select-A-B-Down-Left-Y-L 2557 Start-Down-Left-Y-L 2556 Start-A-Down-Left-Y-L 2555 Start-B-Down-Left-Y-L 2554 Start-A-B-Down-Left-Y-L 2553 Start-Select-Down-Left-Y-L 24FF Y-R-L 24FE A-Y-R-L 24FD B-Y-R-L 24FC A-B-Y-R-L 24FB Select-Y-R-L 24FA Select-A-Y-R-L 24F9 Select-B-Y-R-L 24F8 Select-A-B-Y-R-L 24F7 Start-Y-R-L 24F6 Start-A-Y-R-L 24F5 Start-B-Y-R-L 24F4 Start-A-B-Y-R-L 24EF Right-Y-R-L 24EE A-Right-Y-R-L 24ED B-Right-Y-R-L 24EC A-B-Right-Y-R-L 24EB Select-Right-Y-R-L 24EA Select-A-Right-Y-R-L 24E9 Select-B-Right-Y-R-L 24E8 Select-A-B-Right-Y-R-L 24E7 Start-Right-Y-R-L 24E6 Start-A-Right-Y-R-L 24E5 Start-B-Right-Y-R-L 24E4 Start-A-B-Right-Y-R-L 24DF Left-Y-R-L 24DE A-Left-Y-R-L 24DD B-Left-Y-R-L 24DC A-B-Left-Y-R-L 24DB Select-Left-Y-R-L 24DA Select-A-Left-Y-R-L 24D9 Select-B-Left-Y-R-L 24D8 Select-A-B-Left-Y-R-L 24D7 Start-Left-Y-R-L 24D6 Start-A-Left-Y-R-L 24D5 Start-B-Left-Y-R-L 24D4 Start-A-B-Left-Y-R-L 24BF Up-Y-R-L 24BE A-Up-Y-R-L 24BD B-Up-Y-R-L 24BC A-B-Up-Y-R-L 24BB Select-Up-Y-R-L 24BA Select-A-Up-Y-R-L 24B9 Select-B-Up-Y-R-L 24B8 Select-A-B-Up-Y-R-L 24B7 Start-Up-Y-R-L 24B6 Start-A-Up-Y-R-L 24B5 Start-B-Up-Y-R-L 24B4 Start-A-B-Up-Y-R-L 24AF Up-Right-Y-R-L 24AE A-Up-Right-Y-R-L 24AD B-Up-Right-Y-R-L 24AC A-B-Up-Right-Y-R-L 24AB Select-Up-Right-Y-R-L 24AA Select-A-Up-Right-Y-R-L 24A9 Select-B-Up-Right-Y-R-L 24A8 Select-A-B-Up-Right-Y-R-L 24A7 Start-Up-Right-Y-R-L 24A6 Start-A-Up-Right-Y-R-L 24A5 Start-B-Up-Right-Y-R-L 24A4 Start-A-B-Up-Right-Y-R-L 249F Up-Left-Y-R-L 249E A-Up-Left-Y-R-L 249D B-Up-Left-Y-R-L 249C A-B-Up-Left-Y-R-L 249B Select-Up-Left-Y-R-L 249A Select-A-Up-Left-Y-R-L 2499 Select-B-Up-Left-Y-R-L 2498 Select-A-B-Up-Left-Y-R-L 2497 Start-Up-Left-Y-R-L 2496 Start-A-Up-Left-Y-R-L 2495 Start-B-Up-Left-Y-R-L 2494 Start-A-B-Up-Left-Y-R-L 247F Down-Y-R-L 247E A-Down-Y-R-L 247D B-Down-Y-R-L 247C A-B-Down-Y-R-L 247B Select-Down-Y-R-L 247A Select-A-Down-Y-R-L 2479 Select-B-Down-Y-R-L 2478 Select-A-B-Down-Y-R-L 2477 Start-Down-Y-R-L 2476 Start-A-Down-Y-R-L 2475 Start-B-Down-Y-R-L 2474 Start-A-B-Down-Y-R-L 246F Down-Right-Y-R-L 246E A-Down-Right-Y-R-L 246D B-Down-Right-Y-R-L 246C A-B-Down-Right-Y-R-L 246B Select-Down-Right-Y-R-L 246A Select-A-Down-Right-Y-R-L 2469 Select-B-Down-Right-Y-R-L 2468 Select-A-B-Down-Right-Y-R-L 2467 Start-Down-Right-Y-R-L 2466 Start-A-Down-Right-Y-R-L 2465 Start-B-Down-Right-Y-R-L 2464 Start-A-B-Down-Right-Y-R-L 245F Down-Left-Y-R-L 245E A-Down-Left-Y-R-L 245D B-Down-Left-Y-R-L 245C A-B-Down-Left-Y-R-L 245B Select-Down-Left-Y-R-L 245A Select-A-Down-Left-Y-R-L 2459 Select-B-Down-Left-Y-R-L 2458 Select-A-B-Down-Left-Y-R-L 2457 Start-Down-Left-Y-R-L 2456 Start-A-Down-Left-Y-R-L 2455 Start-B-Down-Left-Y-R-L 2454 Start-A-B-Down-Left-Y-R-L 23FF X-Y 23FE A-X-Y 23FD B-X-Y 23FC A-B-X-Y 23FB Select-X-Y 23FA Select-A-X-Y 23F9 Select-B-X-Y 23F8 Select-A-B-X-Y 23F7 Start-X-Y 23F6 Start-A-X-Y 23F5 Start-B-X-Y 23F4 Start-A-B-X-Y 23F3 Start-Select-X-Y 23EF Right-X-Y 23EE A-Right-X-Y 23ED B-Right-X-Y 23EC A-B-Right-X-Y 23EB Select-Right-X-Y 23EA Select-A-Right-X-Y 23E9 Select-B-Right-X-Y 23E8 Select-A-B-Right-X-Y 23E7 Start-Right-X-Y 23E6 Start-A-Right-X-Y 23E5 Start-B-Right-X-Y 23E4 Start-A-B-Right-X-Y 23E3 Start-Select-Right-X-Y 23DF Left-X-Y 23DE A-Left-X-Y 23DD B-Left-X-Y 23DC A-B-Left-X-Y 23DB Select-Left-X-Y 23DA Select-A-Left-X-Y 23D9 Select-B-Left-X-Y 23D8 Select-A-B-Left-X-Y 23D7 Start-Left-X-Y 23D6 Start-A-Left-X-Y 23D5 Start-B-Left-X-Y 23D4 Start-A-B-Left-X-Y 23D3 Start-Select-Left-X-Y 23BF Up-X-Y 23BE A-Up-X-Y 23BD B-Up-X-Y 23BC A-B-Up-X-Y 23BB Select-Up-X-Y 23BA Select-A-Up-X-Y 23B9 Select-B-Up-X-Y 23B8 Select-A-B-Up-X-Y 23B7 Start-Up-X-Y 23B6 Start-A-Up-X-Y 23B5 Start-B-Up-X-Y 23B4 Start-A-B-Up-X-Y 23B3 Start-Select-Up-X-Y 23AF Up-Right-X-Y 23AE A-Up-Right-X-Y 23AD B-Up-Right-X-Y 23AC A-B-Up-Right-X-Y 23AB Select-Up-Right-X-Y 23AA Select-A-Up-Right-X-Y 23A9 Select-B-Up-Right-X-Y 23A8 Select-A-B-Up-Right-X-Y 23A7 Start-Up-Right-X-Y 23A6 Start-A-Up-Right-X-Y 23A5 Start-B-Up-Right-X-Y 23A4 Start-A-B-Up-Right-X-Y 23A3 Start-Select-Up-Right-X-Y 239F Up-Left-X-Y 239E A-Up-Left-X-Y 239D B-Up-Left-X-Y 239C A-B-Up-Left-X-Y 239B Select-Up-Left-X-Y 239A Select-A-Up-Left-X-Y 2399 Select-B-Up-Left-X-Y 2398 Select-A-B-Up-Left-X-Y 2397 Start-Up-Left-X-Y 2396 Start-A-Up-Left-X-Y 2395 Start-B-Up-Left-X-Y 2394 Start-A-B-Up-Left-X-Y 2393 Start-Select-Up-Left-X-Y 237F Down-X-Y 237E A-Down-X-Y 237D B-Down-X-Y 237C A-B-Down-X-Y 237B Select-Down-X-Y 237A Select-A-Down-X-Y 2379 Select-B-Down-X-Y 2378 Select-A-B-Down-X-Y 2377 Start-Down-X-Y 2376 Start-A-Down-X-Y 2375 Start-B-Down-X-Y 2374 Start-A-B-Down-X-Y 2373 Start-Select-Down-X-Y 236F Down-Right-X-Y 236E A-Down-Right-X-Y 236D B-Down-Right-X-Y 236C A-B-Down-Right-X-Y 236B Select-Down-Right-X-Y 236A Select-A-Down-Right-X-Y 2369 Select-B-Down-Right-X-Y 2368 Select-A-B-Down-Right-X-Y 2367 Start-Down-Right-X-Y 2366 Start-A-Down-Right-X-Y 2365 Start-B-Down-Right-X-Y 2364 Start-A-B-Down-Right-X-Y 2363 Start-Select-Down-Right-X-Y 235F Down-Left-X-Y 235E A-Down-Left-X-Y 235D B-Down-Left-X-Y 235C A-B-Down-Left-X-Y 235B Select-Down-Left-X-Y 235A Select-A-Down-Left-X-Y 2359 Select-B-Down-Left-X-Y 2358 Select-A-B-Down-Left-X-Y 2357 Start-Down-Left-X-Y 2356 Start-A-Down-Left-X-Y 2355 Start-B-Down-Left-X-Y 2354 Start-A-B-Down-Left-X-Y 2353 Start-Select-Down-Left-X-Y Last edited by Kaphotics; Dec 31st, 2011 at 6:12:02 AM. |
|
|
|
|
|
#872 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
PokéRadar Abuse: 15 Test Cases
In these examples, I used seeds in which 2 Shiny Patches should spawn if I had a chain of 40+. 6/15 times only 1 would spawn. Code:
Seed Shiny Rare Common 9E4C2C26 2 2 0 03533C8B 2 2 0 6776E496 2 2 0 493847BB 2 2 0 20851176 2 2 0 B3F5A0F3 2 2 0 1AF5F499 2 1 1 6AE5AA00 2 1 1 A0BD8446 2 1 1 4B5E1680 1 2 1 E8F1238E 1 2 1 B51852BE 1 1 2 07A888C8 1 1 2 6FBB02E7 1 0 3 D20B5EAD 1 0 3
Both Shiny Patches Spawned
Only One Shiny Patch Spawns
Stepping into ANY patch at ANY chain length: Code:
n initial
n + 1 ??
n + 2 ??
n + 3 nature
pid
iv
m + 1 ??
m + 2 ??
m + 3 ??
m + 4 ??
m + 5 ??
*m + 6 ?
*m + 7 ?
five calls after PIDIV generated, 2 calls before nature.
unrelated calls below?
then there's another single one when the battle shifts start.
and another when you start throwing your pokemon out
If I move to make certain shaking patches outside of the area, they simply won't spawn. The game only does 4 position calcs, and based on the valid positions it does 2*valid calls. It compares between the two sets of calls (position and ESV/Shiny) to determine type somehow. Instead of finishing this it was decided to finish up Chatot confirmation for gen 4 (High16 & 0x1FF * pitch >> 13, essentially %8192/AAB) and for gen 5 too. It's gonna be displayed in a 0-99 pitch scale because it's not 3 distinct levels. Last edited by Kaphotics; Jan 5th, 2012 at 1:26:27 AM. |
|
|
|
|
|
#873 |
|
Join Date: Jan 2012
Posts: 1
Stanford, CA
|
Hi, I'm new to smogon; is there any chance I could jump on board with this research? I've studied and done research in cryptography/PRNGs/Hashing algos at multiple Ivy leagues and I think I could help...
|
|
|
|
|
|
#874 |
|
Remodeling Kitchens
![]()
Join Date: Apr 2009
Posts: 758
Berkeley, CA
|
Toyed with the RAM and was able to find the locations where the patches are set.
Each patch is separated by 0x28 (40d) Made a Lua script to display the positions relative to the trainer, including patchtype and shiny. aka "Radar HUD" ![]()
Lua script (.lua)
I tried to make the Lua easily readable, and made the onscreen HUD a little prettier by making +/- numbers spaced proper. edit: pretty sure everything is tidied up There's another flag that determines if the chain is continued (at least I think that's what it does). It's between the Enabler and Shiny Flags. Too lazy to get pointers for the table and player position, so that's gotta be manually edited as a setup stage. -- self note: seed C9C4FC3E creates 4 patches in a line to the left. ez Last edited by Kaphotics; Jan 6th, 2012 at 4:28:00 AM. Reason: final version - improved chain (y/n) detection |
|
|
|
|
|
#875 |
|
Join Date: Apr 2011
Posts: 25
|
This seems to be the best place to mention this. It occurred to me just yesterday that a very useful application of RNG abuse (one which non-hacking players like myself would find highly appealing) would be to abuse the Pickup ability, specifically the non-battle effect of the Pickup ability.
What drove me to look into this was the simple yet stupid way that Game Freak made the wifi room battle rules this gen. Forcing us to train every Pokemon to level 100 for 6v6 singles was a huge slap in the face of every non-hacking competitive battler out there. So as nice as it is to have good old RNG reporter level the playing field in terms of IV's and Hidden Powers, there is still no way to quickly level up those perfect Pokemon, and so many will turn to AR or some other hacking device, just for the sake of hacking those hard-to-get Rare Candies. But for us bold few who want to resist that temptation, there is still another way to save up those Rare Candies, and all it involves is beginner-level RNG abuse. From some simple experiments that anyone could do, I have discovered that you CAN abuse the Pickup ability, and it is very easy. What I know so far can be summed up as follows: Let's say your team of six (Pickup ability) Pokemon consists of Pokemon A thru F, with A being the lead and F being the sixth member. You hit some random seed, immeadiately (Frame 1) encounter and defeat a wild Pokemon, and by happy coincidence, you discover after the battle: 1. Pokemon A is holding a Rare Candy <<<< Just an example 2. Pokemon F is holding a Max Revive If you hit this same seed again (you can remove the items and save first), and have a well-behaved Timer0, the SAME POSITIONS in your team (the 1st and 6th members in my example) will be holding items again, as long as they have Pickup of course, and are not already holding something. But that's not all! The items being held can be changed by thinking of them as being analogous to Encounter slots. In this case, we have "Item slots." The SEED is what determines the item SLOT for a particular team position (and whether there will be one at all; remember, Pickup only grants an item 10% of the time). What determines the specific item is the Pokemon's LEVEL. So by replacing the 6th member of my example team with a much lower or higher-level Pickup user, we can change that Max Revive into almost a dozen different items if we so desire. So let's say that positions A and F on my example team each have a Lv92 Aipom. In another position, say, position E, I have a Lv42 Lillipup. By looking up the item slot tables via Wikipedia, Serebii, etc we see that Aipom F picked up the item in the last column of the "Uncommon" Pickup items. That column represents the ITEM SLOT for that team position. We also see that, in this same column, there is a Rare Candy in the Lv41-50 range. By switching my Lv42 Lillipup with Aipom F, saving, and hitting the seed again, I check my result.... ....and find positions A and F now BOTH have Rare Candies! I hope the above paragraphs are clear. Let me know if there are issues. Ideally, the best thing to find would be a seed that yields 3 or 4 items after the first battle. The logic is all there, all that's missing is the computer program ("P-UpRNG Reporter" ??) to allow users to find ultra-rare 5 or 6 item seeds with the Item Slots they want. Rare Candies, PP Ups, Nuggets, and more. As many as 6 every two minutes. It's almost as fast as hacking. And the best part.... it's not hacking.
__________________
4th Gen BATTLES: 0088 6108 4651 (Plat FC) |
|
|
|
![]() |
| Tags |
| NULL |
| Thread Tools | |
|
|