ZSNES av zsKnight och _Demo_ ZSNES är en Super Nintendo Entertainment System emulator gjord i assembler. Den kör komersiella spel och dessutom med ljud. Hur som helst är kompatibiliteten begränsad och ljudet är fortfarande buggigt. Vi skulle verkligen vilja tacka snes9x gruppen för all deras hjälp och för en utmärkt snes emulator. Vi vill ochså önska dem lycka till. --------------------------------------------------------------------------- Innehållsförteckning --------------------------------------------------------------------------- 1.) Vad som är nytt 2.) Användaravtal 3.) Systemkrav 4.) Saker du bör känna till om ZSNES (UPDATERING v0.400) 5.) Nuvarande utveckling 6.) Framtida utveckling 7.) ZSNES standard knappar 8.) Extra pop-up meny (F1 meny) 9.) Konfigurationsfilen (ZSNES.CFG) 10.) Fuskkoder 11.) Extra funktioner (SNES mus/Super Scope/Super FX) 12.) Debuggern 13.) Medverkande --------------------------------------------------------------------------- 1.) Vad som är nytt --------------------------------------------------------------------------- v0.400 - Fixade en Dubbelfönsterhanteringsbugg i mode 7 i 65536 färgläge - Lade åter till FPU-kopiering på grund av efterfrågan - Implementerade MMX-kopiering. Använd -om för att aktivera. Tack till Angels Holocaust för all info! - Fixade en bugg vid skrivning till .bmp-filer - Lade till (buggy) SuperFX-stöd (9.5MB minne krävs) - Speciellt tack till snes9x-gruppen för all info och hjälp! - Fixade till Spriteprioriteter. Borde fugnera korrekt nu. - Lade till en parameter i kommandoraden för att vis alla filtillägg. Använd -sa för att aktivera. - Lade till Noise till ljud-DSP - Lade till Fast Forward knapp. Använd Tilde (~) på ett amerikanskt tangentbord (½/§ på ett svenskt) - Ändrade Spriteprioriteterna - Fixade en tilegömmnings bugg som orsakade en liten tileförvrängning. - Fixade en 65816 bugg i XCE med x-flagen. Tack till ]SiMKiN[! - Implementerade interfolierat (utan header) format och enkel autosökning. I fall autosökning misslyckas, använd -i. Tack till feenix65 för infon! - Förbättrad headersökning. Borde nu fungera bättre för demon och spel med knasiga filstorlekar. - Lade till en ny grafikmotor i 256 färgers läge. Det borde bli mycket snabbare i områden som använder mode 7, men saknar många funktioner som t.ex. fönsterhantering, mosaik och spriteprioritering så den är vanligtvis avstängd. Den kan aktiveras genom att trycka 8 under spelandets gång. (~40-100% snabbare) - Optimerat Mode 7 i 256 färgers läge - Implementerade Dubbelförnsterhantering för färgfönsterklippning - Rättade till flera färgfönsterhanteringsbuggar - Lade till fullskärms-screenshot i 640x480x65536 läge Aktivera det genom att trycka på backspace och F1 samtidigt när du beffiner dig i den upplösningen - Rättade till flera transparensbuggar - Lade till NewGFX i zsnes.cfg för att avgöra om den nya grafikmotorn skall användas från start. - Lade till CoptMethod i zsnes.cfg som kan standardisera kopieringsmetoden som alltingen FPU kopiering eller MMX kopiering. - Tillät system med 5.5 MB ledig RAM att ladda 2mbit roms - Rättade till sidewinder-stöd när ljudet sätts till en hög samplingsnivå. Tack till Marius Fodor för källkoden! --------------------------------------------------------------------------- 2.) Användaravtal --------------------------------------------------------------------------- zsKnight och _Demo_ är inte ansvariga för några som helst skador som orsakas p.g.a. användande av denna mjukvara. Denna mjukvara får inte heller distribueras med ROMs. --------------------------------------------------------------------------- 3.) Systemkrav --------------------------------------------------------------------------- Minimumsystem som ZSNES kan köras på (men långt ifrån rekommenderas) : - 386 processor (486 processor krävs för den nya grafikmotorn) - 6MB RAM (Du behöver minst 5.3 ledigt) - VGA kort Någorlunda rekommenderat system : - 486/100 processor - Minst 8MB RAM (minst 7.5MB ledigt) - VGA kort - Sound Blaster eller 100% kompatibelt Varmt rekommenderat system : - Pentium processor (P100 eller bättre) - Min 8MB RAM (minst 7.5MB ledigt) - SVGA kort - Sound Blaster 16 eller 100% kompatibelt Rekommenderat system för 65536 (16-bit) färger : - Snabb Pentium processor (P166 eller bättre) - Minst 8MB RAM (minst 7.5MB ledigt) - SVGA kort som stödjer 320x240x65536 eller 640x480x65536 upplösning - Sound Blaster 16 eller 100% kompatibelt Rekommenderat system för SFX-stöd : - Snabb Pentium processor (P200 eller snabbare) - Minst 12MB RAM (minst 9.5MB ledigt) - VGA kort - Sound Blaster 16 eller 100% kompatibelt * Du behöver 9.5MB RAM för att kunna köra 48mbit(6megabytes) roms. För SuperFX emulering krävs 9.5 megabyte minne. --------------------------------------------------------------------------- 4.) Saker du bör känna till om ZSNES (Updatering v0.400) --------------------------------------------------------------------------- - Transparenseffekter är bara tillgängliga i 65536 färgers läge. - Använd 640x480 läge för att 512 upplösning skall fungera korrekt. Ett sätt att ta reda på om ett spel har den egenskapen är att leta efter text som ser ihoptryckt ut. - Äkta 512 upplösning är inte implementerad i 640x480x65536 interpolation icke-scanline läge. - Scrollning i 512 upplösning i 640x480 kan se märkligt ut eftersom den alternerar mellan vänster och höger pixlarna i varje frame. - I 640x480 upplösning är bilden utdragen så att det ser ut som 320x240 upplösning. Använda 640x480 upplösning endast om du vill använda scanlines, interpolation, eller om 320x240 inte fungerar. - SuperFx kan vara långsamt eftersom den utgör ca 10/20mhz av cpu som måste emuleras tillsammans med snes emuleringen. - ZSNES tycks ha problem med vissa 16-bitars ljudkort och ibland sätter inte Windows 95 HDMA inställningen i SET BLASTER-strängen korrekt. Använd -8 parametern i kommandoraden om ljudet inte fugnerar på ditt 16-bitars ljudkort. - Screenshot och FPS räknare är tillgängliga genom en meny som aktiveras med F1 under emuleringens gång. - Screenshots sparas för tillfället som ROMnamn.PCX (256färger) och ROMnamn.BMP (65536 färger). Detta kan komma att ändras i framtiden. - FPS räknaren fungerar för tillfället bara när auto-frame rate är på. En räknare för icke auto-frame rate kommer möjligen att implementeras när vi får tid. - Försäkra dig om att du redan har laddat den ROM som du vill patcha om du vill använda fuskfunktionen. - Om fuskkoden inte fungerar finns det en möjlighet att du har en annan version av romen än den som ursprungligen användes för att skapa koden eller har blivit felaktigt konverterad från ett annat kodformat. - Inställningsalternativet i användargränssnittet är ännu inte tillgänglig och kommer att implementeras i framtiden när vi får tid. - Vissa grafikkort/skärmar stödjer inte ModeQ (Standard upplösning). Om ditt grafikkort/skärm inte stödjer det kan du köra zsnes med parametern -v 0. Om -v 0 inte fungerar bör du använda -v 2 (vesa 2 krävs). - Ljud DSP saknar egenskaper som eko och glissando. - 16 bits läge i zsnes kräver Scitech Display Doctor (v5.3+) för high color i lågupplösning. Du kan skaffa denna mjukvara från www.scitechsoft.com. Om ditt grafikkort redan stödjer lågupplösning i high color behöver du inte bry dej om att skaffa drivrutinerna. - Fullständig skärm addition/subtraktion i 65536 läge använder en 13-bits färgpalette (8192 färger) istället för en 15-bits färgpalette (32768 färger) som på en riktig snes när fullständig add/sub används. - Det finns fortfarande många buggar i ZSNES så förvänta dig inte att den kör alla dina favoritspel. - VSync kommer inte att fungera så bra om inte frame skip (t.ex. -f 0) angetts. Men denna egenskap är varmt rekommenderad på väldigt snabba maskiner (t.ex. på en Pentium II). - Lagringen av ljud är lite buggig för till fället. Den är avslagen i vanliga fall och kan bara sättas på genom parametern -Q på kommandoraden. - SNES mus fattas fortfarande några egenskaper som t.ex. snabbhetsinställningar. - Att trycka på Fast Froward knappen är detsamma som att köra zsnes med -f 9. - Om ZSNES inte passar digm så använd den inte. Använd snes9x, NLKE, SNEeSe eller SNEmul istället. Det kan faktiskt löna sig att använda dem ibland, även om du gillar zsnes! --------------------------------------------------------------------------- 5.) Nuvarande utveckling --------------------------------------------------------------------------- Fäljande är implementerat : - Komplett 65816 instruktionslista - SRAM-stöd - LoROM och HiROM-stöd - SlowROM och FastROM-stöd - Fullständig DMA-stöd - HIRQ/VIRQ/NMI Interrupts - Stöd för de flesta snes filformaten - Flerfils stöd (.1,.2,.3,A.,B.,C.) - Stöd för interfolierat format - PAL/NTSC timing-stöd Följande är implementerat i den gamla grafikmotorn : - Linje för linje baserad grafikmotor - Grafikläge 0,1,2,3,4,5,6,7 - 8x8, 16x16, 32x32 och 64x64 sprites-stöd (vända i alla riktningar) - Mosaikeffekter - 8x8 och 16x16 tiles - 32x32,64x32,32x64,64x64 tile-läge - Fullständiga HDMA effekter för vågiga bakgrunder, intressanta mode 7 effekter, etc. - Mode 7 rotation och skalning - Enkel och dubbla fönsterrutiner - Bakgrunds prioritering - Sprite prioritering - Add/sub av bakgrundsområdet - 16-bit grafikstöd - offset per tile läge (endast för mode 2/vertikalt) Följande är implementerat i den nya grafikmotorn : - Kombination av linje för linje och tile-baserad grafikmotor - Grafikläge 0,1,2,3,4,5,6,7 - 8x8, 16x16, 32x32 och 64x64 sprite stöd (vända i all riktningar) - 8x8 och 16x16 tiles - 32x32,64x32,32x64,64x64 tile-läge - Fullständiga HDMA effekter för vågiga bakgrunder, intressanta mode 7 effekter, etc. - Mode 7 rotation och skalning - Bakgrunds prioritering - Sprite prioritering (behöver finslipas) - Add/sub av bakgrundsområdet Fölande är tillgänligt i ljudväg : - 16 bits digital stereo ljud - SPC700 Sound CPU (mycket få buggar kvar) - DSP ljud processor - ADSR volym effekter - GAIN volym effekter - Noise effekter Följande är de extra egenskaper som är emulerade : - Super NES mus-stöd - Super NES Super Scope-stöd - SuperFX-stöd Följande är tillgängligt i 16-bitars läge : - Palettändringar i mitten av skärmen - Skärmsddition (fullständig och halv) - Skärmsubtraktion (fullständig) - Addition/Subtraktion av valda färger - Fönsterklippning för vald färger Följande är funktioner i ZSNES : - Sparande av spelstatus (F2=Spara, F3=Select, F4=Ladda) Varning : En statusfil tar 260 kb av hårddiskens utrymme! - Auto frame rate ger dig en konstant Super Nintendo hastighet på upp till 9 frame skips. - Konfigurationsfils-stöd (zsnes.cfg) - Stöd för två spelare, även med Joystick och Gamepad. Följande egenskaper saknas : - DSP egenskaper som eko och glissando - Mode 7 horisontell omvändning och extbg läge - Skärmsubtraktion (half) - 512 snes horisontell upplösning, 16x16 tiles - Pseudo 512 snes horisontell upplösning - 448/478 snes vertikalt utjämnad upplösning - Några lägen i Offset Mode - Fönster i bakgrunden av huvudskärmen - Direct Color Mode Vad kommer inte att köras (eller fungera korrekt) : - Några Super FX spel som Star Fox och Stunt Race FX - DSP spel som Mario Kart, Pilotwings, etc. - Spel med speciella chips som t.ex. Megaman X2 och Mario RPG - Spel som har en unik ljudkontrollsrutin (om ljud är avslaget) - Spel som har en ogiltig header (använd -L eller -H för att få det att fungera) - Spel som snubblar över en allvarlig bugg i 65816/PPU/SPC700/DSP - Spel som kräver en speciell timing --------------------------------------------------------------------------- 6.) Framtida utveckling --------------------------------------------------------------------------- Denna avdelning är bara till för folk som vill veta vad vi kanske kommer att göra för en framtida version. Var vänlig och lägg märke till att vi inte garranterar att detta kommer att implementeras. De är heller inte garanterade att komma i nästa version om de nu kommer överhuvudtaget. - Skriva om ljudmotorn som stödjer de saknade ljudfunktionerna - Skriva om användarinterfacet - Lägga till fönsterfunktion för bakgrunden på huvudskärmen - Lägga till GRiP-stöd - Rätta till/optimera offset mode - Avsluta Mode 7 - Lägga till äkta 512 upplösning - Lägga till 448/478 utjämnad upplösning - Skriva om 65816 emulationen (fixa timing/uppsnabbning) - Snabba på emuleringen - Avsluta den nya grafikmotorn i 256 färger - Lägga till 16-bits läge för ny grafikmotor - Implementera snabbare EAGLE support - Lägga till modem/nätverks-stöd --------------------------------------------------------------------------- 7.) ZSNES standardknappar --------------------------------------------------------------------------- Här är knapparna som används under emuleringen : Stäng av Bakgrunderna 1,2,3,4 = 1,2,3,4 Stäng av Sprites = 5 Panikknapp (Sätter på allt) = 6 Sätt på SNES mus-användning = 7 Växla till ny grafikmotor = 8 Stäng av fönsterhantering = 9 Stäng av OffsetMode = 0 Fast Forward-knapp = ~ Extra PopUp-meny = F1 Spara status = F2 Växla mellan statusfiler = F3 Ladda status = F4 Stäng av ljudkanaler = F5 - F12 Avsluta = ESC Här är standarduppsättningen av knappar (om inte zsnes.cfg har modifierats): Spelare 1 : Upp,Ner,Vänster,Höger : Piltangenterna på det numeriska tangentbordet (det icke-numeriska kan ochså användas men det försnämnda är varmt rekommenderat. A,B,X,Y : Home, End, Insert, Delete L,R :Page Up, Page Down Start, Select : Enter, RShift Spelare 2 : (Du måste ha aktiverat Player 2) Up,Ner,Höger,Vänster : K, M, N, < A,B,X,Y : D, X, S, Z L,R : F, C Start, Select : Ctrl, Alt För att löra emulatorn, skriv ZSNES För att köra den med ljud, skriv ZSNES -s För att köra i 16-bits skärmläge (VESA2 w/ grafikkort som stödjer 320x240x65536 krävs), skriv ZSNES -v 3 eller med ljud, ZSNES -v 3 -s * skriv ZSNES -? för att få se alla tillgängliga kommandoradsparametrar som t.ex. hur man aktiverar joystick. --------------------------------------------------------------------------- 8.) Extra Pop-Up-meny (F1 meny) --------------------------------------------------------------------------- Save Snapshot - Sparar ett snapshot som alltingen .PCX (8-bits färg) eller .BMP (16-bits färg) Show/Hide FPS - Visar eller döljer "frame per second"-displayen som finns i det nedre vänstra hörnet av skärmen. Detta kan bara aktiveras om auto-frame rate är påslaget. Save SPC DATA - Om du väljer detta kommer början på nästa låt sökas upp och sparas i en .spc-fil på samma särr som i en .srm-fil. För att spara en låt är det bästa sättet att aktivera denna funktion ca 2 sekunder innan nästa låt börjar. Det finns en möjlighet att det kan misslyckas så förvänta dig inte att det kommer att fungera varje gång. Sound Buffer Dump - Detta dumpar ljudbufferten i zsnes och filtrerar ochså ut oanvänt utrymme. Ljudbufferten innehåller komprimerade samplingar som skrivs till när zsnes spelar/packar upp en sampling från minnet. På grund av det sätt zsnes lagrar ljuddatan kan resultatet bli inkorrekt. --------------------------------------------------------------------------- 9.) Konfigurationsfilen (ZSNES.CFG) --------------------------------------------------------------------------- Om zsmes.cfg saknas kan du skapa den genom att köra zsnes.exe. Du kan editera zsnes.cfg för att ändra på tangentbordsinställningarna. Här följer tangentkoderna för ScanKey1 och ScanKey2 i zsnes.cfg 1 ESC 21 Y 41 ~ 61 F3 81 PGDN 2 1 22 U 42 LSHFT 62 F4 82 INS 3 2 23 I 43 \ 63 F5 83 DEL 4 3 24 O 44 Z 64 F6 5 4 25 P 45 X 65 F7 6 5 26 [ 46 C 66 F8 7 6 27 ] 47 V 67 F9 8 7 28 ENTER 48 B 68 F10 9 8 29 CTRL 49 N 69 NUM 10 9 30 A 50 M 70 SCRL 11 0 31 S 51 , 71 HOME 12 - 32 D 52 . 72 UP 13 = 33 F 53 / 73 PGUP 14 BACKSPC 34 G 54 RSHFT 74 - 15 TAB 35 H 55 PRTSC 75 LEFT 16 Q 36 J 56 ALT 76 KEY5 17 W 37 K 57 SPACE 77 RIGHT 18 E 38 L 58 CAPS 78 19 R 39 ; 59 F1 79 END 20 T 40 ' 60 F2 80 DOWN För joystickkonfiguration finns det några idealiska uppsättningar för flera typer av joysticks: 2-knappars joysticks : -------------------- JoyMap1 = 0, 0, 1, 2, 4, 3, 5, 6 Gravis Gamepads : ----------------- JoyMap1 = 0, 0, 1, 2, 3, 4, 5, 6 Generic 4-knappars joysticks : ---------------------------- JoyMap1 = 0, 0, 1, 2, 4, 3, 5, 6 (Default) 6-knappars joystick : ---------------------------------- JoyMap1 = 0, 0, 1, 2, 3, 4, 5, 6 JoyMap1 = 0, 0, 1, 2, 4, 3, 5, 6 JoyMap1 = 0, 0, 1, 2, 3, 4, 6, 5 JoyMap1 = 0, 0, 1, 2, 4, 3, 6, 5 Om ingen av dessa uppsättningar passar för din joystick kan du pröva att byta plats på värdena tills du hittar den idealiska. OBS! Om du väljer 4 knappars joystick kommer knapparna 5 & 6 att ignoreras. Om du väljer 6 knappars joystick kommer knapparna 3,4,5 & 6 att ignoreras. Notera att zsnes.exe kommer automatiskt att lägga till ny alternativ i konfigrurationsfilen när du kör en ny version. --------------------------------------------------------------------------- 10.) Fuskkoder --------------------------------------------------------------------------- I dagsläget stödjer ZSNES Game Genie, Pro Action Replay och GoldFinger-koder Följ dessa steg för att få koderna att fungera : 1.) Ladda romen du vill patcha 2.) Gå ut i användarinterfacets meny, välj CHEAT och skriv sedan in koden 3.) Efter det är det möjligt att du måste trycka RESET för att koden skall fungera. Ibland behövs det inte. OBS! Somliga fuskkoder är menade för olika versioner av ett spel. Om en kod inte fungerar och du har en kod för både Game Genie and Pro Action Replay, försök med båda två. --------------------------------------------------------------------------- 11.) Extra funktioner (SNES mus/Super Scope/SuperFX) --------------------------------------------------------------------------- Aktivera SNES mus genom att trycka 7 eng gång för spelare ett och två gånger för spelare två. Aktivera SNES Super Scope genom att trycka 7 tre gånger. För att deaktiver någon av dem, tryck alltingen 6 eller 7 tills du ser ett disabled-medelande på skärmen. Här är kontrollerna för Super Scope: Skjut = Vänster musknapp Markörlägesknapp = Höger musknapp Pause = Backspace på tangentbordet Aktivera/Deaktivera Autofire = =/+ knapparna på tangentbordet (+/´ på ett svenskt tangentbord?) Zsnes söker automatiskt efter SFX emulering i headern och aktiverar det när det upptäcks. Kom ihåg att SFX använder ytterligar 10Mhz(Ver1) eller 20Mhz(Ver2) för att chipet skall kunna emuleras tillsammans med snesen och kommer förmoldligen att ge upphov till en märkbar säkning av emuleringshastigheten. --------------------------------------------------------------------------- 12.) Debuggern --------------------------------------------------------------------------- * OBS! Debuggern är avslagen när du inte startar zsnes med parametern -d Här är tagenterna som används: 1 : spc700 display av/på 2 : 65816 display av/på T : Spåra (i 65816 processorinstruktioner) B : 65816 stopposition (break point) S : SPC stopposition (break point) C : Nollställ räknaren M : Modifiera 65816 A : Modifiera SPC D : Debugging-dumpning (SPC/DSPRam-dumpning enbart) W : Stanna vi signal (Användes endast av programmerarna) F1 : Avsluta debuggern och återvänd till spelet F2 : Spara status F4 : Ladda status ESC : Avsluta hela programmet --------------------------------------------------------------------------- 13.) Medverkande --------------------------------------------------------------------------- Speciella tack till wnelson! Utan honom hade ZSNES inte existerat! Vi vill ochså tacka YOHSi för hans excellenta dokumentation, hans hjälp och hans utmärkta stöd. Vi vill ochså tacka: The_Teach från Snes9x för bra info och trevliga fusk! Trepalium från Snes9x för bra info och hjälp. Gary från Snes9x och Steve Snake från KGen för informationen om ljud-dekomprimering. Gary från Snes9x för att för informationen om TCall/PCall! MrGrim För hans stora stöd! Void för en del information om Sound Blaster-prgrammering! Aquis för zsnes-logon! Alucard för hjälp vid en avdelning i 65816! Vertigo för att ha gjort en kompatibilitetslista! EFX för att ha varit en stor stöttepelare och för att ha gett oss en hel del hjälp och grejer! Zophar för sitt stöd och för att ha underhållit spegel-siten! Chris Hickman för sin nya design på ZSNES web-sidan! Csoft för att de hostar vår hemsida! Marius Fodor för koden till VSync och en del info! Sardu för en del bra info och hjälp! Lord Esnes för en del hjälp! Robert Grubbs dör sin sidewinder-info! Nerlaska för en del användbar info om optimering och fär deras hjälp! Diskdude för att ha skrivit sneskart som vi använde för fuskkoderna! DarkForce för en del hjälp! Pharos för en del kodningshjälp! Lestat och feenix65 från snes9-gruppen flr all deras bra hjälp! Till alla personer som hjälpte oss genoma tt skicka dokumentationer , hjälpte oss, stödde oss och repporterade buggar! Och till alla er vi glömde bort! rgot! Speciella tack till alla våra beta-testare för deras hjälp! _Demo_ skulle vilja tacka tgenius och 4999 för testande av deras 65816 hack i #snesemu för ett tag sedan. Info om 256x256x256 scanlines läge kommer från MAME-källakoden. Tack till er bakom MAME! Lycka till till all er som skriver emulatorer, speciellt de av er som skriver snes-emulatorer som NLKE, SNEeSe, SNEMul och TheSE! Dokumentet har översatts från engelska till svenska av AtLaS! E-mail: atlas@mbox302.swipnet.se UrL: http://atlas.just.nu