SNES / Super Famicom-tråden

Mere
22 feb 2017 06:49 - 22 feb 2017 07:09 #26 af Sumez
Sumez svaret på emne: SNES / Super Famicom-tråden
Jeg har aldrig bemærket det i nogen SFC spil? Men måske har min hjerne bare vænnet sig til PAL borders fra min barndom.

Men det er i hvert fald ikke af performance-hensyn hvis nogen spil gør det. Du kan ikke få et SNES-spil til at køre hurtigere ved at vise mindre grafik, sådan fungerer hardwaren slet ikke :)

Det kunne måske være pga begrænsninger i nogle af maskinen "modes" - den har forskellige modes den kan rendere baggrundsgrafik i, den mest kendte er mode7.

Jeg tror dog højst sandsynligt at det bare er udviklerne der har prøvet at gå efter et mere "cinematisk" look. Alternativt har de bare taget "title safe" anvisningerne meget alvorligt. De fleste TV-skærme havde jo en del overscan dengang, så de sorte kanter kunne med stor sandsynlighed slet ikke ses af de fleste mennesker, inkl. udviklerne.

Please Log på or Opret en konto to join the conversation.

  • Konsolkongen
  • Konsolkongen's profilbillede
  • Væk
  • Barske sager!
Mere
22 feb 2017 11:38 #27 af Konsolkongen
Konsolkongen svaret på emne: SNES / Super Famicom-tråden

Sumez skrev: Men det er i hvert fald ikke af performance-hensyn hvis nogen spil gør det. Du kan ikke få et SNES-spil til at køre hurtigere ved at vise mindre grafik, sådan fungerer hardwaren slet ikke :)


Kan du uddybe? Det virker for mig underligt hvis opløsningen ikke skulle spille en rolle, især taget i betragning af at SNES generelt kører lavere opløsning end Mega Drive, men faktisk havde muligheden for at outputte i 480i.

Shoot and shoot to advance further!
Wonderful attack by just two men!!

Please Log på or Opret en konto to join the conversation.

Mere
22 feb 2017 13:25 - 22 feb 2017 16:37 #28 af Sumez
Sumez svaret på emne: SNES / Super Famicom-tråden
Det er trods alt ikke moderne videokort vi har med at gøre her. :) SNES har syv forskellige modes, inkl. den der sjældent benyttede 480i-mode du nævner, men det er ikke muligt for hver enkelt spil at styre f.eks. hvilken opløsning de kører i. I forhold til det, er den måde grafikchippen fungerer på alt for fasthugget i sten.

Som på alle andre spillemaskiner inden 3D blev standard, fungerer det meget simpelt. Der er en eller flere bunker videohukommelse hvor der ligger info om hvilke tiles der udgør et eller flere baggrundslag, plus en OAM (VDP på MegaDrive) hukommelse som indeholder informationer om hvilke sprites der er aktive på skærmen.
Alle disse områder har en helt fast størrelse, som PPU-chippen går helt igennem hver eneste frame, uanset om de er udfyldt eller ej. Du kan altså ikke f.eks. vælge at smide mindre data ind for at forbedre performance - hvis der er sorte borders i toppen og bunden ligger der faktisk en 8x8 eller 16x16 pixel sort kasse i grafikdataen, der gentages X antal gange på de første par rækker og bliver renderet hver eneste frame.

Der hvor der så kan være en reel forskel, og som måske kan være det du tænker på, er at overførslen til baggrundendes character map-hukommelse kan gøres meget hurtigere på MegaDrive.
Det er faktisk lidt af en skrøne at SNES'en ikke er ligeså kraftig som MegaDrive, men pga dens langt mere fleksible grafiske egenskaber, skal den også arbejde med langt større mængder data, hvilket skaber en større flaskehals i forhold til hvad dens DMA'er kan trække. Til sammenligningen er Sega'ens DMA lynhurtigt, hvilket rygterne påstår faktisk er dette udtrykket "Blast Processing" dækker over, og årsagen til at Sonic-spillene er i stand til at scrolle meget hurtigere end et SNES-spil kan (i hvert fald på papiret), da den kan nå at læse mere grafikdata ind i løbet af den meget korte tid der er til dette under vblank.

Det der er værd at bide mærke i i den sammenhæng er at denne begrænsning ikke er noget der direkte berører performance. Det er nærmere en øvre grænse. DMA-overførslen skal ske under vblank (altså udenom selve programkoden), og kører i bund og grund uafhængigt af CPU-tid - Når rigtig mange tidlige SNES-spil performer helt ad helvede til sammenlignet med MegaDrive skyldes det primært sløj kode (måske ringere kvalitetskrav?), og en generel manglende viden om SNES'en der kan være lidt af et helvede at udvikle til, især sammenlignet med MegaDrivens fatastisk simple 68k-processor.

Man kunne så mistænke de spil Neros nævner for netop at prøve at overkomme førnævnte problematik ved at vise mindre baggrund der skal scrolle. Men udover at dette kunne løses meget mere elegant (f.eks. via et dedikeret statisk "HUD" i toppen som næsten alle andre spil), er der ikke nogen af de nævnte spil der scroller særlig hurtigt, nærmest tværtimod, så det ville have være nemmere for dem bare at lade være.


Jeg tror stadig den mest realistiske forklaring ganske enkelt bare er forbehold for overscan, og man kan sikkert grave MegaDrive-spil op der gør det samme (det er i hvert fald normalt med grafik-skrald i overscan-området). Beklager hvis min forklaring var lidt for uddybende, men jeg synes den slags er interessant. Og hvis nogen mener jeg tager fejl omkring nogen af emnerne, er folk meget velkomne til at udpege det. :)

Please Log på or Opret en konto to join the conversation.

Mere
22 feb 2017 16:38 - 25 feb 2017 21:35 #29 af neros
neros svaret på emne: SNES / Super Famicom-tråden
Altså jeg har faktisk lagt ret meget mærke til det når det kommer til SNES/SFC spil.

Et godt eksempel er Capcom's Muscle Bomber.

Min Youtube kanal: www.youtube.com/user/neros77

Please Log på or Opret en konto to join the conversation.

  • Konsolkongen
  • Konsolkongen's profilbillede
  • Væk
  • Barske sager!
Mere
25 feb 2017 00:34 #30 af Konsolkongen
Konsolkongen svaret på emne: SNES / Super Famicom-tråden

Sumez skrev: Som på alle andre spillemaskiner inden 3D blev standard, fungerer det meget simpelt. Der er en eller flere bunker videohukommelse hvor der ligger info om hvilke tiles der udgør et eller flere baggrundslag, plus en OAM (VDP på MegaDrive) hukommelse som indeholder informationer om hvilke sprites der er aktive på skærmen.
Alle disse områder har en helt fast størrelse, som PPU-chippen går helt igennem hver eneste frame, uanset om de er udfyldt eller ej. Du kan altså ikke f.eks. vælge at smide mindre data ind for at forbedre performance - hvis der er sorte borders i toppen og bunden ligger der faktisk en 8x8 eller 16x16 pixel sort kasse i grafikdataen, der gentages X antal gange på de første par rækker og bliver renderet hver eneste frame.


Jeg ved ikke om jeg misforstår noget, men vil det ikke stadig være mere krævende for maskinen at have en hel skærm med scrollende baggrund, end en skærm hvor kun 90% scroller og resten er erstattet af sort? Jeg forstår godt at områderne skal tegnes uanset og at maskinen ikke bare kan springe disse områder over, men om der vises passiv eller "aktiv" grafik gør vel en forskel?

Det var derfor jeg tænkte at de måske valgte passiv sort, da SNES'en er kendt for at have slowdown i rigtig mange titler (især shmups), hvis mange scrollende objekter og baggrunde er for hårdt for maskinen kunne det måske give mening? :)

Shoot and shoot to advance further!
Wonderful attack by just two men!!

Please Log på or Opret en konto to join the conversation.

Mere
27 feb 2017 08:16 #31 af Sumez
Sumez svaret på emne: SNES / Super Famicom-tråden
Jeg tror det er lidt svært for mig at forklare. Men tænk på det sådan her - Hvis du har meget grafik der skal scrolle forbi, har du en rimelig statisk mængde data der skal behandles hver frame. Der er ikke nogen steder i banen hvor der pludselig er flere tiles der skal læses ind end andre. Som udvikler ved du hvad du skal regne med, hvor hurtigt spillet maksimalt forventes at scrolle, og det er nemt at gruppere logikken så du kan behandle dataen i blokke, så det er ikke fordi du står med en kæmpe buffer hver eneste frame.
Såfremt din kode er fornuftigt optimeret, er logikken til at scrolle en scene er helt generelt en meget lille del af de CPU cycles du har til rådighed per frame, og at skære 2-4 rækker tiles fra (sorte borders) vil ikke ændre denne logik særlig meget, og den regnekraft du sparer er virkelig minimal. (tværtimod kan der potentielt være ting relateret til DMA'ens design og binær tallogik der gør at det faktisk er mere krævende at springe et par rækker over, men det er ikke værd at gå i dybden med)

Når du siger "SNES'en er kendt for at have slowdown i rigtig mange titler", så er det du hentyder til frame-logik der tager lang tid at udregne, og når maskinens grafikchip (PPU) når til den næste vblank, er programmet ikke parat til at overføre data til video RAM'en endnu, så i stedet viser den det data den allerede havde fra forrige frame, og logikken til at udregne næste frame går først igang efter næste vblank. Dette skyldes typisk dynamiske udregninger i koden der f.eks. kan være afhængig af antal objekter på skærmen. Det er nemt at formode at dette kan skyldes for mange sprites, men hardwaren er lavet til at vise en bestemt mængde sprites, hverken mere eller mindre, og vil altid køre med samme hastighed, typisk er det i stedet spillogikken der er knyttet til disse objekter.
Det er nok også derfor du ofte har oplevet slowdown i shoot'em ups. Hvis der kommer mange fjender der skyder, kan der være et ukendt, dynamisk antal skud på skærmen, og de skal alle have udregnet kollisionslogik med dit skib og muligvis også andre ting som terræn, osv, og det samme skal fjenderne selv. Det er nemt at sige at spillet er dårligt kodet, men som udvikler er du altid nødt til at finde et kompromis et sted - f.eks. optimere spillet imod forventet max 5 fjender på skærmen ad gangen, og ca. 5 skud per fjende, og så acceptere at spillet halter lidt når denne grænse overskrides. Som jeg påpegede før vil du også nemt kunne se at de primært er de spil der kom i SNES'ens første 1-2 år der har tydelige problemer med slowdown.

I bund og grund - det der får SNES- (eller andre ældre konsol) spil til at køre langsomt er CPU-tid, ikke grafik eller data-mængder i sig selv.
Følgende bruger(e) sagde tak: Konsolkongen

Please Log på or Opret en konto to join the conversation.

  • Konsolkongen
  • Konsolkongen's profilbillede
  • Væk
  • Barske sager!
Mere
27 feb 2017 09:44 #32 af Konsolkongen
Konsolkongen svaret på emne: SNES / Super Famicom-tråden
Tak for forklaringen :)

Shoot and shoot to advance further!
Wonderful attack by just two men!!

Please Log på or Opret en konto to join the conversation.

  • Hanky
  • Hanky's profilbillede Emne forfatter
  • Væk
  • Hidsige sager
Mere
27 sep 2017 10:51 #33 af Hanky
Hanky svaret på emne: SNES / Super Famicom-tråden
Hvad så - har folk det vildt over SNES Classic Mini? :)

Jeg tror ikke jeg kommer til at købe den, da jeg synes det er for dyrt for en SNES-emulator, men man ved aldrig, da jeg desværre er ret slem til impulskøb engang i mellem :P

Mit VGM sideprojekt: projekt-vgm.blogspot.dk/
HANK's Spil & Blast: www.youtube.com/user/RedDragunee

Please Log på or Opret en konto to join the conversation.

  • Konsolkongen
  • Konsolkongen's profilbillede
  • Væk
  • Barske sager!
Mere
27 sep 2017 13:48 - 27 sep 2017 13:51 #34 af Konsolkongen
Konsolkongen svaret på emne: SNES / Super Famicom-tråden
Jeg har det faktisk super vildt over den. Henter min på fredag :)

Ikke nok med at spiludvalget taler for sig selv, så ser den også ganske kompetent ud hvad billedet angår. Det er knivskarpt og i modsætning til NES mini er det skaleret korrekt i 4:3-mode. CRT-filteret emulerer heldigvis heller ikke composhite længere, men RGB, omend det er alt for uskarpt til at være noget særligt værd.

Man kan håbe at den kan hackes så CRT-mode kan forbedres :)

Har det rigtig stramt over prisen da vi skal betale mere end det dobbelte af hvad den vejl. koster i USA. En eller anden i distributionskæden har været en kæmpe nar, og bevidst valgt at udnytte efterspørgslen på det groveste :(

Shoot and shoot to advance further!
Wonderful attack by just two men!!

Please Log på or Opret en konto to join the conversation.

Tid til at oprette siden: 4.408 sekunder
Leveret af Kunena Forum