Blame | Last modification | View Log | Download | RSS feed
----------------------------------------------------------------------UnrealSpeccy 0.36.7 by SMT----------------------------------------------------------------------contents1. features2. system requirements3. keys in emulator4. bugs and incompatibilities5. greets6. license----------------------------------------------------------------------featurescpuZ80: all (un)documented commands and flagsmemoryPentagon 128/512/1024 and 48K ROMScorpion 256/1024 RAM and 64K ROMScorpion PROF-ROM with SMUC support (128/256/512K)KAY-256/1024 and 64K ROMProfi 1024 RAM/ROM and memory mapperATM TURBO 1 v4.50 512/1024 RAM, 64-1024K ROMATM TURBO 2+ v7.10 128/512/1024 RAM, 64-1024K ROMcache 16/32KCMOS/RTC: russian chip (512Bu1, 64 bytes, 1st day is monday) orpc-compatible (DALLAS, 256 bytes, 1st day of week is sunday)SMUC RTC and NVRAM (24LC16)soundbeeper, tape saving and loading tonesAY-3-8910/YM2149: excellent sound emulation, including digitaland unusual effects, parallel ports on R14/R15 are not emulatedTurbo-AY (Turbo-Sound): two AY(or YM) chips by PoS and NedoPC schemesTurboSound FM: two YM2203 chips (6 AY channels + 6 FM channels)also there is 'unreal' (not available in real Spectrum) mode:playing AY music using digital player - emul plays three sound sampleswith volumes and frequencies taken from corresponding AY registersand 'pseudo-turbo' - two parallel YM chips with some phase shifttwo covoxes - Pentagon (port #FB) & Scorpion (port #DD)SounDrivesaving sound to WAV or VTX (VTX - good format for AY sound, muchmore compact than PSG, but you need lha.exe somewhere in %PATH%)General Sound - FX & MOD player through BASS sound system.You can save music and listen it in your favourite mod-playerGeneral Sound low level emulation (including internal Z80 on 12MHz,512Kb onboard memory, internal ports and DACs)BASS offers higher quality and more sound channels than low-levelemulation. Low-level emulation is useful for programs altering thefirmware player and using second Z80 for their own needs. In general,use BASS for games, and low-level emulation for advanced sound/musiceditors (RIFF tracker)videoseveral video drivers, from simple and fastest to complex bi-linearfiltering, that upsamples Spectrum display to 512x384 * 64 colors;'noflic' filter is specially for programs fast switching two screensto get more colors;several chunky filters for 21st century demosamazing video filter: Anti-Text64. Designed for reading e-zines.It converts 4x8 fonts to 8x8 or 8x16 on the fly and saves your eyesmulticolors are fixed for Pentagon & Scorpion, 1T screen updatefor all border effectsable to emulate scorpion timings, including scorpion border updatenopaper mode for debugging border effectsflash-color (using 128 ink colors with black paper when FLASH bit on)hi-res modes: Pentagon 512x192, Profi 512x240, ATM(works with 'double' video filter)ATM-TURBO color video modes (works with 'double' video filter):text mode 80x25, EGA mode 320x200, 640x200.To use custom text-mode font, place your "SGEN.ROM" to unreal directory.Don't use border=none with ATM video modesPentagon 384x304 mode [see ZX-Guide#2, AlCoNews#32]Pentagon color-per-pixel mode [see Info Guide#8, #9]hardware multicolorattribute port #FFtune-up video/sound with hotkeyschange video settings, such as number of t-states/frame, t-states/line,fix with grey+, grey-, grey*t-states/frame is a computer speed, so it's easy to adjust speed infast (or slow) games in very wide range for comfortable playingalt+grey*, grey-, grey+ selects soundchip (AY/YM) andstereo mode (ABC/ACB), or palettebeta 128 disk interfaceimplemented all FDC WD1793 commands, including read/format tracktraps for read/write sector - more then 256 times speeduptapefull TAP and TZX supportCSW supporttape browserauto-start tape when accessing to ROM load routinefast loading: UnrealSpeccy is able to recognize loader logicand speed up loader by removing delay loops and edge detection loops.(Of course, UnrealSpeccy leaves original t-states timing,so max speed mode must be enabled for fast loading - press NumLock)With this technique any 128K game may be loaded in 10-20 secs.I've developed this feature independent from RAMSOFT, but looks likethey used the same idea in RS 0.90.38...For really fast loading, also choose 'normal' video driverIDEUnrealSpeccy is able to use KAY, SCORPION and ATM-2 IDE interfaces withtwo devices on it (hard disks or CD-ROMs)for hard disks you may use image file or Spectrum drive, connected tocomputer. CD-ROM requires physical or windows-level emulated deviceschemes supported:Nemo - controller for ZX-BUS manufactured by Nemo and NedoPCATM - ATM TURBO 2+ v7.10Nemo(A8) - Nemo scheme modification: uses A8 instead of A0 toselect high/low byte of 16bit data (easy totransfer sector with just two commands INIR:INIR)SMUC - IDE controller for ZS ScorpionmodemISA modem, configured to use COM1 ports 03F8-03FFtranslated to Spectrum's ports #F8EF-#FFEF.Modem interrupt (translated to Spectrum NMI) is not emulatedHost computer should have installed windows driver for real modem.At least ping/dns by Kamil Karimov tested and works finewith empty 'modem initialization string'input devicesfully customizable keyboardcopy text from clipboard via emulation of Spectrum keyboardAY-mouse (KORVET mouse, connected to AY-3-8910/12 port A)kempston mouse with adjustable speed and swap-buttons option,mouse wheel included (D7..D4 in buttons' port or UP/DOWN keys)kempston joystick on keyboardkempston joystick on mouse (joystick will follow mouse cursor)mouse wheel and buttons can be bound to any zx keys or kempstonPC joystick/gamepad can be bound to any zx keys or kempstonsticky keys mode [stolen from ZX_Emul, read description there]autofire (with adjustable key and period)filesreading:SP, SNA and Z80 (all versions, 48k and 128k)TAP, TZX, CSWFDI, TRD, SCL, TD0, UDIif disk image does not contain boot.B, it may be appended.Disk images for every drive may be loaded automaticallyat start of UnrealSpeccyHOBETA format - appends file to existing disk; if no disk, then emptyTR-DOS disk will be created. Best use with command line:unreal.exe prog.$B prog.$C <- will be placed on same diskYou can also load it from 'F3' dialog, but only by one filewriting:SNA 48k and 128kTRD, FDI, UDITD0 (saved unpacked, so expect saved file larger than loaded)SCR, BMP (screenshots)WAV, VTXdisk images converter:emulator can open disk image in any format (TRD/TD0/FDI/SCL/UDI)and save it to any other formatleds1. AY volume/status. Just for fun. White color - tone, yellow - noise,green - envelope; also shows YM2203 and GS volumes2. perfomance leds. One displays how much Z80 t-states is between twointerrupts. While watching some demo you can see how much timetakes one or another effect. Second led shows PC framerate - atnormal speed it must be 50. If it is less, then your CPU is tooslow, and sound may be jerky - try to select faster video driver,disable some devices, increase skipframe or decrease t-statesper int. When running on max speed, framerate shows how fast youcomputer is. For example, 800 fps is 16 times faster thanSpectrum, so average game will load in 20 secs.3. input led. Shows which input devices are active - keyboard, mouse,kempston joystick. For keyboard, displays queried keyrows.One example: I've noticed, that in KOL0BOK2 intro active keyrowsare <B>-<SPACE> and A-G. <SPACE> is an exit, but why programscans <A>-<G> ? I've pressed <A>, and I saw that now programqueries <Y>-<P>. After pressing A+P, program queries <CAPS>-<V>.When pressing A+P+X active keyrow areonly <B>-<SPACE>. So, I'vefound cheat without digging in program code! (Another way was toset breakpoint on reading port #FE and analyze code nearby)4. loading led. When saving/loading from disk, emulator showsblue or red diskette. When formatting track, yellow disk isdisplayed. When loading from tape, emulator displayscassette picture and progress for current block (or 'PS' - tapesilence)5. local time - for those ZX Spectrum fans, who spend all theirtime with virtual Spectrum6. on-screen watches - display used RAM and ROM banks in last frame,count user-defined expressions7. using leds on AT keyboard to display AY amplitude peaksleds look strange when flash-color is enabled. It's not a bugmonitorsoftware that in PC world is called 'debugger', in Spectrum worldis often called 'monitor'find text or code.Using mask: code matches when ((code & mask) == (pattern & mask))unlimited number of code breakpointsconditional breakpoints of any complexity, uses C-like expressionsyntax (with this feature can be easily done: breakpoint on range,breakpoint to port in and out, on instruction, etc..)memory access breakpoints (on reading/writing/executing of given memoryareas)built-in Z80 assembler/disassemblersave-load memory blocksdisk editorripper's tool: for ripping routines with their data.Marks which bytes were read/written, and saves whole 64kb memory,replacing unreferenced bytes with user-defined byte (default is #CF)hotkeys to save/restore cursor position in disasm windowhotkeys for location instruction operand in Z80 or dump windowon-screen watches: show memory areas addressed by register pairsGUIall settings, that present in INI file, may be changed in GUI(but will not be saved, for permanent effect edit INI file)easy entering POKEs, if you don't want to use monitor or useHEX addresses. Delimiters for numbers are space, comma, colon,semicolon - so POKEs can be cut'n'pasted from any cheats collectionloading from archives. Now supported: CAB,ZIP,RAR.You can add your own archivers to INI file----------------------------------------------------------------------system requirementsWindows 95 or higher, or NT (not tested).Windows 2000/XP/2003 are required for real HDD support.for running UnrealSpeccy you need:Pentium-166 CPU MMX for basic functionalityCeleron-266 CPU for Profi/Pentagon/ATM/Anti-Text64 hi-res modesCeleron-400 CPU for GS low-level emulationUnrealSpeccy eats only 12Mb of RAM, soif you've started Windows, then memory is enough2D accelerared video card with hardware support ofvideo overlays and color keying for overlay modes3D accelerared video card for hardware chunky bilinear filter2 Mb of video memory in fullscreen4 Mb of video memory for windowed mode16-bit sound card [optional, but recommended]if you have such hardware, but emulator runs slow, try thefollowing:0. install latest directX and videocard drivers1. increase sound buffer size (especially for Win95) in INI file2. select video filter='small', video driver='ddraw'3. disable vsync4. set 'ShareCPU=0' in INI file5. do not use General Sound low-level emulation6. do not use YM22037. set 'skipframe=4' in INI file8. set 'Frame=30000' in INI file (if nothing else does not work)9. disable sound (without sound emulator runs much faster)this should help----------------------------------------------------------------------keys in emulatorthese are default keys, can be changed in INI fileCtrl-F1 monitorShift-ESC only for windowed mode: give mouse to emulator or to MS WindowsAlt-F1 help on keysF1 options/GUIF2 write snapshot/disk imageAlt-F2 quicksave to qsave1.snaCtrl-F2 quicksave to qsave2.snaShift-F2 quicksave to qsave3.snaF3 read snapshot/tape/disk imageAlt-F3 quickload from qsave1.snaCtrl-F3 quickload from qsave2.snaShift-F3 quickload from qsave3.sna(SHIFT+)F4 select video driver (filter)Alt-F4 exit emulatorF5 start/stop saving sound (WAV or VTX formats).May be used from monitor: set breakpoint tostart/stop routines and save;when saving to vtx, start and end silence are wipedF6 enter POKE(s)Alt-F6 search in memory for changed values (cheats, etc)F7 start/stop tapeShift-F7 tape browserAlt-F8 screenshotF9 quicksave all altered disk images and CMOSAlt-Shift-F11 NMIAlt-F11 NMI to cacheCtrl-F11 NMI to TR-DOS ("magic")F12 reset to default mode, as specified in INI fileCtrl-Shift-F12 reset to basic-128Ctrl-F12 reset TR-DOS (128)Shift-F12 reset to 48 basic, but port 7FFD unlockedAlt-Shift-F12 reset to 48 basic, port 7FFD lockedAlt-F12 reset to system ROMCtrl-Alt-F12 reset to cachepause/break pausegrey/ leds on/offgrey* select parameter to change: t-states/int (speed), fix, etc...Alt+grey* select parameter to change: AY/palettegrey+,grey- change sound/video parameter (press with SHIFT for finetuning)NumLock max speed on/off (no sound on max speed)Alt-NumLock toggle autofire on/offAlt-Ctrl-Z toggle ATM XT(AT)-keyboard controller on/offAlt-Enter toggle full-screen modeAlt-Shift-Ins copy text from clipboard to keyboard bufferAlt-1 set window size to 1x scale in windowed modeAlt-2 set window size to 2x scale, useful for hardware-stretchedmodes like overlay and blitterAlt-3 maximize windowkeys in monitor(CTRL,SHIFT,ALT+)F1,F2,F3,F5,F11,F12 - see aboveCtrl-F1 exit, run programF7 stepF8 trace, skip calls and loopsF9 show Spectrum screenShift-F9 show alternative 128k screenAlt-F9 show screen until painted point with border, mc and 2-screffectsF11 run program until address (SP)TAB next windowSHIFT-TAB previous windowAlt-D toggle text/hex dumpAlt-B write to port 7FFD (select bank / screen)Alt-M write to model-specific extended memory port (like#1FFD,#FDFD,#DFFD,...)Alt-P enter POKE(s)Alt-F6 search in memory for changed values (cheats, etc)Alt-R load memory block from fileAlt-W save memory block to fileAlt-F fill memory block with hex pattern(note: to copy block, please use save+load)Alt-G General Sound status (double-click - play sample)Alt-T ripper's toolAlt-O configure on-screen watchesAlt-U disasm to fileAlt-S cycle screenshot (ray-painted) / screendump (screen memory) /watchesAlt-F render current frame to video buffer without border and MCeffectsCtrl-U set user-defined watch addressCtrl-L view labels, visible for Z80 in current memory stateCtrl-J select and go to labelAlt-C breakpoints managerAlt-Y switch active sound chip in Turbo-Sound modemanager can handle 3 types of breakpoints:1. conditional breakpoints and on-screen watchesare using C expression syntax.operators (in priority order):() ! ~ M(x) -> * % / + - >> << > < == = <= >= != & ^ | && ||operands:a,b,c,d,e,h,l,bc,de,hl - common registersa',b',c',d',e',h',l',bc',de',hl' - alternative registersix,iy,pc,sp,i,r - control registersFD - memory port #FD (also known as #7FFD)OUT - port used in 'OUT' command (or 0FFFFFFFF when no outs)IN - port used in 'IN' command (or 0FFFFFFFF when no ins)VAL - read/written value to port (only meaningful when OUT !=0FFFFFFFF or IN != 0FFFFFFFF)numbers - hex, must start with digit: DFFD - wrong, 0DFFD - rightcharacters - must be enclosed in single quotes ('A','B',etc..)All calculations use 32-bit unsigned interger arithmetic.If you are not familiar with C, use brackets as much as possible, due tonon-intuitive operator's precedence, e.g.out & 0FF == 0FE is treated as 'out & (0FF == 0FE)' <- always 0M(x) is byte from memory address x (same as x->0)'=' is an alias for '==' (for Pascal programmers)examples:(out+1) | (in+1) - in/out to any port(in & 8001) == 0 - read keyboard row from <B> to <SPACE>!(out & 1) - any out to port #FE(out & 0FF)==0BB && (val==0F3 || val==0F4) - reset General Sound(out & 0FF)==0FD && (val&7)==3 - set 3rd memory page(FD & 7) == 3 - the sameM(pc)==0CB && pc->1 >= 10 && pc->1 <= 17- set break on executing instruction "rl <reg>"I hope, these examples will be enough to get ideanote: double-click on breakpoint to edit it2. execution breakpoints (also set in CPU window by pressing SPACE).In manager window it is easy to setup breakpoint on executionrange like 6000-FFFF3. breakpoints on reading/writing memory. Similar to executionbreakpoints, but have flags "R" and "W" to issue interrupt onreading/writing memory address (flags may be set together)monitor: registers windowCursor select registerENTER,0-F change registerCtrl+A,F,B,D,H,S,P,X,Y,I,R,M,1,2 edit A,F,BC,DE,HL,SP,PC,IX,IY,I,R,IM,IFF1,IFF2Alt+S,Z,5,H,3,P,N,C toggle flag' go to value under cursor in CPU window; go to value under cursor in memory windowmonitor: CPU windowF4 trace to cursorAlt-F7 find textCtrl-F7 find code with maskHOME go to PCCtrl-G go to addressSPACE set/reset breakpoint under cursorENTER edit Z80 instruction, opcode bytes or cursor addressA-X assemble new Z80 instructionZ set PC to cursorCtrl-1,.,Ctrl-8 save current position to slot 1-81-8 save current position to stack, go to saved position in slot 1-8Backspace restore position from jumpstack' push cursor position and go to instruction operand; jump to instruction operand in data windowCtrl-A reading labels from XAS or ALASM, using 3 methods:1. XAS7: assembler should be in bank 6 (or bank #46 for Pentagon-512)2. ALASM: version 4.42-5.0x should be in 128k-memory (pages 1-7)3. ALASM+STS: STS should be in bank#7 (or bank #47 for Pentagon-512)monitor: memory windowAlt-F7 find text in memory / disk trackCtrl-F7 find code with mask in memory / disk trackCursor,Home,End,PgUp,PgDn moveCtrl-G go to addressCtrl-M select memory editorCtrl-V select disk editor (physical track)Ctrl-O select disk editor (logical sectors)Ctrl-T select disk/track/sector in diskeditorCtrl-TAB move to hex/asciiCtrl+S,P,B,D,H,X,Y go to SP,PC,BC,DE,HL,IX,IYother keys editmonitor: Beta 128 windowhere is a typical FDC indicator contentCD:1820STAT:21SECT:09T:01/01S:3C/00first line is command and data register (cmd18,data20 - seek track 20)2nd line - status register3rd line - sector register4th line - actual FDD head position and track register5th line - Beta disk system register and DRQ/INTRQ port----------------------------------------------------------------------bugs and incompatibilitiessome programs, such as Manic Miner and Lode Runner, requireold 48K ROM (1982.rom), while some other programs requireZX Spectrum 128 ROM (48for128.rom + 128tr!.rom)some TR-DOS programs (Unreal Megademo by KSA, Street Fighter)work only if TR-DOS traps are disabled and all delays enabledProfi service ROM can work only when all TR-DOS delays are enabledBumpy does not work in default configuration, it tries to read port#FFDF for kempston joystick - so disable kempston mouse beforeplaying [bug found by Paul Pavlov]sounddrv=wave does not work with CTSB128PCI (Creative Sound Blaster),there is a bug in drivers for this card. [bug found by Nuts]some ABS adventures (ALIEN.SCL, LENIN.SCL) do not work with TR-DOS 5.04TM,use version 5.03 - it is most compatible [bug found by Paul Pavlov]Vixen 1,2,3 - incompatible with SounDrive [bug found by Paul Pavlov]Fernandez - incompatible with SounDrive [bug found by Shadow Maker]port #FF sometimes is not responding when SkipFrame!=0(the same to SkipFrameMaxSpeed!=0 and max speed mode)Scorpion 'MAGIC' generates NMI even if PC < #4000, but shadowmonitor is not designed for this situation and may crashCacheVox by AlCo requires TR-DOS delays enabled and [BETA128] IL=1If the emulator after returning of focus seems to have a sticky key,press Scroll Lock, deactivate blinking key, then press Scroll Lock again.If emulator control keys work wrong after returning of focus, press Enter,and keys must go normal.If emulator hangs with General Sound, try DSPrimary=0.If emulator crashes with General Sound, try GSType=Z80.If Kempston Joystick doesn't work, go to menu, press NumLock there,then return.In case of bad sound, try DSPrimary=1 (may crash emulator eventually!)or SoundDrv=wave in .ini.Screenshots are saved to the emulator directory.Files to read and write via debugger are situated in a current directory(which is seen by F3).Download sys.trd (for drive B:) from http://alonecoder.narod.ru/zx/SYS.rarDownload xBIOS for ATM Turbo2+ from http://atmturbo.nedopc.com/Get WNASPI32.DLL from Ahead Nero or from Ahead websiteBASS.DLL v2.3 was taken from http://www.un4seen.com/----------------------------------------------------------------------greetings from SMT:* dj.Z, IMP and MIC - I enjoyed your music a lot !* Nik-O and Fatal Snipe - for adherence to ay scene* Hacker KAY - thanks for most accurate information about AY/YM* Paul Pavlov - maintainer of largest TR-DOS archive* Raul Gomez Sanchez (author of R80)* Stalker - thanks for STS* Placebo, Extreme, Digital Reality, CBS - for quality demos* V_Soft (Roman Scherbakov) - for Vortex format* Sergey Bulba - for AY_Emul* Alone Coder - you keep Spectrum alive* Ian Luck - thanks for BASS* SirX - just a hello* all ZX Spectrum fans - Speccy is da best!special thanks to people, who were interested inUnrealSpeccy's development and sent me info about hard/soft:* Maxim Vasilyev - sent me many bugreports* Mac Buster - some info about beta 128 disk interface* Shiru Otaku - sent me GSPAK.ZIP* Alexey Kravchenko - Scorpion timing info* Vitaliy Pigo - testing and benchmarking* Alex Baskakov - helped me with TD0 format* Alone Coder - thnx for many info about Pentagon hardware* Dexus - for integrating YM2203 support* Maksagor - ATM information* and many others, who emailed me congratulations/suggestions/etc----------------------------------------------------------------------licenseUnrealSpeccy is completely freeware. You may use this emulatorand its sources without any restrictions. You may use thesources in your own emul or to release bugfixed/new versions.in this case you do not have to release updated source code,(unlike GNU Public License requires, for example). You may portemulator to any other platform (but there are manyMSVC-specific language constructions, so it's doubtful thatyou can compile it with another compiler)Send me bug reports, ideas, and changed source lineshttp://dlcorp.nedopc.com/viewforum.php?f=8