Rispondi 
[ASM & HEX] Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #73
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
mi mancano ancora pezzi

non scervellarti, non dev'essere una cosa troppo complicata. guarda il tuo compagno.

il wbto non è usabile su palette e vram, giusto?
perchè gli offset cambiano sempre


su palette è utilizzabile, ma bisogna usare come target il buffer che risiede nella WRAM, non la memoria palette. la VRAM invece non è utilizzabile perxhè accetta solo scritture di 2 bytes alla volta, ma questo avrei dovuto dirlo in una lezione futura.

se trovo l offset di un personaggio nella vram, come trovo la sua posizione nella wram per poi creare il wbto?
ho provato con il cheat search ma non trova niente


questa è roba difficile, servirebbe il disassemblatore, che vedremo nelle ultime lezioni, e molto tempo (o riciclare il lavoro altrui).

puoi provare a warpare il player, ci dev'essere un post di pierz o eing a riguardo Wink

Se ti sono stato d'aiuto, clicca il tasto "mi piace" qua sotto! Grazie! : )

Il mio nuovo motto: don't ask for ETAs!

[Immagine: yKWdaxi.gif]

[Immagine: firma.png]
"L'uomo è ancora il più straordinario dei computer"


Guida di cui vado più fiero: Mega-Huge Bonnox' guide (to be expanded)


[Immagine: toothbrush_girl_by_timewyrm-d6i5ezm.jpg]

Ho un T.A.R.D.I.S. modello 40 ma non so usarlo. Pacman
27-01-2017 12:43 PM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #74
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Ho guardo l esempio ma nella mia rom ruby-U quello script nn ha effetto, neppure l esempio della lezione.

Rom differenti o sbaglio io a inserire lo script?
27-01-2017 02:05 PM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #75
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
(27-01-2017 02:05 PM)skyos Ha scritto:  Ho guardo l esempio ma nella mia rom ruby-U quello script nn ha effetto, neppure l esempio della lezione.

Rom differenti o sbaglio io a inserire lo script?

potrebbero essere entrambi i motivi...

io ho la versione 1.0 di AXVE (lo vedi all'offset 172 decimale)

per lo script basta darlo a un comunissimo people.

Se ti sono stato d'aiuto, clicca il tasto "mi piace" qua sotto! Grazie! : )

Il mio nuovo motto: don't ask for ETAs!

[Immagine: yKWdaxi.gif]

[Immagine: firma.png]
"L'uomo è ancora il più straordinario dei computer"


Guida di cui vado più fiero: Mega-Huge Bonnox' guide (to be expanded)


[Immagine: toothbrush_girl_by_timewyrm-d6i5ezm.jpg]

Ho un T.A.R.D.I.S. modello 40 ma non so usarlo. Pacman
27-01-2017 08:22 PM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #76
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Ora nn ho modo di controllare ma dovrebbe essere la stessa,
Scusami ma come ho detto non ricordo quasi niente Tongue.
Ora vedo se ce qualche guida
27-01-2017 11:37 PM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #77
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
riporto in auge la discussione per comunicare che tra qualche giorno andremo avanti, e per ricordare a skyos di consegnare il compito.
(ma si pronuncia "schios" o "scaioes"? ^^" )
12-02-2017 07:46 PM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #78
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
mi ricordo xD

tra qualche giorno spero di finire e dovrei tornare in libertà così posso riprendere tutto quello che ho freezato Big Grin

tecnicamente scaes, o italianizzato scaios.
comunque è per via della parola difficile xD, scai oes, unita ha la pronuncia quasi strana, nessun significato cmq.

grazie della pazienza

OT:
Cmq, non so se è stato aggiornato il sito, ma il login è molto difficile per via del captcha che fallisce spesso senza motivo.
Inoltre segnalo che tapatalk mi è completamente morto per questo sito e non mi fa più fare il login in alcun modo (credo per via del captcha che ovviamente tapatalk non gestisce)

è molto raro che faccia il login da pc, perciò se si riesce a risolvere sarebbe ottimo
grazie
(Questo messaggio è stato modificato l'ultima volta il: 14-02-2017 02:04 AM da skyos.)
14-02-2017 01:59 AM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #79
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
tecnicamente scaes, o italianizzato scaios.
comunque è per via della parola difficile xD, scai oes, unita ha la pronuncia quasi strana, nessun significato cmq.


uhm, io pensavo fosse un sistema operativo (che poi ho scoperto esistere davvero con tale nome!)

grazie della pazienza

di niente, sono nelle tue stesse condizioni, più o meno, dunque non è un problema aspettare.

OT:
Cmq, non so se è stato aggiornato il sito, ma il login è molto difficile per via del captcha che fallisce spesso senza motivo.
Inoltre segnalo che tapatalk mi è completamente morto per questo sito e non mi fa più fare il login in alcun modo (credo per via del captcha che ovviamente tapatalk non gestisce)


urgh, dev'essere un problema serio. ma ti riferisci a questo sito? io vedo tutto normale, prova a contattare gli amministratori. I misteri dell'informatica.. io ad esempio ho problemi su pokecommunity... :[

Se ti sono stato d'aiuto, clicca il tasto "mi piace" qua sotto! Grazie! : )

Il mio nuovo motto: don't ask for ETAs!

[Immagine: yKWdaxi.gif]

[Immagine: firma.png]
"L'uomo è ancora il più straordinario dei computer"


Guida di cui vado più fiero: Mega-Huge Bonnox' guide (to be expanded)


[Immagine: toothbrush_girl_by_timewyrm-d6i5ezm.jpg]

Ho un T.A.R.D.I.S. modello 40 ma non so usarlo. Pacman
15-02-2017 12:09 AM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #80
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
NB: skyos non ha consegnato il compito

Salve per non farvi ammuffire oggi vi porto una veloce lezione 2.1 che avevo scritto in passato ma andò persa dopo l'attacco al forum, e una guida sulla grafica, sicuramente perfettibile, ma che funge da introduzione abbondante in questo mondo. Siccome è la prima stesura, vi invito a leggerla attentamente e soffermarvi sul capire ogni singolo nuovo concetto (sono tanti), in quanto non è molto "user friendly" ("noob friendly").

Ah lo stesso dicasi per la prima parte. E' corta e densa.

ESERCIZI 2.1
I REGISTRI

Questo è il miglior esempio di applicazione del WBTO.
La memoria 4 del GBA viene chiamata "registri di I/O". IO sta per input/output, ovvero ingresso e uscita, l'interazione tra uomo e macchina.
Cos'è un registro? Una piccola zona di memoria che svolge funzioni "a basso livello" (mia definizione improvvisata). Con basso livello intendo che in informatica registri sono usati per configurare il comportamento delle periferiche. Magari in realtà sono dei circuiti elettronici, ma al programmatore appaiono come vere e proprie celle di memoria in cui scrivere, grazie ad una astrazione effettuata dall'architettura.
Questa tecnica si chiama "I/O mappato in memoria" (memory mapped), che consiste appunto nello scrivere a particolari valori in particolari indirizzi per comandare l'hardware.

Nei giochi pokemon alcuni registri sono inaccessibili, nel senso che vengono aggiornati ogni frame, mentre altri possono essere manipolati.

In teoria dovrei presentarvi questi esempi alla fine, in quanto i registri si riferiscono a TUTTO. Qualsiasi aspetto del GBA può essere controllato da essi, tranne l'illuminazione e il volume. Ma è una cosa troppo importante per essere lasciata in fondo. Non capirete tutto subito, ma gradualmente, però almeno avete già le basi.

Una documentazione molto estesa dei registri può essere trovata ai link nella lezione 0.

Ora semplici esempi di WBTO sui registri.

1) http://www.pokemonhacking.it/showthread.php?tid=2320
2) in reperimento...

LEZIONE 2.2
VOLARE, OH, CANTARE, OH OH OH OH. NEL 0x7C00, DIPINTO DI 0x7C00
LA GRAFICA


okokok scusate la canzoncina idiota, forse dalla prossima volta la cambierò.
questa sarà probabilmente la lezione più corposa di tutte, perciò preparatevi!

Ciò che vedremo oggi non riguarda propriamente nè il WBTO nè l'ASM, ma fa comunque parte della conoscenza basilare sul GBA che uno deve avere quando modifica i giochi di pokemon. E poi è sempre roba sui byte Smile
Ci tengo a farlo perchè ho visto che nei forum regna sovrana molta confusione, per cui speravo di fugare ogni dubbio.

Oggi parliamo di grafica. Quella cosa che gli utenti finali vedono e usano per giudicare, ma che fa sempre imbestialire i programmatori perchè è complicata ed è soltanto un "accessorio" alla struttura del suo programma.

Volevo fare un'introduzione un po' più profonda ma va bene anche così, passiamo senza indugi alla lezione! # scusate ancora se la formattazione non è delle migliori, è la prima volta che scrivo queste cose, mi concentro prima sui contenuti Wink

prima di iniziare una nota importantissima: oggi parleremo in detaglio della memoria 06, ma fate attenzione ad una cosa: non potete scrivere sulla memoria 06 un solo byte alla volta. Se lo fate, quel byte e anche il suo vicino assumeranno lo stesso valore. Per sopravvivere, dovrete (con l'ASM o un linguaggio di alto livello come il C o il Pascal che forse alcuni di voi conoscono) leggere ciò che c'è attualmente in un frammento di 2 o 4 bytes, sostituire il byte voluto, dopodichè rimetterlo.
  • COLORI

i colori sono quelle cose formate da onde elettromagnetiche che captano i nostri occhi (trovate una descrizione più migliore su wikipedia).
Il GBA possiede la capacità di mostrare ben 32768 colori. Un colore in formato "grezzo" è composto da 2 byte così ripartiti:

151160
0BBBBBGGGGGRRRRR


il primo bit deve essere sempre 0. Se dovesse essere 1, sarebbe un colore non consentito: ogni emulatore ha il suo comportamento, ad esempio credo che il VBA lo ignori semplicemente, mentre non ho mai provato a vedere come sia su hardware.

seguono 3 gruppi di 5 bit: ogni gruppo rappresenta un valore da 0 a 31 per ciascuno dei 3 colori primari (blue, green, red). Cambiando questo valore, il colore sarà più chiaro o più scuro relativamente a quel canale.

Facendo dei semplici conti, viene fuori, ad esempio, che il bianco è 0x7FFF e il nero è 0x0000 (che scoperta). Provate per compito a costruire i seguenti colori, vi aiuterà a diventare pratici nel maneggiare i bit:

- rosso a 20, verde e blu a 5
- verde a 20, rosso e blu a 5
- blu a 20, rosso e verde a 5

per i colori abbiamo finito.

  • MODALITA' BITMAP

il GBA ha varie modalità di funzionamento grafico, e alcune di queste sono le modalità bitmap, considerate più semplici da capire.

Cos'è un bitmap? è una matrice a due dimensioni ("map") che contiene i colori ("bit"). Come su programmi grafici al computer (esempio paint), ad ogni casella della tabella corrisponde un colore, salvato come abbiamo visto precedentemente.
okkei, ma come funziona esattamente? Ci sono 3 modalità bitmap, la 3, 4 e 5. Per attivarle dovrete scrivere tale valore nel registro DISPCNT, con WBTO, ASM oppure con l'IO viewer del vostro emulatore (sul VBA è nel menu tools). Dopodichè, tenendo conto di alcuni dettagli spiegati in seguito, vi basterà scrivere sulla memoria grafica i colori che volete, all'indirizzo corretto, ovviamente. Per calcolare l'indirizzo, tenete conto di quanto detto in precedenza sugli offset e le tabelle, e ricordate che la risoluzione del GBA è di 240x160 pixel.

Tabella riassuntiva delle modalità.

modewidthheightbppsize page-flip
3 240 160 16 1x 12C00h No
4 240 160 8 2x 9600h Yes
5 160 128 16 2x A000h Yes

Cosa significano quei due termini nuovi?

BPP significa "bit per pixel". La traduzione è inutile, ma sappiate che più è alto questo numero, più colori potrà avere il vostro pixel. un valore molto comune nei giochi pokemon è 4. Il massimo valore del GBA è 16 (che però è come se fosse 15, vedi sopra). Il primo game boy aveva 2 BPP. (ricordi d'infanzia...)
Page flipping si riferisce a una tecnica usata nella computer grafica. Se voi modificate la bitmap mentre l'hardware del GBA sta disegnando a schermo ciò che è contenuto nella memoria (cosa molto probabile perchè entrambi i processi richiedono parecchio tempo), avrete un fastidioso effetto "flickering", tipo sfarfallio. La soluzione è avere due immagini separate, così mentre una è visualizzata, potete disegnare sull'altra indisturbati e non causerete nessun orrore visivo. Quando avete finito di disegnare l'altra immagine, "voltate pagina" (da cui il nome) che deve essere visualizzata.
Per cambiare pagina, scrivete 1 o 0 sul bit 4 del registro DISPCNT. La seconda pagina si trova all'indirizzo 0x600A000. Ovviamente la modalità 3 non dispone della seconda pagina perchè occupa troppo spazio! Tongue
  • PALETTE

Bene, eccoci ad uno degli argomenti più importanti, nonchè tra i più controversi.
Avrete notato come nella tabella dei modi grafici abbia usato la scrittura 8bpp, quando prima avevo appena finito di dire che i colori sono composti da 16 bit. Come si spiega questo fatto? Ovviamente con le palette, dato che è l'argomento corrente, lol.
Come ho spesso detto, le console portatili intorno agli anni 2000 (e le fisse venti anni prima...) erano molto costose da realizzare, perchè la tecnologia non era così avanzata, perciò bisognava trovare ogni modo possibile per ridurre le dimensioni dei dati. Uno di questi sono le palette, l'altro le tilemap (che vedremo dopo).
Questi due metodi nascono dall'osservazione che gli elementi di un gioco presentano rappresentazioni grafiche molto ripetute. Che significa? Prendiamo ad esempio questa immagine di un personaggio Nintendo, e noteremo che presenta pochi colori.

[Immagine: link_lttp_sm.png]

Dopotutto, chi è che va in giro con un vestito a macchie colorate, come i quadri del 900? (a parte Mia Ceran in una puntata di mai dire niùs) un colore per la camicia e uno per i pantaloni, semplice. Poi la nostra pelle presenta più o meno la stessa tonalità ovunque. Oggetti di un solo, o comunque pochi materiali, tendono ad avere pochi colori diversi. Perchè allora non realizziamo un "dizionario" di colori? La palette fa questo: raggruppa un insieme di colori, che poi vengono utilizzati da chi disegna. Pensatela come ad una tavolozza di un pittore (credo che significhi pproprio quello in inglese), da cui attinge nel dipingere. Le bitmap indicizzate fanno lo stesso. invece di avere il dato in forma estesa (i 16 bit che indicano un colore), utilizzano solo 2, 4, o 8 bit. Così lo spazio occupato è 1/8, 1/4 o 1/2 dell'originale. Più l'immagine è ripetitiva, meno colori servono, più spazio si risparmia. Ecco perchè a spriting vi insegnano (lo fanno?) quelle tecniche strane di accostare i colori e robe di disposizioni a scacchiera per dare l'illusione di un colore intermedio che non esiste.
Dunque come sarà fatto il dato? Sicuramente sarà diverso. Facciamo un piccolo esempio.
Consideriamo un bitmap di 4x4 pixel per semplicità, due bianchi e due neri.

0x0000 0x7FFF
0x7FFF 0x0000

questa sarebbe la rapppresentazione in modalità a 16 bpp (ricordate che una volta caricati nella memoria, le righe e le colonne scompariranno, saranno tutti in fila indiana).
Fingiamo di essere nella modalità a 8 bpp, e che il nero e il bianco siano i primi due colori della nostra palette. Come risulterà la bitmap? Costruiamola insieme.
Abbiamo 8 bit per ciascun pixel , e i pixel sono 4 -> 32 bit, ma 8 bit fanno un byte = 4 byte

0x?? 0x??
0x?? 0x??

E già abbiamo dimezzato la dimensione.
Ora, come è fatta la palette? Nel GBA ci sono 2 tipi di palette: palette normale e superpalette. quella normale ha 16 colori (4 bit), la superpalette 256 (8 bit). I colori sono semplicemente disposti uno dopo l'altro, come a formare una bitmap di una riga sola (16x1 o 256x1, ma sul palette viewer del VBA sono 16x16). In altri sistemi (tipo GIMP) è altamente probabile che il formato di memorizzazione sia leggermente più complicato, dunque non fate assunzioni. siccome abbiamo detto che i colori nero e bianco sono i primi due (potevano essere il quindicesimo e il quarantottesimo), sostituiremo i byte con l'idice del colore, ovver uno 0 e un 1 (oppure un 14 e un 47, rispettivamente per l'altro esempio).

0x00 0x01
0x01 0x00

E se avessimo a disposizione solo 16 colori? In tal caso avremmo un bpp di 4. Dobbiamo perciò accostare "entità" da 4 bit per ciascun pixel.
entità nero - entità bianco
entità bianco - entità nero

ricordandoci che "entitànero" è "0000b" e "entità bianco" è "0001b", componiamo la bitmap:

0000b 0001b
0001b 0000b

mettiamo insieme i byte:

0x01
0x10

vedete la comodità delle basi a potenza di 2? posso letteralmente giocare a scomporre e ricomporre pezzi di numeri. 0001b e 0000b concatenati fanno 00010000, che in esadecimale è 1 e 0, ovvero 10!
So che sembra una cosa arcana, ma qui sopra, in due byte (01 e 10), ci sono 4 pixel: due per ogni byte. il pixel di coordinate (0,0), ovvero quell in alto a sinistra, occupa i primi 4 bit del primo byte; il secondo pixel occupa i second 4 bit del primo byte; il terzo pixel occupa i primi 4 bit del secondo byte; e così via. I tiles, che vedremo dopo, in pokemon sono memorizzati in questo modo, ovvero a 16 colori.
vedete come esempio il link in versione "palettizzata" a 4BPP

[Immagine: link_lttp_mem.png]


Per compito provate a rappresentare la bitmap a 2 e 1 BPP, sempre supponendo che il nero e il bianco siano i primi 2 colori della palette. Inoltre, quanto risparmierei se usassi 1 BPP rispetto al full bitmap? Con forumula (via Messaggio Privato).
In conclusione, lo ripeto per essere chiaro: la palette (guardate bene come si scrive: è un termine inglese, con una elle e due ti) è un insieme di colori, scelti tra tutti quelli disponibili (32768). Fate come Bart dei simpson che lo scrive un po' di volte alla lavagna, e andate a spargere la buona novella a quelli che storpiano il nome o lo usno per altri significati.

una nota: il colore 0 di ogni palette (che sia di 16 o 256 colori) è usato per la trasparenza. dunque qualsiasi pixel che ha quel colore non verrrà mostrato.
  • IL MAGICO MONDO DELLE MATTONELLE

Benvenuti nella seconda e più potente alternativa per comprimere le immagini. Sarà leggermente confusionante all'inizio, ma se leggete piano ragionandoci su sopravvivrete!

Le palette, come abbiamo visto, servono per comprimere i colori, ma possiamo fare di più, ovvero comprimere anche le immagini (io in questo tutorial continuo a usare la parola "comprimere", ma badate bene di non confonderla con la vera compressione a livello di file e byte, la famosa LZ77. Quest'ultima è "lossless", ovvero sfrutta degli algoritmi (tipo zip) per ridurre la diensione in byte dei nostri dati. invece le palette e le mattonelle sono compressioni "lossy", ovvero con perdita di informazioni, e conseguentemente qualità (tipo mp3)).

Cercate sempre di utilizzare le modalità a mattonelle piuttosto che bitmap. Ci sono svariati motivi: sono implementate nell'hardware (perciò non dovrete faticare a fare calcoli per renderizzare le cose), sono dannatamente più veloci, per il motivo precedente, occupano parecchio spazio in meno, sono stratificati, e dulcis in fundo, si possono applicare vari effetti carini (come la mia implementazione della textbox trasparente con il blending; e lo scrolling, pesantemente usato dagli RPG come pokemon).

come si fa? In certi giochi, tipo gli RPG, i platformer, e così via, le ambientazioni sono spesso molto ripetitive. Considerate ad esempio la seguente immagine:

[Immagine: brin3-full.png]

Questa immagine è molto grande, 512x256, e se la facessimo in 256 colori, occuperebbe la bellezza di 131 KB, Che è una volta e mezza ciò che abbiamo a disposizione. Fortunatamente però notiamo che ci sono parecchi "pezzi" ripetuti. Inoltre, sembra quasi che l'immagine sia divisa in aree da 16x16 pixels. Questi sono i tiles. Grazie ai tiles (mattonelle) possiamo costruire immagini molto grandi, purchè ripetitive. Abbiamo a disposizione una tavolozza di tiles, chiamata tile set. E continuando nello stesso modo della palette, in cui un'immagine era formata dagli indici dei colori, adesso l'immagine sarà formata dagli indici della collezione di piastrelle. Così, invece di usare 512*256 entità colore, utilizzeremo (512/16)*(256/16) entità piastrelle. Considerando che i tiles stessi usano le palette (a 16 o 256 colori), il risparmio può essere veramente abissale.

guardiamo come il tileset (a sinistra) viene utilizzato per formare la mappa (a destra):

Ecco come funzionano le tilemaps. Non si definisce l'intera immagine, ma gruppi di pixel messi insieme in piastrelle e si descrive l'immagine in termini di quei gruppi.

Le piastrelle uniche sono nel tileset, che può (e di solito è) essere più grande della tilemap. La dimensione del tileset può variare: se il bitmap è molto variabile, probabilmente avrete molte piastrelle uniche; inoltre, se il disegno è ben allineato (ovvero gli elementi "fittano" una griglia grande quanto la dimensione dei tiles), il tileset sarà più piccolo.

Ora che abbiamo visto la teoria, passiamo alla pratica.

Ci possono essere fino a 4 strati ("BG" sull'emulatore), e i giochi pokemon li usano tutti. La dimensione dei background si cambia con gli opportuni registri e varia da 128x128 pixel fino a 1024x1024. I tiles sono grandi 8x8 pixel. Su advance map infatti potete unire 4 tiles per fare un "blocco".
Ora viene la parte più difficile, state attenti.

Dovete prestare attenzione alla struttura della VRAM, altrimenti potreste avere delle spiacevoli sorprese. Mi aiuto con una tabella.





Memory
0600:0000 0600:4000
0600:8000 0600:C000
Tileset
0 1 2 3
Tilemap
0 7 8 15
16 23 24 31

Notiamo che i primi 64 KB di VRAM sono destinati ai BG, mentre i rimanenti 32 KB sono dedicati agli sprite, che non vedremo perchè sono simili e più semplici.
Sono disponibili 4 settori in cui collocare i nostri diversi tiles, l'idea è che ogni settore contiene tiles per ciascun layer. Le tilmao invece possono essere collocate in ciascuno degli slot grandi 800h bytes.
Tilemap più grandi occupano più slot, ovviamente.
Se aprite una ROM pokemon noterete una cosa strana, ovvero che le tilemap sono tutte in fondo, probabilmente per lasciare uno spazio contiguo più grande possibile per i tiles (dovrebbe semplificare gli algoritmi dell'engine). E niente, è una cosa perfettamente legittima, solo volevo farvela notare.
C'è un problema: sia i tileset che le tilemap condividono la stessa memoria. Per cui agli inesperti potrebbe capitare che per errore i tiles e le mappe si sovrappongano, generando brutti glitch grafici. un esempio potete trovarlo nella sezione domande,
#chiedere a blake se postare
Detto questo, dovete sempre fare attenzione a cosa succede a basso livello nell'hardware (anche se emulato), non solo nei mondi fantastici e idilliaci degli editor di tilemap (cyclone, NTME)...
Dopo tutte queste raccomandazioni, vi informo che per cambiare l'offset della tilemap di un determinato BG bisogna settare i bit 8-12 del registro BGiCNT, dove i è il numero del vostro BG.

Per concludere vi lascio alcune informazioni sparse.
  • i registri BGiHOFS e BGiVOFS comandano lo scrolling, ma attenzione, sono read-only! Inoltre non rappresentano la posizione della mappa sullo schermo, ma la posizione dello schermo sulla mappa. E' una sottile differenza, un segno meno che cambia tutto:

  • I bit 2-3 dei BGiCNT servono per scegliere quale dei 4 settori di tiles usare come "base". Questo vuol dire che se nella tilemap c'è un indice di un tile, questo verrà preso partendo a contare da uno dei quattro offset dei settori.
  • I bit 14-15 regolano la dimensione:

    00: 32x32
    01: 64x32
    10: 32x64
    11: 64x64

    in unità di tiles.
  • Anatomia di una "entry" di tilemap (nel caso i programmi "automagici" falliscano):

    F E D CBA9 8 7 6 5 4 3 2 1 0
    PB
    VF
    HF
    TID

    TID: tile Identification, ovvero l'indice del tile. Sarà rappresentato sullo scgermo il tile con quel numero, a partire dalla base (i settori) scelta. Tuttavia, se usate la base 3, non potrete sconfinare nella memoria riservata agli sprite.
    HF : Horizontal flipping. Sì, potete anche ribaltare i tiles. Come vedete, le modalità tiled sono molto potenti.
    VF : Vertical Flip
    PB : Palette Bank. ovvero, quale palette avrà il tile. Non ha significato se il BG è a 256 colori ("ficiur" settabile con l'apposito registro CNT)
  • L'ultimo lascito che vi faccio è un piccolo avvertimento, anche se in pokemon non si verifica. Se usate tilemap più grandi di 32x32 (almeno nell'overworld in pokemon non vengono usate, per questo non si verifica), dovete stare attenti all'ordinamento: purtroppo è presente una limitazione, che fa si che le "entry" di tilemap non siano disposte veramente come una tabella, ma sono come spezzettate in sotto mappe di 32x32, e accostate. Mi spiego meglio con un'immagine.


    32x3264x3232x6464x64
    0
    01
    0
    1
    01
    23
    Dunque, dovrete fare fino a 4 mappe separate. Io personalmente non ho mai dovuto fare mappe così grandi, perciò non saprei se i programmi tengono in considerazione questo aspetto. comunque nei pokemon è una cosa rara, e dubito ne avrete bisogno voi stessi.
  • Ultima cosa davvero prima di chiudere: se volete abbreviare i tempi di sviluppo, usate usenti (assonanza wow)! ha un esportatore (disponibile anche stand-alone) che è un "life saviour" ! Comprime, genera file .h, .s, palette, tilemap, praticamente è insostituibile!


siete fortunati che non vi do il compito perchè non ho tempo di prepararlo!

CIAONE!
(adesso per un mese basta eh)


Se ti sono stato d'aiuto, clicca il tasto "mi piace" qua sotto! Grazie! : )

Il mio nuovo motto: don't ask for ETAs!

[Immagine: yKWdaxi.gif]

[Immagine: firma.png]
"L'uomo è ancora il più straordinario dei computer"


Guida di cui vado più fiero: Mega-Huge Bonnox' guide (to be expanded)


[Immagine: toothbrush_girl_by_timewyrm-d6i5ezm.jpg]

Ho un T.A.R.D.I.S. modello 40 ma non so usarlo. Pacman
03-03-2017 11:46 AM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #81
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Tornato libero per qualche mese (a meno di prove in itenere)

E un avxe versione 1 ma nn so perche non partono gli script o cmq sembra che non abbiano effetto

Nn ho idea di cosa sia sbagliato, non va neanche lo script della lezione per l erba.

Vado avanti con la nuova lezione finche nn mi sblocco
09-03-2017 11:56 PM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #82
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
in teoria la risoluzione della problematica sarebbe considerata assodata in questo corso, ma provo lo stesso ad aiutarti: gli script normali tipo msgbox applymovement eccetera funzionano?


(mi sento come il mio professore di pajc quando gli chiesi perchè eclipse non trovavsse la classe principale...)
10-03-2017 12:00 AM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #83
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
In teoria, in pratica quando nn ricordi le cose, le cose nn funzionano xD

No, e come se nn li caricasse
Sto usando un xp virtuale con xse credo l ultima versione e ruby.

Lo so che probabilmente e una cretinata assurda, faccio cose piu difficili giornalmente xD ma questa nn mi sta andando e nn ho idea di che diamine di problema ci sia.
10-03-2017 10:18 PM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #84
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Guarda che amap e xse funzionano anche con wine Wink (per forza, useranno API talmente vecchie come l'universo che linux le emula quasi meglio di windows...)

no comunque, ti sei accertato che la ROM venga salvata effettivamente?
Prova ad usare windhex, apri file compare, scegli una rom originale, scegli quella modificata, fai click su "martin garrix si volaa" e dovresti vedere alcuni risultati.
11-03-2017 12:17 PM
Cerca Cita
Bonnox
Signore del Tempo un po' imbranato
*****
Offline

Messaggi: 1,703
Registrato: 06-07-2014
Reputazione: 6
Mi Piace Ricevuti: 341
PokéMoney: 1,801.25₱
Messaggio: #85
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
ci siete ancora o lasciate?

@Chimchar101
@skyos

(è un consiglio quasi obbligato, dovreste rispondere tipo domani per non farvi buttare fuori ahah)
12-04-2017 06:47 PM
Cerca Cita
skyos
Nuovo Arrivato
*

Messaggi: 40
Registrato: 25-09-2016
Reputazione: 0
Mi Piace Ricevuti: 4
PokéMoney: 67.00₱
Messaggio: #86
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Ci sono ancora ma non ho finito tutti i compiti della nuova lezione

Torno sul wbto misterioso dopo
(Questo messaggio è stato modificato l'ultima volta il: 13-04-2017 08:27 AM da skyos.)
13-04-2017 08:27 AM
Cerca Cita
Chimchar101
Best Symya In The World
*****
Offline

Messaggi: 620
Registrato: 17-08-2014
Reputazione: 1
Mi Piace Ricevuti: 50
PokéMoney: 587.00₱
Messaggio: #87
RE: Aula di skyos, Tony26, Wendrew, Chimchar101 - Prof. Bonnox
Io invece mi scuso per la risposta (molto) in ritardo, però devo lasciare, non ho abbastanza tempo :\
Sperò però di riuscire a reiscrivermi qualche volta, fino ad ora mi erano piaciute molto le lezioni! ^.^
13-04-2017 10:32 PM
Cerca Cita
Rispondi 




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