Vai al commento

Calcolare PRV (Pokemon Residual Value) di un PID


Melo91

Post raccomandati

Come da titolo. Come si calcola il PRV (pokemon residual value) ? So come calcolare il TRV (trainer residual value) ovvero convertire in Hex gli ultimi quattro bit dello Xor tra TID e SID. Ma non so come procedere con il PID, che va calcolato a solo. Questo perché non so che tipo di operazione va fatta.

Se PRV e TRV sono uguali, shiny è uno square.

Link al commento
Condividi su altre piattaforme

Ciao! Intendi per caso il PSV e il TSV? ti chiedo in tal caso di essere più chiaro con la tua richiesta (modificando il topic anche dal punto di vista grammaticale), cosicché gli utenti possano aiutarti. :) Sposto inoltre il topic nella sezione corretta.


Edit: come non detto, tutto chiaro :3

BBB63B19-3032-4F59-A8E5-61291DA876A0.png.b66c7c89dcf4e088e3db88b9c1749578.png
Tooru Amuro by Chube

 

detective-conan-tooru-amuro.gif

~~~

POKÉCLUB - IL CULTO DI BW

Link al commento
Condividi su altre piattaforme

Questa è una domanda insolita che in genere non interessa porre, dato che gli strumenti di RNG calcolano automaticamente il PSV e il PRV dei pokemon dei quali predicono l'apparizione, ma provo a rispondere con un po' di "matematica". Fra l'altro ho trovato questa tua domanda per caso, se avessi chiesto direttamente nella discussione in cui ne parlavo, ti avrei risposto senz'altro prima :oopsie:

 

Partendo dalle basi, IL modo con cui i giochi determinano se un pokemon è shiny oppure no dipende dal risultato della seguente operazione:

 

TID xor SID xor PID31-16 xor PID15-0

Spoiler

Lo xor bit a bit è un'operazione logica che ha per risultato 1 se i bit confrontati hanno valore differente, 0 altrimenti.

 

Interpretando in base 10 il risultato di questa operazione allora avremo:

  1. L'incontro/la schiusa/il ricevimento di un pokemon regular, ovvero non cromatico, se il valore convertito è maggiore o uguale a 16;
  2. L'incontro/la schiusa/il ricevimento di un pokemon Star Shiny, ovvero cromatico con animazione a stelle, se il valore convertito è compreso fra 1 e 15 (estremi compresi);
  3. L'incontro/la schiusa/il ricevimento di un pokemon Square Shiny, ovvero cromatico con animazione a quadri, se il valore convertito è esattamente uguale a 0.

Mettendo da parte la conversione da sistema binario a decimale, un pokemon è shiny (di qualsiasi tipo) se il risultato dell'operazione è

 

000000000000xxxx

 

dove le quattro "x" sul finale corrispondono ai quattro bit meno significativi (quelli più a destra) del risultato. Se quindi "xxxx" è uguale a "0000" allora avremo davanti uno Square Shiny, mentre qualsiasi altra configurazione (da "0001" a "1111") porterà invece a uno Star Shiny.

 

Se si ha dimestichezza con le operazioni binarie, quanto osservato permette già di intuire la soluzione dell'enigma e l'intera meccanica di TSV/PSV e TRV/PRV.
I 12 bit più significativi di quel bruttissimo xor equivalgono, in un certo senso, al confronto di uguaglianza fra TSV e PSV, mentre i 4 bit meno significativi equivalgono in maniera analoga al confronto fra TRV e PRV. Ma un esempio vale più di mille parole.

 

Supponiamo (neppure poi tanto :xd:) che un giocatore abbia TID = 19562 e SID = 49485. Questi valori corrispondono allora ai seguenti in sistema binario:

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1

 

Separando concettualmente i 12 bit più significativi dai 4 meno significativi avremo quindi:

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 --- 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 --- 1 1 0 1

 

ed effettuando lo xor bit a bit troviamo allora

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 --- 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 --- 1 1 0 1
              1 0 0 0 1 1 0 1 0 0 1 0 --- 0 1 1 1

 

I 12 bit più significativi del risultato, 100011010010, convertiti in base 10 corrispondono al valore 2258, il quale viene definito come TSV (Trainer Shiny Value) del giocatore stesso.
Analogamente i 4 bit meno significativi del risultato, 0111, convertiti in base 10 corrispondono al valore 7, che senza troppa fantasia viene definito come TRV (Trainer Residual Value). Occhio al fatto che spesso il TRV si preferisce interpretarlo in base 16 con un'unica cifra, per cui 10 = A, 11 = B, 12 = C, 13 = D, 14 = E e 15 = F.

 

Questa spiegazione la si può trovare un po' ovunque su internet al giorno d'oggi, mentre nessuno parla mai di PSV (o ESV) e PRV (o ERV), se non concettualmente, dato che questi li fornisce di solito l'RNG tool di turno. Tuttavia, per quanto osservato dallo XOR fra TID e SID e tenendo presente l'operazione di XOR da cui siamo partiti, bastano poche altre considerazioni per comprendere cosa sono questi valori che nessuno si prende la briga di spiegare.

 

Tornando alla prima operazione scriviamola dunque come

 

(TID xor SID) xor (PID31-16 xor PID15-0)

 

Abbiamo visto come concettualmente le parentesi a sinistra contengono in un certo senso le informazioni di TSV e TRV, per cui dalle parentesi a destra è lecito aspettarsi che contengano le informazioni circa il PSV e il PRV, dato che operano sul PID di un pokemon selvatico, da schiudere o da ricevere. Be', più che lecito aspettarselo, è proprio così che PSV e PRV sono definiti. :oopsie:

 

Il PID di un pokemon è considerato come il suo Personality Value, rappresentato solitamente come un valore esadecimale a 8 cifre.


Supponiamo (anche questa volta neanche troppo :xd:) che un pokemon incontrato abbia PID = 2F05 A222. Questo, convertito in base 2 e spezzato a metà diventa allora

 

PID31-16 -> 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 ---> 16 bit più significativi, 2F05
PID15-0 --> 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 ---> 16 bit meno significativi, A222

 

Dividendo come prima nei 12 bit più significativi e 4 bit meno significativi ed eseguendo l'operazione di XOR bit a bit otteniamo

 

PID31-16 -> 0 0 1 0 1 1 1 1 0 0 0 0 --- 0 1 0 1 
PID15-0 --> 1 0 1 0 0 0 1 0 0 0 1 0 --- 0 0 1 0
                      1 0 0 0 1 1 0 1 0 0 1 0 --- 0 1 1 1

 

Incredibilmente e in maniera del tutto inaspettata (:xd:), i 12 bit più significativi del risultato, 100011010010, convertiti in base 10 corrispondono come prima al valore 2258, il quale viene definito come PSV (Pokemon Shiny Value) del pokemon incontrato.
Analogamente i 4 bit meno significativi del risultato, 0111, convertiti in base 10 corrispondono al valore 7, che sempre senza troppa fantasia viene definito come PRV (Pokemon Residual Value).

 

Ebbene sì Signore e Signori, abbiamo trovato un pokemon Square Shiny!!! :xd:

 

Infine, la RISPOSTA!

Ironia a parte, per concludere, considerando il PID di un pokemon e le 8 cifre esadecimali di cui è composto

 

7 6 5  4 3  2 1  0 -> (si numera sempre da più significativa a meno significativa)
X X X X X X X X

 

lo xor fra le cifre 4 e 0 convertite in sistema binario ha per risultato il valore binario corrispondente al PRV, mentre lo xor fra le cifre 765 e 321 forniscono il valore binario del PSV.

 

Ancora un esempio, giusto per far chiarezza. Se il giocatore di cui sopra (TSV = 2258, TRV = 7) ricomponesse un fossile di Galar avente PID = 458F C8AA, cosa avrebbe davanti?

 

458 => 0 1 0 0 0 1 0 1 1 0 0 0 xor
C8A => 1 1 0 0 1 0 0 0 1 0 1 0 =
=====> 1 0 0 0 1 1 0 1 0 0 1 0

 

che in decimale da un PSV = 2258, quindi un altro Shiny! Ma di che tipo?

 

F => 1 1 1 1  xor
A => 1 0 1 0
===> 0 1 0 1 

 

che in esadecimale e in decimale da un PRV = 5, per cui shiny sì, ma niente quadratini luccicanti, questa volta "solo" stelline :(

 

Per completezza, lo XOR originale effettuato dal gioco è infatti

 

TID xor SID xor PID31-16 xor PID15-0 , vale a dire

 

TID -------> 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0
SID -------> 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1
PID31-16 ====> 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1
PID15-0 ====>   1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0
                          0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
che in decimale fa 2 :cry:

Link al commento
Condividi su altre piattaforme

On 4/12/2020 at 16:21, SliceOfLife ha scritto:

Questa è una domanda insolita che in genere non interessa porre, dato che gli strumenti di RNG calcolano automaticamente il PSV e il PRV dei pokemon dei quali predicono l'apparizione, ma provo a rispondere con un po' di "matematica". Fra l'altro ho trovato questa tua domanda per caso, se avessi chiesto direttamente nella discussione in cui ne parlavo, ti avrei risposto senz'altro prima :oopsie:

 

Partendo dalle basi, IL modo con cui i giochi determinano se un pokemon è shiny oppure no dipende dal risultato della seguente operazione:

 

TID xor SID xor PID31-16 xor PID15-0

  Apri contenuto nascosto

Lo xor bit a bit è un'operazione logica che ha per risultato 1 se i bit confrontati hanno valore differente, 0 altrimenti.

 

Interpretando in base 10 il risultato di questa operazione allora avremo:

  1. L'incontro/la schiusa/il ricevimento di un pokemon regular, ovvero non cromatico, se il valore convertito è maggiore o uguale a 16;
  2. L'incontro/la schiusa/il ricevimento di un pokemon Star Shiny, ovvero cromatico con animazione a stelle, se il valore convertito è compreso fra 1 e 15 (estremi compresi);
  3. L'incontro/la schiusa/il ricevimento di un pokemon Square Shiny, ovvero cromatico con animazione a quadri, se il valore convertito è esattamente uguale a 0.

Mettendo da parte la conversione da sistema binario a decimale, un pokemon è shiny (di qualsiasi tipo) se il risultato dell'operazione è

 

000000000000xxxx

 

dove le quattro "x" sul finale corrispondono ai quattro bit meno significativi (quelli più a destra) del risultato. Se quindi "xxxx" è uguale a "0000" allora avremo davanti uno Square Shiny, mentre qualsiasi altra configurazione (da "0001" a "1111") porterà invece a uno Star Shiny.

 

Se si ha dimestichezza con le operazioni binarie, quanto osservato permette già di intuire la soluzione dell'enigma e l'intera meccanica di TSV/PSV e TRV/PRV.
I 12 bit più significativi di quel bruttissimo xor equivalgono, in un certo senso, al confronto di uguaglianza fra TSV e PSV, mentre i 4 bit meno significativi equivalgono in maniera analoga al confronto fra TRV e PRV. Ma un esempio vale più di mille parole.

 

Supponiamo (neppure poi tanto :xd:) che un giocatore abbia TID = 19562 e SID = 49485. Questi valori corrispondono allora ai seguenti in sistema binario:

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1

 

Separando concettualmente i 12 bit più significativi dai 4 meno significativi avremo quindi:

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 --- 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 --- 1 1 0 1

 

ed effettuando lo xor bit a bit troviamo allora

 

TID -> 0 1 0 0 1 1 0 0 0 1 1 0 --- 1 0 1 0
SID -> 1 1 0 0 0 0 0 1 0 1 0 0 --- 1 1 0 1
              1 0 0 0 1 1 0 1 0 0 1 0 --- 0 1 1 1

 

I 12 bit più significativi del risultato, 100011010010, convertiti in base 10 corrispondono al valore 2258, il quale viene definito come TSV (Trainer Shiny Value) del giocatore stesso.
Analogamente i 4 bit meno significativi del risultato, 0111, convertiti in base 10 corrispondono al valore 7, che senza troppa fantasia viene definito come TRV (Trainer Residual Value). Occhio al fatto che spesso il TRV si preferisce interpretarlo in base 16 con un'unica cifra, per cui 10 = A, 11 = B, 12 = C, 13 = D, 14 = E e 15 = F.

 

Questa spiegazione la si può trovare un po' ovunque su internet al giorno d'oggi, mentre nessuno parla mai di PSV (o ESV) e PRV (o ERV), se non concettualmente, dato che questi li fornisce di solito l'RNG tool di turno. Tuttavia, per quanto osservato dallo XOR fra TID e SID e tenendo presente l'operazione di XOR da cui siamo partiti, bastano poche altre considerazioni per comprendere cosa sono questi valori che nessuno si prende la briga di spiegare.

 

Tornando alla prima operazione scriviamola dunque come

 

(TID xor SID) xor (PID31-16 xor PID15-0)

 

Abbiamo visto come concettualmente le parentesi a sinistra contengono in un certo senso le informazioni di TSV e TRV, per cui dalle parentesi a destra è lecito aspettarsi che contengano le informazioni circa il PSV e il PRV, dato che operano sul PID di un pokemon selvatico, da schiudere o da ricevere. Be', più che lecito aspettarselo, è proprio così che PSV e PRV sono definiti. :oopsie:

 

Il PID di un pokemon è considerato come il suo Personality Value, rappresentato solitamente come un valore esadecimale a 8 cifre.


Supponiamo (anche questa volta neanche troppo :xd:) che un pokemon incontrato abbia PID = 2F05 A222. Questo, convertito in base 2 e spezzato a metà diventa allora

 

PID31-16 -> 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 ---> 16 bit più significativi, 2F05
PID15-0 --> 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 ---> 16 bit meno significativi, A222

 

Dividendo come prima nei 12 bit più significativi e 4 bit meno significativi ed eseguendo l'operazione di XOR bit a bit otteniamo

 

PID31-16 -> 0 0 1 0 1 1 1 1 0 0 0 0 --- 0 1 0 1 
PID15-0 --> 1 0 1 0 0 0 1 0 0 0 1 0 --- 0 0 1 0
                      1 0 0 0 1 1 0 1 0 0 1 0 --- 0 1 1 1

 

Incredibilmente e in maniera del tutto inaspettata (:xd:), i 12 bit più significativi del risultato, 100011010010, convertiti in base 10 corrispondono come prima al valore 2258, il quale viene definito come PSV (Pokemon Shiny Value) del pokemon incontrato.
Analogamente i 4 bit meno significativi del risultato, 0111, convertiti in base 10 corrispondono al valore 7, che sempre senza troppa fantasia viene definito come PRV (Pokemon Residual Value).

 

Ebbene sì Signore e Signori, abbiamo trovato un pokemon Square Shiny!!! :xd:

 

Infine, la RISPOSTA!

Ironia a parte, per concludere, considerando il PID di un pokemon e le 8 cifre esadecimali di cui è composto

 

7 6 5  4 3  2 1  0 -> (si numera sempre da più significativa a meno significativa)
X X X X X X X X

 

lo xor fra le cifre 4 e 0 convertite in sistema binario ha per risultato il valore binario corrispondente al PRV, mentre lo xor fra le cifre 765 e 321 forniscono il valore binario del PSV.

 

Ancora un esempio, giusto per far chiarezza. Se il giocatore di cui sopra (TSV = 2258, TRV = 7) ricomponesse un fossile di Galar avente PID = 458F C8AA, cosa avrebbe davanti?

 

458 => 0 1 0 0 0 1 0 1 1 0 0 0 xor
C8A => 1 1 0 0 1 0 0 0 1 0 1 0 =
=====> 1 0 0 0 1 1 0 1 0 0 1 0

 

che in decimale da un PSV = 2258, quindi un altro Shiny! Ma di che tipo?

 

F => 1 1 1 1  xor
A => 1 0 1 0
===> 0 1 0 1 

 

che in esadecimale e in decimale da un PRV = 5, per cui shiny sì, ma niente quadratini luccicanti, questa volta "solo" stelline :(

 

Per completezza, lo XOR originale effettuato dal gioco è infatti

 

TID xor SID xor PID31-16 xor PID15-0 , vale a dire

 

TID -------> 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0
SID -------> 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1
PID31-16 ====> 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1
PID15-0 ====>   1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0
                          0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
che in decimale fa 2 :cry:

Sei stato gentilissimo e molto chiaro. Grazie. 

Potete chiudere. 

Link al commento
Condividi su altre piattaforme

Archiviata

La discussione è ora archiviata e chiusa ad ulteriori risposte.

Visitatore
Questa discussione è stata chiusa, non è possibile aggiungere nuove risposte.
  • Utenti nella discussione   0 utenti

    • Nessun utente registrato sta visualizzando questa pagina.
×
×
  • Crea...