18.07.2013 Views

Nintendo Entertainment System

Nintendo Entertainment System

Nintendo Entertainment System

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.5 Eksempel 5: Et metatile-system<br />

5.5. EKSEMPEL 5: ET METATILE-SYSTEM<br />

Siden attribute tablene bare kan fargelegge individuelle blokker på 2 x 2 tiles eller større, er det<br />

hensiktsmessig å dele inn grafikken etter denne begrensningen, slik vi gjorde i forrige eksempel.<br />

Da kan vi gi hver blokk en egen palett, og samtidig tar informasjonen om hvilke blokker som skal<br />

plasseres hvor på skjermen mye mindre plass. Et helt nametable tar 960 bytes, mens en oversikt<br />

over hvilke metatiles som skal hvor på skjermen tar til sammenligning 15 · 16 = 240 bytes (det<br />

er 16 blokker på én rekke og 15 rekker). Blokker på 2 x 2 tiles kaller man ofte for metatiles.<br />

Svært mange NES-spill, da spesielt platformspill, bygger grafikken opp slik.<br />

I dette et eksempelet skal vi implementere et system for å bygge opp bakgrunnsgrafikken med<br />

metatiles. Det programmet skal gjøre er å ta et brett som forteller hvor metatilene skal plasseres<br />

på skjermen, og fylle nametable 1 med de riktige tilene:<br />

Sammenhengen mellom tabellen til venstre og figuren til høyre bør være grei å se. Vi ser da for<br />

eksempel at metatile 0 her helt blank, mens metatile 2 er mursteiner. I koden vår er vi nødt til<br />

å definere hvilke individuelle tiles hver metatile skal bestå av. De ni første tilene i pattern table<br />

ser slik ut i dette eksempelet:<br />

Figur 5.4: Tile 0 til 8 i pattern table 1<br />

Vi ser da med andre ord at alle de fire tilene i metatile 0 må bestå av tile 8 (den er blank), mens<br />

metatile 1 må bestå av de fire første tilene, og metatile 2 må bestå av de fire neste. Det er flere<br />

måter å oppgi hvilke tiles metatilene skal bestå av. Én måte kunne for eksempel være at vi gjør<br />

noe slikt:<br />

metatiles :<br />

; metatile 0<br />

. byte 8, 8, 8, 8<br />

; metatile 1<br />

. byte 0, 1, 2, 3<br />

; metatile 2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!