~Andrea Inviato 18 ottobre, 2013 Condividi Inviato 18 ottobre, 2013 Salve a tutti ragazzi oggi vorrei proporvi una piccola routine asm per cambiare lo stato di un pokemon della nostra squadra prima di tutto dobbiamo sapere dove si trova l'offset desiderato in questo caso:offset_stato: 030043B0Bulbapedia the best :3Tra ogni pokemon dellai byte inserenti ad essi si distanziano di 100 bytequesta è la routine che utilizzeremo:.thumb.align 2 push {r0-r1,lr}ldr r0, .8000 /*variabile 8000*/ldrh r0,[r0]ldr r1,.100 /*interallo byte tra i pokemon in squadra*/mul r1,r0ldr r0, .pokemon_data /*dati inerenti al pokemon in squadra*/add r0, r0, r1mov r1, #0x80 /*stato avvelenato*/strb r1,[r0]pop {r0-r1,pc} .align 2.pokemon_data: .word 0x030043B0.8000: .word 0x0202e8c4.100: .word 0x00000100ma analizziamo per bene ogni parte:ldr r0, .8000ldrh r0,[r0]salvo la var 8000 in r0ldr r1,.100mul r1,r0allora qua carichiamo il valore "100" in r1 e successivamente lo moltiplichiamo con r0 (la var 8000) perchè lo abbiamo fatto? per scegliere il pokemon da cambiare lo stato prima di tutto dobbiamo settare la var 8000 con il numero del pokemon da contagiare per esempio il 2 pokemon in squadra setvar 0x8000 0x1 (dobbiamo fare -1 al posto in squadra :C)abbiamo detto che i byte della squadra si distanziano tra di loro di 100 byte quindi la routine moltiplichera 1 con 1001*100=100successivamente aggiunge +100 al pokemon_data e avremo l'offset dello stato del 2 pokemon (è un ragionamento leggermente contorto x'D spero abbiate capito altrimenti lasciate un commento)ldr r0, .pokemon_dataadd r0, r0, r1come ho detto in precedenza la routine carica il pokemon_data e lo somma al prodotto della variabile * 100 .somma pokemon_data + prodotto e mette tutto in r0mov r1, #0x80 strb r1,[r0]mettiamo in r1 il valore 80 (stato avvelenato) e infine salviamo il byte per finire ecco un esempio di script:#dynamic 0x800000#org @iniziolocksetvar 0x8000 0x1callasm 0xoffset + 1releaseendSe avete domande o dubbi non esitate a chiedere Link al commento Condividi su altre piattaforme Più opzioni di condivisione...
Feehnor Inviato 18 ottobre, 2013 Condividi Inviato 18 ottobre, 2013 Ottimo andrea è raro trovare qualcuno disposto a fare routine asm per altri x'D Sopratutto in italia.Ottimo lavoro continua a lavorare così Link al commento Condividi su altre piattaforme Più opzioni di condivisione...
BlackLeg Inviato 18 ottobre, 2013 Condividi Inviato 18 ottobre, 2013 cosa è, non ho capito niente :C Link al commento Condividi su altre piattaforme Più opzioni di condivisione...
~Andrea Inviato 18 ottobre, 2013 Autore Condividi Inviato 18 ottobre, 2013 Grazie karim <3 Cmq l'asm è il linguaggio di programmazione delle rom, si possono creare eventi che con i normali tool come xse per esempio non è possibile fare al momento :/ci sono alcuni tutorial in giro su come inserirle (compreso il mio fatto alcuni giorni fa) e alcune che spiegano i vari comandi è abbastanza complesso se sei alle prime armi non ti consiglio di provare :/ Link al commento Condividi su altre piattaforme Più opzioni di condivisione...
~Andrea Inviato 19 ottobre, 2013 Autore Condividi Inviato 19 ottobre, 2013 gia che ci sono vi posto la routine compilata cosi vi basta semplicemente inserirla nella rom con un hex editor: 03 B5 05 48 00 88 05 49 41 43 02 48 40 18 80 21 01 70 03 BD B0 43 00 03 C4 E8 02 02 00 01 00 0080 2180 21 corrisponde al nostro mov r1, #0x80 quindi per modificare lo stato del pokemon per esempio dobbiamo cambiare il byte 80 qua ci sono riportati i vary byte dello stato:addormentato: 01scottatura: 10congelamento: 20paralizzato: 40 Se avete problemi chiedete nei commenti Link al commento Condividi su altre piattaforme Più opzioni di condivisione...
Post raccomandati
Archiviata
La discussione è ora archiviata e chiusa ad ulteriori risposte.