Benvenuto Visitatore!  / Create an account

Valutazione discussione:
  • 1 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
[Gba] Barre nere ai margini dello schermo (Effetto cinematico)
#1
Probabilmente alcuni di voi già lo sapranno, ma con un semplicissimo writebytetooffset è possibile mettere delle barre nere ai margini dello schermo, per dare un "effetto cinema" ad un evento.
  • I COMANDI
Citazione:#dynamic 0x800000
#org @start
writebytetooffset 0x81 0x4000044
writebytetooffset 0x15 0x4000045

release
end
0x4000044 è la barra al margine inferiore dello schermo. Io ho usato 0x81, ma potete cambiare il valore a vostro piacimento, per alzare o abbassare la barra. Più il numero è alto, più piccola è la barra.
0x4000045 è la barra al margine superiore dello schermo. Per quanto riguarda il valore, qui funziona al contrario: Più il valore è alto, più grande è la barra.

  • RIPRISTINARE I VALORI PREDEFINITI
Le barre ai margini dello schermo rimarranno lì finché non le rimuoverete con un altro WTBO. Per ripristinare i valori originali, utilizzate i seguenti valori:
Citazione:writebytetooffset 0xFF 0x4000044
writebytetooffset 0x00 0x4000045
Come vedete, basta utilizzare il valore massimo per la barra inferiore e il valore minimo per quella superiore.

  • [FUN FACT] RENDERE INTERAMENTE NERA LA SCHERMATA
Se volete rendere interamente nera la schermata, invertite i valori:
Citazione:writebytetooffset 0x00 0x4000044

OPPURE:

writebytetooffset 0xFF 0x4000045
In questo modo, le barre avranno grandezza massima e copriranno l'intero schermo.

  • BARRE NERE LATERALI (credits: Manuxn)
Come ci fa notare il buon Manuxn, i due offset 0x4000040 e 0x4000041 funzionano allo stesso modo, e permettono di posizionare barre nere ai margini sinistro e destro dello schermo.

La guida funziona sia su Ruby che su Fire Red.
 Mi Piace Ricevuti: 
Bonnox and Andrea like this post
Cita messaggio }
#2
Volevo fare un piccolo appunto, poiché questo metodo genera qualche piccolo bug (per quanto mi ricordi). In pratica se non sbaglio non vengono generate barre nere, ma si ha uno “spostamento” dello schermo. Questo per dire che se per esempio visualizzo uno oam (o sprite che dir si voglia), questo sarà posto in una posizione diversa da quella voluta. Così per altri elementi della schermata. In passato rinunciai ad utilizzarlo per questo motivo. Se dovessi ricordarmi male, e di conseguenza aver scritto una cavolata, mi scusa in partenza :S
 Mi Piace Ricevuti: 
Andrea likes this post
Cita messaggio }
#3
Sicuramente ne sai più di me. Ho provato ad utilizzarlo in un paio di eventi e non mi ha dati errori.
Farò dei test per vedere se sprite e altre cose vengono visualizzate con errori.
 Mi Piace Ricevuti: 
eMMe97 and Andrea like this post
Cita messaggio }
#4
Aggiungo due note anch'io in modo da completare la guida. La prima considerazione è che, dato il tipo di memoria che andiamo a toccare, gli offset sono comuni a tutte le ROM. La seconda è che esistono altri 2 offset (0x4000040 e 0x4000041) con cui possiamo ottenere lo stesso effetto ma sulle bande verticali, poste ai lati dello schermo.
Il mio progetto Hack ROM:
hack

"Ci sono soltanto due possibili conclusioni: se il risultato conferma l'ipotesi, allora hai appena fatto una misura. Se il risultato è contrario alle ipotesi, allora hai fatto una scoperta."
 Mi Piace Ricevuti: 
Flygon and Andrea like this post
Cita messaggio }
#5
(18-01-2020, 03:36 PM)eMMe97 Ha scritto: Questo per dire che se per esempio visualizzo uno oam (o sprite che dir si voglia), questo sarà posto in una posizione diversa da quella voluta.
Strano, hai provato ad utilizzare i wbto in una rom pulita?
Se andiamo a leggere la documentazione del gbatek:
Citazione:4000044h - WIN0V - Window 0 Vertical Dimensions (W)
4000046h - WIN1V - Window 1 Vertical Dimensions (W)
Bit Expl.
0-7 Y2, Bottom-most coordinate of window, plus 1
8-15 Y1, Top-most coordinate of window
Garbage values of Y2>160 or Y1>Y2 are interpreted as Y2=160.
Non si fa menzione agli oam e alle loro coordinate.
L'unico problema riguardante gli oam potrebbe sorgere nel momento in cui i valori dei seguenti offset non siano correttamente settati:
Citazione:4000048h - WININ - Control of Inside of Window(s) (R/W)
Bit Expl.
0-3 Window 0 BG0-BG3 Enable Bits (0=No Display, 1=Display)
4 Window 0 OBJ Enable Bit (0=No Display, 1=Display)
5 Window 0 Color Special Effect (0=Disable, 1=Enable)
6-7 Not used
8-11 Window 1 BG0-BG3 Enable Bits (0=No Display, 1=Display)
12 Window 1 OBJ Enable Bit (0=No Display, 1=Display)
13 Window 1 Color Special Effect (0=Disable, 1=Enable)
14-15 Not used

400004Ah - WINOUT - Control of Outside of Windows & Inside of OBJ Window (R/W)
Bit Expl.
0-3 Outside BG0-BG3 Enable Bits (0=No Display, 1=Display)
4 Outside OBJ Enable Bit (0=No Display, 1=Display)
5 Outside Color Special Effect (0=Disable, 1=Enable)
6-7 Not used
8-11 OBJ Window BG0-BG3 Enable Bits (0=No Display, 1=Display)
12 OBJ Window OBJ Enable Bit (0=No Display, 1=Display)
13 OBJ Window Color Special Effect (0=Disable, 1=Enable)
14-15 Not used
Per esempio, potrebbe capitare che gli oam spariscano nello spazio al di fuori della window nel caso in cui il bit 12 dell'offset 0x400004A sia settato a 0.
Diversamente, la modifica dei valori di quegli offset non dovrebbe in alcuni modo intaccare le coordinate degli obj.
.
 Mi Piace Ricevuti: 
Bonnox, Flygon, Manuxn like this post
Cita messaggio }




Utenti che stanno guardando questa discussione: 1 Ospite(i)