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] [ASM] Mugshot/Portrait durante i dialoghi
PacoScarso
Massive Ego
******
Offline

Messaggi: 1,062
Registrato: 03-07-2014
Reputazione: 31
Mi Piace Ricevuti: 1581
PH Points: 4,428.00
Messaggio: #1
[ASM] Mugshot/Portrait durante i dialoghi
Pokéball MUGSHOT/PORTRAIT DURANTE I DIALOGHI Pokéball

Come da titolo, con questa guida potrete inserire dei mugshot (o portrait, come volete chiamarli) e farli comparire mentre parlano determinati personaggi.
Tanto per intenderci, l'effetto finale sarà questo:

[Immagine: eNwZaif.png]

Quagsire PARTE 1: OCCORRENTE Quagsire
  • Un'immagine di un portrait, dimensioni 64x64 pixel, già indexata. La palette all'indice 0 deve essere il colore di trasparenza;
  • Un Hex Editor (consiglio HxD) e una conoscenza base sull'Hex Editing;
  • Un compilatore di routine decente;
  • Un programma per inserire le immagini indexate (consiglio Nameless Sprite Editor, abbreviato in NSE);
  • Tanta pazienza.

Quagsire PARTE 2: INSERIAMO IL PORTRAIT Quagsire

Prendiamo il nostro portrait indexato. Giusto per essere sicuri, dovrete disporre di un'immagine del genere. Il verde spaccaocchi sarà chiaramente la nostra Palette all'indice 0, quindi la trasparenza una volta visualizzato nel gioco.

[Immagine: SLHuXra.png]

Detto ciò aprite NSE e caricate la vostra rom. Andate poi su Open Sprite e scegliete il vostro portrait indexato.
A questo punto dobbiamo inserire l'immagine e le palette nella nostra rom.

INSERIRE IMMAGINE:
File ➜ Insert ➜ Compressed ➜ Image Data.
Scegliete un offset libero e inseritela. Segnatevi l'offset su un .TXT.

INSERIRE PALETTE:
File ➜ Insert ➜ Palette Data.
Scegliete un offset libero e inserite. Segnatevi l'offset su un .TXT.

Insomma, l'immagine dovrà essere compressa, le palette no.
Se volete fare qualcosa di ordinato, costruitevi un TXT del genere.

Quagsire PARTE 3: COSTRUIAMO LA TABELLA Quagsire

Vi dico subito che la routine per far visualizzare i portrait legge i dati da una tabella, quindi ci tocca prima far quella.
Sceglietevi un offset libero che termini per 0, 4, 8 o C e che siete sicuri di non utilizzare, possibilmente lontano da dove inserite normalmente il resto delle cose.
Fatto? Bravissimi. Segnatevi l'offset della tabella.
Ora dovete compilare la tabella seguendo questo formato:
Citazione:XX XX XX 08 YY YY YY 08 ZZ 00 00 00

Dove:
XX XX XX ➜ Indirizzo dell'immagine compressa, in Little Endian;
YY YY YY ➜ Indirizzo delle palette, in Little Endian;
ZZ ➜ Indice di palette libera che utilizzeremo per i colori del portrait. Vi consiglio "0E" o "0F", che non vengono usate praticamente mai;
00 00 00 ➜ Byte filler.

Per chi non sapesse cosa sia il Little Endian:

Chiaramente ciò che abbiamo inserito rappresenterà il portrait all'indice 0 della tabella. Ciò che andremo a inserire dopo il gruppo "00 00 00" sarà l'indice 1 e via dicendo.


Quagsire PARTE 4: INSERIAMO LE DUE ROUTINE Quagsire

Chiaramente ci sono due routine che entrano in azione: una che legge la tabella creata da noi e fa comparire il portrait, e l'altra che lo fa scomparire.
Andiamo con ordine.

ROUTINE 1: LETTURA TABELLA E COMPARSA IMMAGINE

Cercate un offset libero che termini per 0, 4, 8 o C e segnatevelo da qualche parte, successivamente modificate questa routine:

Al posto di [TABLE] mettete l'indirizzo della vostra tabella, mentre al posto di [OFFSET_OF_THIS_CODE] mettete l'indirizzo libero che avete trovato prima.
Compilate e inserite.

ROUTINE 2: RIMOZIONE DEL PORTRAIT

Passaggio molto più semplice. Cercate un offset libero che termini con 0, 4, 8 o C e inserite la seguente routine. Ovviamente segnatevelo anche da qualche parte.


Quagsire PARTE 5: SCRIPT Quagsire

Bene, abbiamo praticamente finito la parte difficile, ora vi spiego come utilizzare queste cose in un normale script.
Mettiamo che vogliate fare un dialogo con una persona; lo script sarà il seguente:

Citazione:#dynamic 0x800000
#org @start
lock
faceplayer
setvar 0x4500 0x?
setvar 0x4501 0x?
setvar 0x4502 0x?
callasm 0xIndirizzoRoutine1+1
msgbox @text 0x6
callasm 0xIndirizzoRoutine2+1
release
end

#org @text
= IO SONO SEISMITOAD E C'HO/nLE PALLE SUL CORPO!

SPIEGAZIONE VARIABILI
  • setvar 0x4500 0x? ➜ Al posto di ? mettete l'indice del vostro portrait nella tabella;
  • setvar 0x4501 0x? ➜ Al posto di ? mettete 0 o 1 a seconda di dove volete visualizzare il portrait. 0 se a sinistra, 1 se a destra;
  • setvar 0x4502 0x? ➜ Questo serve principalmente se volete visualizzare due mugshot contemporaneamente. Mettete 0x0 quando volete caricare un portrait nello slot 1, mettete 0x1 quando volete caricarlo nello slot 2.

SPIEGAZIONE DEI CALLASM

Per chi non lo sapesse, callasm 0x? serve per richiamare le routine. Banale, ma è quello che fa.
  • callasm 0xIndirizzoRoutine1+1 ➜ Mettete l'indirizzo della routine che legge e carica il mugshot, +1. Ciò significa che se avete inserito la routine all'offset 0x800000, vi basta aggiungere 1, quindi 800001;
  • callasm 0xIndirizzoRoutine2+1 ➜ Mettete l'indirizzo della routine che toglie il mugshot, +1.

FINE.

Our Projects (ongoing)

[Immagine: t1OEFpp.png] [Immagine: aDUlr8Y.png]

Old Projects

[Immagine: scarso1.png] [Immagine: penumbra1.png]
[Immagine: ciano.png]

Awards
[Immagine: tumblr_npqfq38PKG1tp2yqno6_400.png]
01-09-2022 01:42 PM
Cerca Cita
 Mi piace ricevuti da: IvanFGK , Drk090 , Bonnox , AndryBlaze2424
IvanFGK
Scemo chi Legge!
*******
Offline

Messaggi: 7,521
Registrato: 12-06-2014
Reputazione: 64
Mi Piace Ricevuti: 4544
PH Points: 22,301.00
Messaggio: #2
RE: [ASM] Mugshot/Portrait durante i dialoghi
Anche tu hai le palle sul corpo Paco, non essere razzista! Solo perchè le nascondi, mandale al vento e vanne fiero! Heart

PS Ottima guida Pacman
01-09-2022 02:45 PM
Sito Web Cerca Cita
 Mi piace ricevuti da: PacoScarso
Rispondi 




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