NeoGeo Graphics Unleashed

Aperto da darkdream, Novembre 02, 2006, 21:38:51

Discussione precedente - Discussione successiva

darkdream

mi sono rotto era da diverso tempo forse un anno che avevo scritto stò documento... forse è arrivata l'ora di rilasciarlo (probabilmente no ma chissenefrega lol)... poi ditemi che non sono troppo buono  :rolleyes:

:----------------------------------------------------------------------------:

Formati grafici del NeoGeo v 0.5
ovvero come complicarsi la vita :P
written by evo
evobboy at yahoo dot it

 Se hai utilizzato queste informazioni gradirei se mettessi il mio nome
 da qualche parte nei progetti che sei riuscito a fare grazie a queste
 info (non per forza).

Solito disclaimer non utilizzare le informazioni per ottenere profitti, non spacciarle per tue è vietata la modifica/redistribuzione in forma sia parziale che totale (inclusa la traduzione quindi) senza il consenso dell'autore cioè me.

- Introduzione

 Questo documento è stato scritto dopo diverse ore di hacking di rom,
 e l'utilizzo di documenti e sorgenti scritti da altri, quindi mi sento
 in dovere di ringraziare il Mame Team, Kan, Shin Seiki, Charles Doty,
 BlastarX e tutti gli altri che non ricordo.
 Un saluto a Clomax, Gemini, GeO, mentz, mog_tom, Saffo, ^duke^, Brisma.
 
 
 Il Neogeo utilizza due formati grafici memorizzati in rom diverse,
 il formato 8x8, lo stesso dei file Fix del neogeo CD e che si trova nelle rom *_sN.rom;
 e il formato 16x16 memorizzato nei file *_cN.rom.(sembra che il formato dei file Spr sia
 diverso da quello del NeoGeo, se non altro si tratta di un unico file...).


- Grafica 8x8: Fix e *_sN.rom

 Il formato di fronte a cui ci troviamo è alquanto complesso, forse troppo...
 Ogni pixel è formato da 4 bit, vuol dire che con ogni byte noi disegnamo 2 pixel.
 I primi 4 bit disegnano il secondo pixel mentre i secondi 4 bit disegnano il primo pixel.
 Inoltre visto che alla SNK vogliono fare le cose difficili...
 Noi sappiammo che queste tile sono 8x8, immaginatele come divise in due parti di 4x8:

    0 1 2 3     4 5 6 7
   ._._._._.   ._._._._.
 0 |_|_|_|_|   |_|_|_|_|
 1 |_|_|_|_|   |_|_|_|_|
 2 |_|_|_|_|   |_|_|_|_|
 3 |_|_|_|_|   |_|_|_|_|
 4 |_|_|_|_|   |_|_|_|_|
 5 |_|_|_|_|   |_|_|_|_|
 6 |_|_|_|_|   |_|_|_|_|
 7 |_|_|_|_|   |_|_|_|_|
 
 bene i pixel vengono disposti a due a due seguendo le colonne a partire dalla 4^ e 5^.
 (prima i secondi 4 bit e poi i primi).
 
 facciamo un esempio pratico così è più facile :=)

 ecco come si presenta un 1...
 
    0 1 2 3 4 5 6 7
   ._._._._._._._._.
 0 |_|_|_|_|_|_|_|_|
 1 |_|_|#|#|#|_|_|_|
 2 |_|_|_|#|#|_|_|_|
 3 |_|_|_|#|#|_|_|_|
 4 |_|_|_|#|#|_|_|_|
 5 |_|_|_|#|#|_|_|_|
 6 |_|_|_|#|#|_|_|_|
 7 |_|_|#|#|#|#|_|_|
 
 ed ecco in hex:
 
 22 21 21 21 21 21 21 11 22 22 22 22 22 22 22 22
 22 22 22 22 22 22 22 22 22 11 12 12 12 12 12 11

 $22 = %0010 0010
 $21 = %0010 0001
 $11 = %0001 0001
 $12 = $0001 0010
 
 consideriamo che nelle palette %0010 è bianco (B), mentre %0001 © è un colore,
 cominciamo dalle colonne 4 e 5:
 
   0 1 2 3 4 5 6 7
 0         B B ------>22
 1         C B ------>21 (ricordate che i bit vengono prima i secondi?
 2         C B ------>21  quindi è come se mettessimo %0001 © 0010 (B))
 3         C B ------>21
 4         C B ------>21
 5         C B ------>21
 6         C B ------>21
 7         C C ------>11 = %0001 0001
 
 facile no?
 
 poi andiamo con le colonne 6 e 7, poi 0 e 1, e alla fine 2 e 3.
 
 fate una prova con un foglio a quadretti, numerate la griglia da 0 a 7, trasformate quei
 valori in binario, e colorate i quadretti che corrispondono a C (%0001) vi assicuro che
 farlo può essere più esplicativo di mille parole ;)
 
 Essendo ogni tile fatta da 32 byte noi avremo in tutto 4096 tile
 (la rom della grafica 8x8 è sempre di 128 kb)


- Formato 16x16: *_cN.rom (MVS E AES)
 
 Le rom sono prese a coppie, [_cn1,_cn2],[_cn3,_cn4] etc...
 nel primo file abbiamo 2 bitplane disposti in maniera lineare, nel secondo gli altri due,
 per un totale di 4 bitplane e quindi 16 colori.
 
 File 1:
 [bp1] [bp2]
 
 File 2:
 [bp3] [bp4]
 
 Oltretutto i bit sono invertiti, quindi se un bitplane fosse %10011010
 sarebbe invece viualizzato come %01011001.


- Formato 16x16: *.spr (CD)

 Questo è un 4 bpp planar: i 4 bitplane che lo compongono vengono uno dopo l'altro:
 
 [bp1] [bp2] [bp3] [bp4]
 
 Anche qui i bit sono invertiti. Come nel formato MVS/AES.
 

- Conclusioni

 Ed ecco conludersi il nostro viaggio nella grafica del NeoGeo (che mi è costata diverse ore di fatica...)
 Non mi va più di scrivere quindi se avete qualcosa da dirmi, chiedere,
 possibili modifiche al documento, l'email è evobboy@yahoo.it

:----------------------------------------------------------------------------:

|GeO|


mentz


darkdream

CitazioneGrazie per il saluto !!!
lol

Sephiroth 1311

CitazioneGrazie per il saluto !!!
I second mentz. ;)

E complimenti per la guida, è scritta chiaramente ed esaustivamente. :)
Sephiroth 1311
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************
Fidati di chi ama leggere, fidati di chi porta sempre con sé un libro di poesie. Guarda con sospetto chi ti dice che non ha tempo, che la letteratura è una bella  cosa, che quando si è giovani  si può leggere, ma poi? Mente, non gliene importa nulla. Mente sapendo di mentire.
Roberto Cotroneo

darkdream

credevo fosse terribilmente incasinata vabbè meno male che qualcuno riesce a capire le ca***te che scrivo :D