2013-09-23 34 views
5

Sto fraintendendo qualcosa qui? 128 KB è molto più piccolo di 0xFFFFFF byte.

risposta

5

Il fatto che lo spazio degli indirizzi del SNES sia molto più grande del numero effettivo di indirizzi non è un problema. Su una macchina a 64 bit, i puntatori sono abbastanza grandi da occupare i byte 1.844674407 × 10 , ovvero circa 10 miliardi di GB. Non ho mai visto nessun computer con molta RAM, ma non è un problema. Alcuni indirizzi non si riferiscono a nessun indirizzo in memoria.

Spero che questo aiuti!

+0

Penso che questo mi aiuti a capire parte della mia domanda. Grazie! Il fatto è che nella mappa di memoria SNES questi indirizzi corrispondono effettivamente a indirizzi reali. È che solo una certa parte di questi indirizzi (128k di loro) sono RAM? Qual è l'altro tipo di memoria oltre alla RAM? (scusa se non ho assolutamente senso) – VJC1288

+0

Come menzionato in questo link (http://romhack.wikia.com/wiki/SNES_ROM_layout), la memoria include diverse regioni * mirror *, che sono indirizzi che reindirizzano ad altre posizioni RAM . Ciò significa che determinate aree di memoria sono raddoppiate, rendendo gli indirizzi che normalmente sarebbero non validi, invece di reindirizzare a posizioni valide. – templatetypedef

6

Ok, vecchia domanda, ma questo è appena spuntato su Google e posso assolutamente rispondere.

La confusione qui sta nella differenza tra RAM, ROM e lo spazio di indirizzamento totale del SNES. Mentre è vero che l'SNES ha solo 128K di RAM, è solo nella memoria volatile e non tiene conto dello spazio ROM. La RAM di lavoro è mappata ai banchi 7E e 7F, ciascuno 64K. La VRAM è un altro 32K di memoria volatile, ma è inaccessibile all'interno dello spazio degli indirizzi standard e deve essere scritta tramite registri speciali.

Le mappature ROM più comuni (denominate LoROM e HiROM all'interno della comunità) mappano le banche 32K nella metà superiore dello spazio degli indirizzi in ciascun banco o in 64 KB completi. "LoROM" mappa i banchi 32K (00: 8000-00: FFFF, 01: 8000-01: FFFF, ..., 3F: 8000-3F: FFFF, rispecchiato a 80: 8000-BF: FFFF) mentre HiROM esegue il mapping di banchi a 64K (C0: 0000-C0: FFFF, C1: 0000: C1-FFFF, ... FF: 0000-FF: FFFF). Come accennato in precedenza, la RAM di lavoro viene mappata su banchi 64K 7E e 7F. Non sono così familiare con il funzionamento di SRAM, ma quello viene mappato a 70: 0000 iirc e viene eseguito il mirroring in diversi banchi aggiuntivi nella regione 7X.

Modifica: Come ulteriore nota, ROM ovviamente è di sola lettura. È dove vengono memorizzati i dati del programma (leggi: il gioco, le sue istruzioni e le sue risorse). Tutto ciò che deve essere modificato (dati compressi che devono essere decompressi, dati di livello, nemici, statistiche del giocatore, tilemaps per qualsiasi visualizzazione sui vari sfondi, ecc.) Viene trasferito alla RAM (7E/7F) per l'elaborazione. La ROM è ciò che viene stampato sui chip delle tue cartucce, mentre la RAM è semplicemente piena di dati inutili ogni volta che il sistema viene acceso; è prassi piuttosto normale utilizzare un semplice ciclo per azzerare la RAM durante i passaggi di inizializzazione di un gioco.

La speranza che cancella tutto!