Questo Forum utilizza i Cookies
Questo Forum fa uso di Cookies per memorizzare le informazioni di login se sei registrato o sulla tua ultima visita se non siete registrati. I Cookies sono piccoli documenti di testo memorizzati sul vostro computer; i Cookies impostati dal Forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza. I Cookies su questo forum servono anche a monitorare gli argomenti specifici che hai letto. Si prega di confermare se accettare o rifiutare i Cookies impostati.

Un cookie verrà memorizzato nel browser indipendentemente dalla scelta, per evitare che il Forum faccia nuovamente questa domanda. Sarete in grado di modificare le impostazioni dei cookies in qualsiasi momento tramite il link a piè di pagina

Rispondi 
[Rosso fuoco] Premi quantit√† Market
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #1
Premi quantità Market
[Immagine: aid1908083-v4-728px-Get-Premier-Balls-in...Step-2.jpg]

E dopo aver effettuato l'acquisto il cassiere vi comunica che avete ricevuto in regalo una Premier Ball perch√© avete acquistato pi√Ļ di 9 Pok√© Ball...sempre che stiate giocando a RSE, perch√© in FireRed questa Funzione non esiste, quindi implementiamola e MIGLIORIAMOLAH! Pacman

Partendo da una routine di Spherical Ice, se avete seguito lo sviluppo della mia hack, sapete già cosa abbia realizzato. Oggi, sotto richiesta di qualche utente, rendo la funzione pubblica, dato che ho corretto i bug di quando ero niubbo!
EDIT: con il tempo si migliora e ho migliorato ad oggi ulteriormente la routine.

Vediamo la routine:

Codice:
.thumb

main:
    push {r4,r5,r6, lr}
    lsl r0, r0, #0x18
    lsr r4, r0, #0x18    
    lsl r0, r4, #2
    add r0, r0, r4
    lsl r0, r0, #3
    ldr r1, =(0x03005098) @ tasks.args
    add r5, r0, r1
    ldr r0, =(0x030030F0) @ super
    ldrh r1, [r0, #0x2E]
    mov r0, #0x3
    and r0, r1
    cmp r0, #0
    beq end
    
continue:
    mov r0, #5
    ldr r3, =(0x080722CC|1) @ audio_play
    bl call_via_r3
    mov r1, #0xA
    ldrh r0, [r5, r1]
    mov r1, #0
    ldrh r3, =0xffff

trova:
    ldr r6, =(tabella_obj)
    add r6, r6, r1
    ldrh r6, [r6]
    cmp r6, r3
    beq no_premier_ball
    cmp r0, r6 @item_ID
    beq premio
    add r1, #2
    b trova

premio:
    ldr r6, =(tabella_premi)
    add r6, r6, r1
    ldrh r6, [r6] @id_oggetto_premio
    b assegna


assegna:
    mov r1, #2
    ldrh r0, [r5, r1]
    cmp r0, #0x9 @ Maximum quantity of Balls to not qualify for a Premier Ball
    ble no_premier_ball
    mov r0, r6 @ Regalo item ID
    mov r1, #1 @ Quantity to give
    ldr r3, =(0x0809A084|1) @ bag_add_item
    bl call_via_r3
    lsl r0, r0, #0x18
    lsr r0, r0, #0x18
    cmp r0, #1
    bne no_premier_ball
    ldr r1, =(0x08XXXXXX) @ indirizzo del messaggio del premio
    ldr r2, =(0x0809BF98|1)
    mov r0, r4
    ldr r3, =(0x0813F75C|1)
    bl call_via_r3
    b end
  
no_premier_ball:
    mov r0, r4
    ldr r3, =(0x0809BF98|1)
    bl call_via_r3
    
end:
    pop {r4,r5,r6}
    pop {r0}
    bx r0
    
call_via_r3:
    bx r3


Prima di compilare la routine bisogna fare qualche precisazione e modifica.
La routine è estesa a qualsivoglia oggetto venduto nel market. Anche espandendo gli strumenti si può utilizzare questa routine, dato che riconosce ben 0xFFFE oggetti, ma capiamo bene come funziona.

Passiamo alla parte che dovrete editare voi.

Oggetto che assegna il premio:
Questa routine non si ferma alla sola pokéball, ma si applica a qualsiasi oggetto, come già detto, spetta a noi decidere quale.
In uno spazio libero costruiamo una table con gli ID degli strumenti che vogliamo rendere "speciali" (non è detto che ci sia anche la pokéball). Ogni ID occupa 2 byte in ordine scambiato (cioè la pokéball che ha ID 4 va scritta così: 04 00) e va scritto uno dopo l'altro, la table termina con 0xFFFF

esempio:
pokéball, pozione, FINE -> 04 00 0D 00 FF FF

Inserite l'offset di questa table al posto di (tabella_obj). Es. offset 800000, sarà scritto (0x8800000)

Oggetto premio:
Nello stesso modo ed ordine assegniamo il premio costruendo una seconda table.

esempio premi per la table precedente:
premierball, masterball, FINE -> 0C 00 01 00 FF FF

Inserite l'offset di questa table al posto di (tabella_premi). Es. offset 800020, sarà scritto (0x8800020)

Messaggio premio:
Scorrendo nella routine trovare la parte con delle XXXXXX. Qui dovete mettere l'offset del messaggi del premio, del tipo "Complimenti! Per aver acquistato 10 strumenti tutti insieme, hai diritto a ricevere questo premio!". Compilate all'interno della ROM con xse o qualsiasi altro tool utilizziate e mettete l'offset nella routine.
Per facilitarvi il lavoro ho messo una specie di nota per indicare a cosa il messaggio si debba riferire, es.

ldr r1, =(0x08XXXXXX) @ indirizzo del messaggio del premio

Quando avrete eseguito questi passaggi, procedete a compilare la routine, inseritela nella ROM ed inserite il puntatore +1 all'offset 0x0809BF64. Salvate tutto e FINE!
Non servono scrip0t o altre cose, verrà fatto tutto in automatico.

N.B. I premi si sbloccano se si compra in una sola volta 10 o pi√Ļ unit√† di quello strumento. Se in una sola volta si comprano 20 o pi√Ļ strumenti, si ricever√† sempre e solo 1 unit√† di quel premio, come nei giochi ufficiali.

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]
(Questo messaggio è stato modificato l'ultima volta il: 20-06-2022 07:50 PM da eMMe97.)
28-01-2019 11:56 AM
Cerca Cita
 Mi piace ricevuti da: Qwerty_98 , IvanFGK , Flygon , Megasalamence , MegaTorterra , Versekr Dark , Bonnox , Boh , Luke111 , Blakeishitta
IvanFGK
Scemo chi Legge!
*******
Offline

Messaggi: 7,456
Registrato: 12-06-2014
Reputazione: 61
Mi Piace Ricevuti: 4395
PH Points: 21,495.00
Messaggio: #2
RE: Premi quantità Market
Tutto molto bello, solo che ora, per punizione, posti anche quella per RZS.
Sennò BAN! Pacman
28-01-2019 01:33 PM
Sito Web Cerca Cita
 Mi piace ricevuti da: MegaTorterra
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #3
RE: Premi quantità Market
(28-01-2019 01:33 PM)E¬≤VaN Ha scritto:  Tutto molto bello, solo che ora, per punizione, posti anche quella per RZS.
Sennò BAN! Pacman

Penso...ma non ne sono certo...che il pointer di ruby si trovi all'offset 0x080B3BCC.
L√¨ si dovrebbe trovare il puntatore della routine che in ruby d√† la premier ball, quindi dovrebbe essere tutto pi√Ļ semplice, basterebbe decompilarla ed aggiungere qualche cmp come ho fatto io nella routine di Spherical Ice.

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]
28-01-2019 06:53 PM
Cerca Cita
 Mi piace ricevuti da: IvanFGK , MegaTorterra , Versekr Dark , Bonnox
Versekr Dark
Nuovo Arrivato
*

Messaggi: 45
Registrato: 10-09-2017
Reputazione: 1
Mi Piace Ricevuti: 69
PH Points: 142.00
Messaggio: #4
RE: Premi quantità Market
080B3AEC Shop_DoPremierBallCheck

Non so di asm, ma questo lo lascio qui, dovrebbe essere quello che ti manda una prima palla, non so se ha ragione.
24-07-2021 02:11 AM
Cerca Cita
 Mi piace ricevuti da: Flygon , Bonnox
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #5
RE: Premi quantità Market
(24-07-2021 02:11 AM)Versekr Dark Ha scritto:  080B3AEC Shop_DoPremierBallCheck

Non so di asm, ma questo lo lascio qui, dovrebbe essere quello che ti manda una prima palla, non so se ha ragione.

Non so a quale rom si riferisca questo offset, probabilmente a ruby o emerald, perché su fire red corrisponde ad altro.

Dato che c'ero ho aggiustato la routine, snellendola parecchio. Purtroppo al tempo ero agli esordi dell'asm ed il codice risultava veramente brutto! Se ci sono problemi/suggerimenti, postate Wink

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]
25-07-2021 10:26 AM
Cerca Cita
 Mi piace ricevuti da: Flygon , Versekr Dark
Versekr Dark
Nuovo Arrivato
*

Messaggi: 45
Registrato: 10-09-2017
Reputazione: 1
Mi Piace Ricevuti: 69
PH Points: 142.00
Messaggio: #6
RE: Premi quantità Market
(25-07-2021 10:26 AM)eMMe97 Ha scritto:  
(24-07-2021 02:11 AM)Versekr Dark Ha scritto:  080B3AEC Shop_DoPremierBallCheck

Non so di asm, ma questo lo lascio qui, dovrebbe essere quello che ti manda una prima palla, non so se ha ragione.

Non so a quale rom si riferisca questo offset, probabilmente a ruby o emerald, perché su fire red corrisponde ad altro.

Dato che c'ero ho aggiustato la routine, snellendola parecchio. Purtroppo al tempo ero agli esordi dell'asm ed il codice risultava veramente brutto! Se ci sono problemi/suggerimenti, postate Wink

√ą per pokemon ruby ‚Äč‚Äč‚Äč‚Äčejeje, ma ovviamente come ho detto non so come armare il sistema, anche cos√¨, lascia che nel caso qualcuno lo usi e ne faccia un uso, e grazie per avermi risposto sempre Big Grin
27-07-2021 10:57 PM
Cerca Cita
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #7
RE: Premi quantità Market
La funzione della premier ball in omaggio dopo 10 ball acquistate è già presente in ruby ed emerald. Nel caso di ruby la parte della routine che fa questo è quella che hai indicato.
Puoi partire da quell‚Äôoffset per espandere la funzione ed ottenere lo stesso risultato che ho ottenuto io. Non ho il disassembly di ruby, quindi non saprei aiutarti, per√≤ sicuramente sar√† pi√Ļ facile, perch√© √® gi√† tutto scritto, basta aggiungere solo qualche comando.
28-07-2021 09:42 AM
Cerca Cita
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #8
RE: Premi quantità Market

Allora ho velocemente visto la funzione in ruby e dove potersi allacciare con la routine. Ecco qui:

0x080b3b26 0428 cmp r0, 4 ; 4
0x080b3b28 24d1 bne 0x80b3b74
0x080b3b2a 0e48 ldr r0, [0x080b3b64] ; [0x80b3b64:4]=0x3004b20
0x080b3b2c a900 lsls r1, r5, 2
0x080b3b2e 4919 adds r1, r1, r5
0x080b3b30 c900 lsls r1, r1, 3
0x080b3b32 0918 adds r1, r1, r0
0x080b3b34 0a22 movs r2, 0xa ; 10
0x080b3b36 885e ldrsh r0, [r1, r2]
0x080b3b38 0928 cmp r0, 9 ; 9
0x080b3b3a 1bdd ble 0x80b3b74
0x080b3b3c 0c20 movs r0, 0xc ; 12

Spiegazione:
cmp r0, 4 qui controlla se lo strumento venduto sia lo 0x4 cioè la pokéball

cmp r0, 9 qui controlla se sono state vendute almeno 10 pokéball

mov r0, 0xc qui assegna la premierball

la routine da scrivere sarà molto semplice, basta aumentare il primo cmp r0, 4 aggiungendone di altri per i vari strumenti e di conseguenza ogni strumento avrà un mov r0, 0x con il relativo ID dello strumento da regalare.
Dato che, come detto, la funzione su ruby esiste gi√†, √® veramente molto pi√Ļ semplice.
Se decidi di sviluppare la routine, ti chiedo gentilmente se la puoi pubblicare anche qui, così almeno si completa il post. Grazie!
28-07-2021 12:24 PM
Cerca Cita
 Mi piace ricevuti da: Versekr Dark
Versekr Dark
Nuovo Arrivato
*

Messaggi: 45
Registrato: 10-09-2017
Reputazione: 1
Mi Piace Ricevuti: 69
PH Points: 142.00
Messaggio: #9
RE: Premi quantità Market
(28-07-2021 12:24 PM)eMMe97 Ha scritto:  
(27-07-2021 10:57 PM)Versekr Dark Ha scritto:  

Allora ho velocemente visto la funzione in ruby e dove potersi allacciare con la routine. Ecco qui:

0x080b3b26 0428 cmp r0, 4 ; 4
0x080b3b28 24d1 bne 0x80b3b74
0x080b3b2a 0e48 ldr r0, [0x080b3b64] ; [0x80b3b64:4]=0x3004b20
0x080b3b2c a900 lsls r1, r5, 2
0x080b3b2e 4919 adds r1, r1, r5
0x080b3b30 c900 lsls r1, r1, 3
0x080b3b32 0918 adds r1, r1, r0
0x080b3b34 0a22 movs r2, 0xa ; 10
0x080b3b36 885e ldrsh r0, [r1, r2]
0x080b3b38 0928 cmp r0, 9 ; 9
0x080b3b3a 1bdd ble 0x80b3b74
0x080b3b3c 0c20 movs r0, 0xc ; 12

Spiegazione:
cmp r0, 4 qui controlla se lo strumento venduto sia lo 0x4 cioè la pokéball

cmp r0, 9 qui controlla se sono state vendute almeno 10 pokéball

mov r0, 0xc qui assegna la premierball

la routine da scrivere sarà molto semplice, basta aumentare il primo cmp r0, 4 aggiungendone di altri per i vari strumenti e di conseguenza ogni strumento avrà un mov r0, 0x con il relativo ID dello strumento da regalare.
Dato che, come detto, la funzione su ruby esiste gi√†, √® veramente molto pi√Ļ semplice.
Se decidi di sviluppare la routine, ti chiedo gentilmente se la puoi pubblicare anche qui, così almeno si completa il post. Grazie!

ok proverò a risolverlo, perché anche così mi costa un po' di lavoro per capire to

Se è che capisco solo se modifico la routine e la permuto, dovrebbe funzionare bene?
(Questo messaggio è stato modificato l'ultima volta il: 28-07-2021 10:51 PM da Versekr Dark.)
28-07-2021 10:40 PM
Cerca Cita
Luke111
Nuovo Arrivato
*

Messaggi: 3
Registrato: 30-12-2021
Reputazione: 0
Mi Piace Ricevuti: 4
PH Points: 53.00
Messaggio: #10
RE: Premi quantità Market
Can you make a script too ?
20-03-2022 09:23 AM
Cerca Cita
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #11
RE: Premi quantità Market
Non serve uno script, viene fatto in automatico durante la vendita. Lo script è quello normale del market.
20-03-2022 01:22 PM
Cerca Cita
 Mi piace ricevuti da: Bonnox , Boh
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,730
Registrato: 09-10-2014
Reputazione: 29
Mi Piace Ricevuti: 2190
PH Points: 4,819.00
Messaggio: #12
RE: Premi quantità Market
Dopo molto tempo sono tornato a modificare questa funzione, potenziandola oltre l'inverosimile (*momento di autostima al massimo*).
A parte scherzi, adesso tramite 2 table sarà possibile decidere gli strumenti che assegneranno i premi ed i premi stessi, tutto a nostra discrezione.
L'idea di tornare sui miei passi mi è venuta con la richiesta di un utente su discord che voleva questa funzione per le caramelle rare con in premio una masterball. All'inizio ci ho riso ma poi in effetti perché no, adesso potete fare tutto come vi pare, largo all'immaginazione Big Grin
20-06-2022 07:53 PM
Cerca Cita
 Mi piace ricevuti da: Flygon , Boh
Luke111
Nuovo Arrivato
*

Messaggi: 3
Registrato: 30-12-2021
Reputazione: 0
Mi Piace Ricevuti: 4
PH Points: 53.00
Messaggio: #13
RE: Premi quantità Market
Woah thanks well i am that discord user xd
22-06-2022 11:23 PM
Cerca Cita
 Mi piace ricevuti da: eMMe97 , Flygon
Rispondi 




Utente(i) che stanno guardando questa discussione: 1 Ospite(i)
Powered by MyBB, © 2002-2022 MyBB Group. Copyright ¬© | 2022 Pok√©mon Hacking