Questa discussione è chiusa  
Fadescreen con effetti meteo
Flygon
Dessert Spirit
******
Offline

Messaggi: 2,282
Registrato: 13-06-2014
Reputazione: 38
Mi Piace Ricevuti: 1273
PokéMoney: 3,517.75₱
Messaggio: #1
Shocked Fadescreen con effetti meteo
Usando un comunissimo comando fadescreen:
Codice:
fadescreen 0x1
[...]
fadescreen 0x0
In una mappa in cui sia presente un effetto meteo che scurisce le palette (come per esempio il meteo Nuvoloso), le palette si scuriscono ulteriormente. Continuando ad usare i fadescreen, le palette arriveranno a diventare completamente nere.
Uscire dalla mappa o aprire il menu resetterà le palette ai colori originali.

C'è un modo per aggirare questo problema, o l'unica via è impostare un meteo standard?

16-07-2019 09:01 AM
Cerca
Explosion100
Gold User
******
Offline

Messaggi: 744
Registrato: 18-08-2014
Reputazione: 8
Mi Piace Ricevuti: 209
PokéMoney: 94.00₱
Messaggio: #2
RE: Fadescreen con effetti meteo
Forse utilizzando lo special 0x8E, che dovrebbe ricaricare la mappa? A me è subito venuto in mente questo, anche se non l'ho mai provato
16-07-2019 07:45 PM
Cerca
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,428
Registrato: 09-10-2014
Reputazione: 22
Mi Piace Ricevuti: 1476
PokéMoney: 1,780.25₱
Messaggio: #3
RE: Fadescreen con effetti meteo
Non ho controllato, ma da come lo descrivi sembra che il meteo applichi filtri più scuri semplicemente sui colori nella memoria 05. Per questo con un fadescreen si salva la memoria 05 che poi viene ripristinata dopo alla fine del fadescreen. Per questo penso che applichi ogni volta colori più scuri. Ho una mezza idea di come risolvere...se tutto va come deve basta mettere qualche 00 qua e là xD
Le faremo sapere!
16-07-2019 07:50 PM
Cerca
 Mi piace ricevuti da: Flygon
Bonnox
Signore del Tempo un po' imbranato
*****
Online

Messaggi: 1,950
Registrato: 06-07-2014
Reputazione: 8
Mi Piace Ricevuti: 466
PokéMoney: 2,173.00₱
Messaggio: #4
RE: Fadescreen con effetti meteo
ammetto di non aver toccato mezzo emulatore, ma da come lo descrivi sembra che una delle due soluzioni dovrebbe bastare:
- special che ricarica la mappa come detto da altri
- ASM che fa un "backup" delle palette e le ripristina (nulla di difficile, è semplicemente una copia di un vettore)
16-07-2019 08:05 PM
Cerca
Flygon
Dessert Spirit
******
Offline

Messaggi: 2,282
Registrato: 13-06-2014
Reputazione: 38
Mi Piace Ricevuti: 1273
PokéMoney: 3,517.75₱
Messaggio: #5
RE: Fadescreen con effetti meteo
Lo special che ricarica la mappa (che dovrebbe essere Special 0x8E per Ruby, è quello che uso per i setmaptile) non ha alcun effetto, sfortunatamente.
Altre cose che ho tentato (sapevo che non avrebbero funzionato, ma tentar non nuoce):
- Usare i fadescreen 0x3 e 0x2 al posto di 0x1 e 0x0 - in pratica usare il fadescreen bianco invece di quello nero.
- Inserire più di un fadescreen 0x0, per riportare la mappa normale più di una volta.

Grazie mille per le risposte, comunque!
17-07-2019 09:48 AM
Cerca
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #6
RE: Fadescreen con effetti meteo
Non so se può aiutare, ma gli offset delle routine dei fadescreen si trovano a:

Fire red: 0807A818 , check weather a 0807A858

Rosso fuoco: 0807A768 , check weather a 0807A7A8

Ruby: 0807D644, check weather a 0807D684

Personalmente però non sono riuscito ad aggirare il problema, modificando le routine.
Comunque ti lascio una possibile soluzione da utilizzare semplicemente tramite script, ma ha due grosse limitazioni:
1) Funziona solo su ruby (su fire red ha un piccolo bug con le animazioni dell'erba alta).
2) Funziona solo con il tempo nuvoloso.

Ecco la mia proposta:
- Non impostare il meteo della mappa (lascia quello standard)
- Aggiungere uno script di mappa di tipo 05 che imposta il tempo nuvoloso, quindi con setweather 0xB
- Compilare lo script del fadescreen nel seguente modo:
Codice:
fadescreen 0x1
resetweather
doweather
fadescreen 0x0

In questo modo dovrebbe funzionare, dato che il fadescreen e il tempo nuvoloso hanno lo stesso comportamento sulle palette (in questo caso non in generale).
17-07-2019 01:59 PM
Cerca
 Mi piace ricevuti da: Bonnox , Flygon
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #7
RE: Fadescreen con effetti meteo
Flygon so che è passato più di un mese, perdonami, ma ho testato la soluzione proposta da @Bonnox e funziona perfettamente! Per ora è solo per Rosso Fuoco/Fire red ma con un piccolo aiuto è facilmente adattabile anche a rubydance. Qui c'è un piccolo video dimostrativo:

Le routine utilizzate sono le seguenti:

1) Routine di backup delle palette:
Codice:
.text
.align 2
.thumb
.thumb_func

main:
push {r0-r3,lr}
ldr r0, =(0x20371f8)           @offset palette
ldr r1, =(0x203E000)           @offset libero della RAM
ldr r2,[r0]
str r2,[r1]
ldr r3, =(0x20375e8)           @ultimo offset palette

loop:
add r0,r0,#0x4
add r1,r1,#0x4
ldr r2,[r0]
str r2,[r1]
cmp r0,r3
beq stop
bne loop

stop:
pop {r0-r3,pc}

.align 2

2) Routine di ripristino delle palette e pulizia della Ram utilizzata:
Codice:
.text
.align 2
.thumb
.thumb_func

main:
push {r0-r4,lr}
ldr r0, =(0x20371f8)           @offset palette
ldr r1, =(0x203E000)           @offset backup palette
ldr r2,[r1]
str r2,[r0]
ldr r3, =(0x20375e8)           @ultimo offset palette
mov r4,#0x0
str r4,[r1]

loop:
add r0,r0,#0x4
add r1,r1,#0x4
ldr r2,[r1]
str r2,[r0]
str r4,[r1]
cmp r0,r3
beq stop
bne loop

stop:
pop {r0-r4,pc}

.align 2

Una volta inserite in uno spazio libero (con offset terminante in 0,4,8 o C) vanno richiamate dallo script nel seguente modo (ricordarsi di mettere sempre il +1):

Codice:
callasm 0xoffset_routine_backup+1
fadescreen 0x1
[...]
callasm 0xoffset_routine_ripristino+1
fadescreen 0x0

Come dicevo prima cambiando gli offsets le routine dovrebbero essere adattabili anche a ruby, qui però ho bisogno di una piccola mano. Per gli offsets delle palette riesco a ricavarle dal VBA (grazie alle guide di @Andrea!) ma non conosco una zona della Ram libera su ruby che si possa usare per fare il backup. Se tu o chi lavora su ruby la conoscesse e mi dicesse l'offset, appena riesco posto anche la versione per ruby.

Un'ultima cosa, Bonnox io le routine le ho fatte in base alle mie scarsissime conoscenze di ASM, se vuoi correggerle o vuoi darmi qualche suggerimento su come migliorarle sei il benvenutoBlush
27-08-2019 03:03 PM
Cerca
 Mi piace ricevuti da: Andrea , Bonnox
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,428
Registrato: 09-10-2014
Reputazione: 22
Mi Piace Ricevuti: 1476
PokéMoney: 1,780.25₱
Messaggio: #8
RE: Fadescreen con effetti meteo
Intanto complimenti @Manuxn perché hai trovato un'ottima soluzione ed hai sviluppato una routine corretta. Purtroppo hai scritto tu stesso il problema: "ho testato la soluzione proposta da @Bonnox".
Quando ho letto questa frase...ho capito che la routine sarebbe stata lunga, contorta, complicata e per lo più inutile nel suo contenuto.
La routine non l'ho testata, ma guardandola credo sia corretta. Avrei quindi potuto tacere...ma se si inizia a dare ragione a Bonnox ora...tra qualche mese qui c'è il degenero.
Ecco una versione molto più easy ma comunque corretta delle tue due routine.
NB: sarebbe possibile e neanche complicato, eseguire tutte la procedura, fadescreen compreso, tramite routine, in quel caso verrebbe molto più carina la cosa. Però se alle volte uno volesse inserire comandi sfruttando il fadescreen pubblico la versione spezzata.
Il procedimento che hai descritto è il medesimo, script compreso, sono solo le routine ad essere più semplici:

1) Routine di backup delle palette:

Codice:
.THUMB
.ALIGN 2
PUSH {R0-R2,LR}
LDR R0, = 0x020371f8 @palette originali
LDR R1, = 0x0203E000 @ram libera
MOV R2, #0xD0 @grandezza da copiare diviso 2
SWI 0xB
POP {R0-R2,PC}

2) Routine di ripristino delle palette (e pulizia della Ram utilizzata):

Codice:
.THUMB
.ALIGN 2
PUSH {R0-R2,LR}
LDR R0, = 0x0203E000 @ram libera
LDR R1, = 0x020371f8 @palette originali
MOV R2, #0xD0 @grandezza da copiare diviso 2
SWI 0xB
POP {R0-R2,PC}

Non so perché tu voglia ripulire la RAM dato che verrebbe comunque sovrascritta in automatico, ma nel caso ecco la routine di prima con la cancellazione:

Codice:
.THUMB
.ALIGN 2
PUSH {R0-R3,LR}
LDR R0, = 0x0203E000 @ram libera
LDR R1, = 0x020371f8 @palette originali
MOV R2, #0xD0 @grandezza da copiare diviso 2
SWI 0xB

LDR R0, = 0x0203E000 @ram libera
MOV R1, #0x0
LDR R2, = 0x200
LDR R3, =(0x81E5ED8 +1)
BL linker
POP {R0-R3,PC}

linker:
BX R3

.ALIGN 2

Ora io mi raccomando, non seguire più i consigli di Bonnox! Rivolgiti ad Andrea, a qualcun altro del forum, pure al barbone che trovi sotto casa, ma MAI a Bonnox Tongue
27-08-2019 04:16 PM
Cerca
 Mi piace ricevuti da: Andrea , Manuxn
Andrea
...
******
Offline

Messaggi: 825
Registrato: 12-06-2014
Reputazione: 31
Mi Piace Ricevuti: 1134
PokéMoney: 3,407.25₱
Messaggio: #9
RE: Fadescreen con effetti meteo
Grazie mille @eMMe97 e @Manuxn; mi dispiace davvero tanto di non aver contribuito alla risoluzione di questa problema, ma in questo periodo sono stato parecchio impegnato...
Tuttavia, posso darvi un piccolo consiglio per ottimizzare ancora di più le due routine:
Esiste lo SWI 0xC il quale copia 32bit (4byte) alla volta, invece che i due dello SWI 0xB!
27-08-2019 04:50 PM
Cerca
 Mi piace ricevuti da: Manuxn
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,428
Registrato: 09-10-2014
Reputazione: 22
Mi Piace Ricevuti: 1476
PokéMoney: 1,780.25₱
Messaggio: #10
RE: Fadescreen con effetti meteo
Ma in questo caso cambia solo la velocità di scrittura o devo dimezzare ulteriormente il valore in r2?
27-08-2019 05:09 PM
Cerca
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #11
RE: Fadescreen con effetti meteo
eMMe ti ringrazio per la risposta, così oltre ad aiutare Flygon imparo qualcosa anch'io Angel. Comunque le poche cose che so di ASM le ho imparate principalmente da te, Andrea, e da Bonnox, oltre che dalle guide di FBI, quindi ho massima stima per tutti voi.

Tornando alle routine, conosco poco i comandi SWI (ho capito più o meno come funzionano ma non so ancora applicarli correttamente), mi rendo conto che è sicuramente più comodo e le tue routine lo dimostrano. La pulizia della ram credo sia superflua, l'ho messa solo per evitare qualsiasi tipo di problema, dato che a fine script le palette rimangono comunque salvate anche lì.
27-08-2019 05:26 PM
Cerca
 Mi piace ricevuti da: Andrea
Andrea
...
******
Offline

Messaggi: 825
Registrato: 12-06-2014
Reputazione: 31
Mi Piace Ricevuti: 1134
PokéMoney: 3,407.25₱
Messaggio: #12
RE: Fadescreen con effetti meteo
(27-08-2019 05:09 PM)eMMe97 Ha scritto:  Ma in questo caso cambia solo la velocità di scrittura o devo dimezzare ulteriormente il valore in r2?
Sisì, bisogna dividere la dimensione totale dei byte da copiare per 4!
27-08-2019 05:37 PM
Cerca
 Mi piace ricevuti da: eMMe97
Flygon
Dessert Spirit
******
Offline

Messaggi: 2,282
Registrato: 13-06-2014
Reputazione: 38
Mi Piace Ricevuti: 1273
PokéMoney: 3,517.75₱
Messaggio: #13
RE: Fadescreen con effetti meteo
Ahahahah concordo con eMMe! Quel birbante di Bonnox ama teorizzare soluzioni inutilmente complesse a problemi di ben più semplice soluzione. Gli vogliamo comunque tutti bene qui nel forum, ci fa tenerezza.
29-08-2019 07:14 AM
Cerca
 Mi piace ricevuti da: Andrea , eMMe97 , Manuxn
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #14
RE: Fadescreen con effetti meteo
Ragazzi forse ho un'altra soluzione, non so se migliore o peggiore di quella di prima ma almeno funziona anche su ruby. Basandomi sulla routine originale del fadescreen ho provato a ricostruirla senza il controllo del meteo (o meglio ho messo direttamente il tempo che non applica i filtri). Nel caso ditemi se è da correggere, da ottimizzare o se ha qualche strano effetto collaterale xD.

Per Ruby 1.0 la routine è la seguente:

Codice:
.align 2
.thumb

push {r4,r5,lr}
sub sp,#0x4
add r2,r0,#0x0
add r5,r1,#0x0
mov r4,#0x0
mov r1,#0x1
b link

.align 2
link: .word 0x0807D6AC

Per Fire red basta cambiare l'offset con 0807A880.

Lo script in questo caso diventa più semplice, al posto del fadescreen 0x1 bisogna inserire il callasm, il resto è tutto normale, fadescreen 0x0 compreso.

Io l'ho testata su entrambe le rom e sembra non dare alcun problema, ma magari mi è sfuggito qualcosa...
(Questo messaggio è stato modificato l'ultima volta il: 29-08-2019 11:13 PM da Manuxn.)
29-08-2019 03:58 PM
Cerca
 Mi piace ricevuti da: EddyHg80 , Flygon
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,428
Registrato: 09-10-2014
Reputazione: 22
Mi Piace Ricevuti: 1476
PokéMoney: 1,780.25₱
Messaggio: #15
RE: Fadescreen con effetti meteo
Grande lui, bella soluzione! Pensavo il problema stesse nella routine del meteo, infatti mi ero ripromesso di disassemblarla un giorno xD invece mi sbagliavo a quanto pare.
Bravo e complimenti per la soluzione! Potresti rendere il tuo lavoro ufficiale tramite una guida!
30-08-2019 08:09 AM
Cerca
 Mi piace ricevuti da: Manuxn
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #16
RE: Fadescreen con effetti meteo
eMMe grazie mille per i complimenti, comunque non penso che serva una guida perché credo di aver trovato un metodo ancora più semplice!! Niente ASM, soltanto script e WBTO:

Per ruby /rubino lo script va impostato così:

Codice:
fadescreen 0x1
[...]
writebytetooffset 0x0 0x202FEB8
fadescreen 0x0

Per fire red/rosso fuoco l'offset è 2038604.

L'unica cosa a cui bisogna fare attenzione è che eventuali comandi vanno inseriti tra il fadescreen 0x1 e il WBTO e NON tra il WBTO e il fadescreen 0x0, altrimenti il trucchetto non funziona xD.

Il discorso è del tutto analogo utilizzando i fadescreen 0x3 e 0x2.
30-08-2019 04:27 PM
Cerca
 Mi piace ricevuti da: Andrea , EddyHg80 , Flygon
Шахтар
Il mio nick si legge Shakhtar!
*****
Offline

Messaggi: 618
Registrato: 12-05-2017
Reputazione: 9
Mi Piace Ricevuti: 340
PokéMoney: 1,208.50₱
Messaggio: #17
RE: Fadescreen con effetti meteo
Eh infatti io avevo supposto che se fosse un valore temporaneo (come appunto questo) si poteva risolvere con un WBTO
Ma tu mi hai anticipato Smile
Poi io non avrei comunque trovato l’offset su cui fare il wbto, avevo solo l’idea hahah

La mia Hack Rom:
Pokémon DAVD Edition

Guida sui suoni GBA, inserire tracce di quinta e quarta gen nella terza:
Guida avanzata di Sappy by Шахтар e LD3005


[Immagine: zpmfVKU.gif]
Shakhtar Donetsk
[Immagine: XoEvjk8.gif]

Supportiamo Pokémon: La vendetta di Mew (by eMMe97)^.^
[Immagine: 51ppxl.png]
(Questo messaggio è stato modificato l'ultima volta il: 30-08-2019 05:34 PM da Шахтар.)
30-08-2019 05:33 PM
Cerca
Manuxn
Bug Catcher
*
Offline

Messaggi: 32
Registrato: 25-06-2019
Reputazione: 1
Mi Piace Ricevuti: 31
PokéMoney: 146.00₱
Messaggio: #18
RE: Fadescreen con effetti meteo
(30-08-2019 05:33 PM)Шахтар Ha scritto:  Eh infatti io avevo supposto che se fosse un valore temporaneo (come appunto questo) si poteva risolvere con un WBTO
Ma tu mi hai anticipato Smile
Poi io non avrei comunque trovato l’offset su cui fare il wbto, avevo solo l’idea hahah

Per l'offset io ho seguito il consiglio di eMMe e ho chiesto al barbone sotto casa ahahah

No a parte gli scherzi l'offset è "scritto" nella routine del fadescreen, un po' mascherato ma è luiPacman
30-08-2019 11:48 PM
Cerca
Questa discussione è chiusa  




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