version 0.01b 3 sep 2001 * first version version 0.02b 6 sep 2001 * i was very surprised with a lot of e-mails, that came in two days after first release; thank you all for support! ! fixed bug with mouse cursor visible, fixed settings dialog for leds and memory model [suggested by Maxim A. Vasilyev] + disk rotation emulated [thanks to Mac Buster for Beta 128 timings] version 0.03b 10 sep 2001 ! fixed bug when TRDOS reads index even if no disk, that appared in 0.02b ! fixed kempston mouse [credits to Kuba Adamowicz] + added SwapButtons and MouseSpeed ! fixed small bug in tape traps + fully customizable keyboard + kempston joystick on keyboard + keymatrix effect + 1T screen update for best border effects and multicolors + faster screen output mode without border and multicolors for slow PCs + load from archives and archives inside archives ;=) ! fixed bug when boot not attached to SCL * several speed optimizations + new video filter - chunky 2x2 + new video filter - smart scaling. sorry, not optimized yet version 0.04b 17 sep 2001 ! changed load dialog [suggested by Maxim Vasilyev] * 'smart scaling' filter optimized ! fixed directory for qsave/qload + FDI read/write, but can't format and use write_protection flag ! fixed HALT emulation ! fixed fadeout (envelope #01) and envelope #0E on AY chip + all syncronization in INI: monitor refresh, int freq, VSync option, etc... read how to make smooth screen repaint ! more accurate AY tones, especially high frequencies + new video filter - 'nice colors' version 0.05b 24 sep 2001 ! fixed one more bug in load dialog [reported by Maxim Vasilyev] + preset for AY Chip = none [suggested by Maxim Vasilyev] + added YM chip: sound is same with AY, but FFFD behavior is different ! small changes in beta 128 emulation + emulated write protection flag (FDI-from header, TRD,SCL-from R/O attribute) + multiple command lines for one archive format [suggested by Maxim Vasilyev] ! fixed (finally!) AY envelope + General Sound (MOD player not complete) [credits to Shiru Otaku for GSPAK.ZIP] + memory models: pentagon-1024, extension on ports #DFFD,#1FFD,#FDFD + display exception position and registers on crash (for bugreports) version 0.06b 26 sep 2001 ! fixed AY envelope [ looks like a tradition ;-) ] - now really, i hope ! logarithmic volume tables for General Sound ! many improvements in MOD-player, but still not complete + reads zero-padded .TAP files [suggested by Georgy Lomsadze] + monitor shows contents of memory extension port * changed fps led [suggested by Vitaliy Pigo] ! fixed bug when GS (almost) always plays wrong sample + digital filter for general sound + kempston joystick on mouse - not really playable, just for fun version 0.07b 1 oct 2001 * yesterday i've received 100th e-mail concerning emulator :) no doubt - ZX platform will never die ! ! works in windows NT4 [bug reported by Georgy Lomsadze] ! fixed terrible bug in GS sample player [thanks to Vitaliy Pigo] * INI option: LEDS\PerfShowT, coz some people wants to see t-states, many don't ! mod-player: set tempo ignored (what the difference in speed and tempo?) now music in 'green beret' works better [bugreported by Moroz] ! killed clicks in GS player [bugreported by Moroz] + conditional breakpoints (uses c-like expressions of any complexity); breaks to range, port in/out, on instruction, on memory change superseded by this powerful feature and removed as obsolete. RTFM before use @ fixed blah-blah in documentation about 'disk spinning is not emulated' it's emulated since version 0.02 ! monitor: enabled save and load block (just forgot to bind keys to this funcs) strange, that nobody noticed that ! monitor: fixed bug in 'set bank' ! better TR-DOS, now Unreal Megademo (by KSA) works, if trdos traps disabled. (Z80S, R80, RealSpectrum failed to emulate this demo) [bugreported by Drew] + runs without soundcard (sound\fq=0 in INI) [suggested by Alexey Kravchenko] + INI option for autosave TRD/FDI + monitor: general sound status/fxplayer dialog - removed memory ATM-1024 + MMX simple video filter - it's first assembly routine in emul. in future versions i'll replace most filters using MMX and bilinear CPU expensive filters using 3DNow! + unbelievable video filter - chunky filtered (look to REFRESH or LIFEFORMS) not fully optimized, but will be recoded with 3DNow! in future versions [thanx to Mr.Dsteuz//Proxium for this excellent idea] version 0.08b 8 oct 2001 ! fixed MOD-saver [reported by Shiru Otaku] + INI: MISC\DIR [suggested by too many people to list them all] ! fixed portz selection (for RST7 crazy coding style :) [thanks to Paul Pavlov] ! killed screen flicks when tracing on F8 [reported by Max Vasilyev] + monitor: added stack window * changed font in monitor: it's grievous, that people prefer PC font instead of native Speccy charsets, but i've added a nice gfx as a compensation :) [stolen from XL-DESIGN - sorry, guys] + able to debug borders/multicolors: screen updates when tracing with F8 + emulated pentagon with AY on 3.5 MHz [suggested by Shiru Otaku] + changed GS dialog ! a bit fixed INT signal, but not perfect - differs by 1T from real pentagon :( * some video filters removed, some mmx-optimized + video: motion blur for jumpin scrolls[thanks to Ms.Dsteuz for fast algorithm] ! able to load uncompressed Z80 2.01 [thanks to Dmitry Sanarin for files] + monitor: watches + monitor: text dump mode [suggested by Max Vasilyev and Ironfist] + border only mode for debugging border effects [suggested by Mad Cat] + INI option: MISC\RESET ! monitor: fixed PgUp/PgDn [reported by Ironfist] ! fixed terrible bug in tape loader (with max speed) [thanks to Dmitry Sanarin] ! fixed speech on rasputin & robocop [reported by Dmitry Sanarin], but added new bug: AY does not play when tone period = 0 ! separate tables for AY and YM ! AY: rewritten noise, fixed period, noise rand() from AY_Emul version 0.09b 10 oct 2001 ! fixed rare bug in AY ! changed BMP-saver [suggested by diver] ! changed palettes for all chunky filters, small changes in chunkFX filter version 0.10b not released to public ! fixed clicks in mod-player [bugreported by Moroz] ! fixed diskette saving led (broken in version 0.07) * speed optimizations in video (using 486+ opcodes in conjuction with MMX) * one filter rewritten in MMX ! changed SNA loader - now may load incorrect files [bug found by Ironfist] + hotkeys for selectin' AY/YM,ABC/ACB on the fly [suggested by Max Vasilyev] ! fixed bug in BMP screenshot for 'small' and 'scanlines' modes ! emulated GS bug: cmd #3E loads _*unsigned*_ samples [thanks to Moroz] * tested monitor with 100Hz refresh - great! for setting rate in windows 95 use PowerStrip or similar utility, for NT/2000 edit emul.ini ! undone INT changes, made in 0.08 version 0.11b 18 oct 2001 ! monitor: bit 6 in beta 128 port #FF displays right [thanks to Alex Makeev] ! monitor: repaint screen on task switching [bugreported by Alex Makeev] * documented many bugs - read unreal.txt ! changed palette for noflic2 [suggested by diver] ! black background in 'small' and 'scanlines' filters [suggested by many people] ! fixed loading of too long tapes [bugreported by Andrew Moonlight] + video filter: using hardware blitter [idea by Alex Baskakov] + monitor: stepover(F8) trace rst/call with stack params at one step (rst#28) + sticky keys mode [completely stolen from ZX_Emul, read description there] version 0.12b 22 oct 2001 * fantastic (>50%) speedup for CPU with 32 byte L1 cache line (K6-2) probably poison for intel pentium-I, but i don't care [thanks to AMD's "Processor Code Optimization Application Note"] + hi-color chunky filters, designed especially for LIFEFORMS [hi, Placebo!] filtered 2x2 chunky allows read all texts in demo and does not loose colors * in next version some 8-bit filters will be removed. mail me, if you need them * small speed optimizations in Z80 core ! load dialog remembers last dir [suggested by Alexey Kravchenko] ! screenshot saving to emulator directory version 0.16b 26 oct 2001 * drastically improved overall sound quality [thanks to Hacker KAY] ! 'save VTX' does not ignore chip, stereo layout, and 3.5mhz mode * changed monitor save/load [suggested by Ironfist] ! always loop MOD in GS player [suggested by Moroz] + monitor: ripper's tool [idea by Ironfist] + Hobeta loader (read doc) [suggested by Mr.Dsteuz] + FLASH-COLOR [thanks to Mad Cat for description] + INI option to hide video filters, that do not work on your system ? gameport joystick as kempston (not tested - just copied code from DirectX SDK) version 0.16b2 31 oct 2001 * slightly increased quality and speed for 2x2 hicolor chunky ! able to load 48K qsaves [bugreported by Kuba Adamowicz] ! fixed some bugs in keyboard layout [bugreported by Alexey Kravchenko] ! load dialog: fixed masks for hobeta and fdi [bugreported by Paul Pavlov] ! may work in 15-bit hicolor (not tested) [thanks to Vitaliy Pigo for techinfo] version 0.17b 5 nov 2001 ! fixed bug in 15-bit hicolor (not tested) * MCR optimized for any (K5,K6,K7,P-I,P-II,P-III) cpu, not only for K6-2 + scorpion timings (available from INI) [s.b. Alexey Kravchenko] ! monitor: fixed bug in GS samples preview + hardware multicolor [s.b. Nuts and Mr.Dsteuz] + support for ZS Scorpion Service ROM 2.94 [s.b. many people] + customizable (from INI and GUI) ROM sets [s.b. many people] + memory model: ZS Scorpion 1024K - removed many useless 8-bit filters. i've received only one request for keeping them, so i think 16-bit modes much better version 0.18b 26 nov 2001 ! monitor: LD (nnnn),HL and LD HL,(nnnn) assembles now to short (not #ED) form ! fixed bug in short #7FFD addressation [thanks to Paul Pavlov] ! fixed port #FF (broken in 0.17?) [thanks to Alexey Kravchenko] ! finally found lost 3T in MCR. now exact pentagon border ! some changes in beta128 timing [thanks to Max Vasilyev], but still incomplete ! monitor: fixed flipping video pages in dialogs using GDI ! monitor: update MCR on every trace step - monitor: removed logo [alas, found a copyright owner :)] + led: current time [s.b. Alone Coder] + INI: GSReset [s.b. Ilya Podrezov and Necromancer] * small changes in INI:SYSTEM.KEYS + monitor: save cursor positions [s.b. Alone Coder] + monitor: context jumps [s.b. Alone Coder] ! shame on me - fixed bugs in Z80 (not all) [thanks to Alone Coder] + GS: LPT covox mode * small changes in INI:LEDS + autofire [s.b. Alexey Kravchenko] + DirectSound for w95. delay=2frames, if DS driver uses hardware acceleration (also select out_ds.dll in winamp;) [damn,i've got >10 requests for this shit] + user palettes on hotkeys [s.b. diver] + CMOS+RTC [s.b. Pawel Kislyak] + hotkey for quick saving disk images and cmos version 0.18b2 29 nov 2001 ! fixed bugs in palette for some filters (appared in 0.18) * some hi-color speed optimizations (but still 32 bit instructions) + "new" video filter for chunky demos + INI: ShareCPU [s.b. Dexus] version 0.19b 19 dec 2001 * completely rewritten video engine: requires video overlay hardware, but works in windowed mode; plz review hardware requirements * changed AY Chip=digital (added anti-vibratto, ambience effect, etc...) - GS: removed MOD player (b'coz it suxx), now able to exploit BASS Sound System + 512x192 + added 5 fast, but low-resolution hicolor chunky modes ! fixed bugs in GS [found by diver] + unreal api [s.b. PoP HL^exult] * +10% speedup in z80 emulation + monitor: on-screen watches + on-screen watches trace used RAM/ROM banks [s.b. Mad Cat] ? fixed bugs in gamepad/joystick (?) + TD0 read/write [thanks to Alex Baskakov for HalfElf's sources] + video filter: color tv (not optimized -> slow) version 0.19b2 21 dec 2001 ! TD0 reader updated for TD0 v21 version 0.19b3 24 dec 2001 ! video: supported pixel format RGB555 ! fixed bug in windowed mode [found by Ilya Hromenkov] + video filter ch4true - best quality version 0.19b4 25 dec 2001 ! video: supported MPEG1 YUY2 (for nVidia cards), some video code cleanup * video filter 'color tv' optimized ! fixed EI:HALT [thanks to Alone Coder] ! 'fixed' bug in beta128 [found by Larchenko Eugene] version 0.19b5 28 dec 2001 ! fixed ds driver for win98. INI:DSoundBuffer is obsolete (auto-detection) sounddrv=wave will be removed in next version ! fixed windowed mode bugs in win98 + monitor: disasm to file [s.b. Sergey Bulba] + monitor: INS/DEL in line editor ! monitor: fixed bug in read block from file version 0.20 final 9 jan 2002 * first not-a-beta, though not all bugz fixed + open source - soundchip tables are wrong again (opensource restrictions, see sound.cpp) + check against loading same disk image to different drives [s.b. Alone Coder] ! fixed ch2hw,ch4hw for nVidia cards * more flexible video settings + monitor: select active window with mouse [s.b. Sergey Bulba] ! GS/MOD: fixed bug in position jump [found by Ironfist] ! dialogs do not trash main window while dragging over it [s.b. Alex Baskakov] + keyboard layouts can be selected without restarting emul [s.b. Flying] * faq updated + INI: DSPrimary may be for win98 (win2k works well in both modes) version 0.20 fix #1 29 mar 2002 * +5% z80 speedup when monitor not used ! RTC day_of_week [fb Alone Coder] + video renderer: standart win32 GDI * new sound mixer: always max quality + clock-precise ay/ym emulation (in prev. versions i've used a simulation) ! fixed covox on port #DD + video: wide border [esp. for ZX-Time] + #EFF7 bit2 and bit3 + video: new screen mode [from ZX-Guide#2] + video: works in 320x200, 320x240, 400x300, 512x384, 800x600 modes + boot auto-appends to disk in any format, not only to SCL * new engine for WD1793 emulator: ! complete emulation of all WD93 commands and status register ! right CRC in address and sector [thnx to AlCo for track dumps] ! complete timings (insult, powerup works as real with traps=0,fast=0) + FDDs LED + load/save unreal disk image format + built-in converter HOBETA -> TRD <-> TD0 <-> UDI <-> FDI <- SCL ! TD0 writer updates CRC ! able to load TD0 with description [fb AlCo] * many cosmetic bugfixes/flicfixes/improvements version 0.20 fix #2 1 apr 2002 ! fixed FDD_MOTOR bug [fb SirX] ! fixed ay sound [fb SirX] ! fixed bugs in FDI loader [fb SirX] ! fixed FDD step bug version 0.20 fix #2.5 10 apr 2002 ! fixed ay envelopes #0E and #0A [fb SirX and Alex Makeev] version 0.20 light edition 19 apr 2002 - shit removed * some MCR optimizations + separate reading left and right shift,control,alt + direct access to video hardware, full speed on iP100 (without sound) use 50/100/150hz modes - set EGATiming in INI for your display version 0.21b 20 may 2002 * video output +20% faster - removed filters: sgdi, motion blur, flashcolor. removed leds: FDD (too ugly) + resizable-window video mode for accelerated cards (recommended for GeForce1-4) + chunky modes through hardware bilinear filter (realtime in gf2/1600x1200x32) * leds: при указании координат возможны отступы снизу или справа от границы экр * all tape routines completely rewritten (maybe reading WAVs in next versions) - tape traps removed. pls press NumLock or enjoy loading process ! load TZX with direct recording and loops [thnx to Dmitry Sanarin for files] ! better support for TZX info blocks: messages, hardware info, pokes, etc... + CSW loader (hacked from couple examples, if you have specification, mail me) * monitor: disassembly window acts like STS 3.2 + General Sound low-level emulation [greets to PSB/Halloween & Adventurer #13] (GS firmware sux (details in notes.rus). use BASS for 16b/8ch) * faster emulation of DDCB/FDCB opcodes ! speed-up & bug-fix wd93 emulation [thanx to Alone Coder for tests on real zx] ! block read/write when FDD motor is not spinning * support for new version of UDI format, read + executable file is not UPX'ed (+2% faster loading) version 0.21b2 31 may 2002 ! updated sound mixer [fb Siril, thanks to SirX for bugreport] ! save/load dialogs don't clear background in 8bit fullscreen mode ! correct CSW loader [thanks to Ramsoft for docs] ! TZX loader updated to format version 1.13 * minor video optimizations + loader for .SP snapshots + monitor: diskeditor [sb Alone Coder] version 0.21 light edition 17 jun 2002 * as usual, 'lite' release version 0.21b3 25 jun 2002 ! diskeditor fix [released 10 jun 2002] * Z80 emulation +8% faster * video output optimizations ! fixed bug in AY mixer, much faster AY/YM emulation + new unreal soundchip: YM-turbo (headphones recommended) + custom AY volume/stereo presets (+bonus - over 10 ripped volume tables) + ULA presets * flash-color is back version 0.21b3LE 25 jun 2002 + monitor works better, but still incomplete functionality version 0.21b4 ! fixed: 0.21b3 could not load ULA/AY presets on win9x ! fixed: TRD writer saves last accessed track instead of trk 0 [fb AlCo] + F1 invokes help on bound keys (requires IE4.0 or later) ! fixed bilinear filter (crashed in 0.21b3) ! fixed small bug in flash-color, now may work with bilinear filter ! fixed 'nopaper' mode * video sub-system rewritten. overlay in 'double' mode don't pervert colors + profi ROM and screen (to run CP/M, find profi.rom and cpm.udi) profi service ROM can start only when BETA128 delays enabled + pentagon service ROMs (details in service.rus) + my service ROM included in archive (service.rom) + pentagon 256K, pentagon 128SR (service ROM on #7FFD) + #EFF7 switches 512x192 and HWMC, #DFFD - 512x240 (without changing screen mode - always 50fps, even if switching each frame) - unreal API removed, looks like nobody uses it + configurable scanlines brightness * if some ROM not defined in ROMSET, it substitutes with #FF's + gui: config page EFF7 - set/reset/lock arbitrary bits of #EFF7 + filter anti-64 for reading e-zines: converts 4x8 fonts to 8x8/8x16 on the fly to run on slow pc's, unset 'update border' and set 'low quality'. works only with known fonts. i've used fonts from heresy, body and others,,, (sorry ppl) version 0.21b5 ! monitor: fixed stupid bug in 'watches' window, added Alt-F, Alt-S, Ctrl-U ! fixed HIMEM=PENTSR - #7FFD bit 4 should not lock #7FFD bit 7 * recompiled with vc7, separate versions for pentium and p-II in virtue of this amazing compiler unreal runs on pentium-166MMX! ! monitor: Alt-S,Alt-C,Alt-P didn't work in registers window * all asm fragments removed from Z80 engine, now it's pure portable C++ ! TZX loader: fixed overflow on too long description strings [fb Ir0n Man] + video: AlCo-384 on #EFF7 bit 6 * anti-64: more fonts version 0.22b ! fixed: emul played ay-envelope #0B instead of #01 [fb Mad Cat] ! Z80: fixed DD,CB and FD,CB opcodes [thanks to Kamill Karimov] ! fixed many small bugs in TZX loader ! fixed bugs in WD1793 and FDD emulation + text64: detect per-pixel scrolling and 6x4 fonts, font searcher - text64: pre-defined fonts removed [(c) restriction] version 0.23b 13 sep 2004 - win95/98/ME are no longer supported - NT4.0 (directX 3.0) is no longer supported - no special version for P5,K6 CPUs. code optimized for P6/K7 ! a bit better AY sound, still not perfect [acn#32]. btw, AlCo, border=wide is able to display 300 lines for 384x304 screen (pls read unreal.txt) + faster AY emulation ! AltLock=1 could freeze keyboard, fixed ! fixed crash on playing zero-length GS samples + mouse buttons and wheel can be bound to spectrum keyboard + ini:[ARC]SkipFiles - ignore archive descriptions + anti-text64 font setup: "find next" searches through left/right,linear/planes * improved font searcher in anti-text64 font setup version 0.24b 26 oct 2004 * increased filter order in sound engine (better AY sound) + ATM 7.10 128/512/1024 (requires BIOS to setup memory) thanx to Timonin Maxim + ATM 7.10 video modes (palette does not work) version 0.24b2 5 nov 2004 ! fixed bug in WD1793 engine (ZX-Power#3, ATM CP/M) ! flash attribute in AlCo384 screen mode ! unable to edit ascii memory dump in monitor ! fixed saving ATM screenshot from windowed mode ! fixed screen repaint in pause mode [fb Gambler] + ATM palette + ATM7.10 128/256/512/1024kb ROM * minor ATM bugfixes/improvements + able to load config from command line (unreal.exe -i cfg.ini) + added atm2.ini, slowcomp.ini version 0.24b3 bugfix release 11 nov 2004 ! fixed ATM text-mode attribute [fb Gambler] ! fixed loading from archives - broken since 0.24b2 [fb Paul Pavlov] version 0.25b 15 jan 2005 + ATM screen mode #7 [thanks to Timonin Maxim for scrshots] ! fixed bugs in sound engine [fb Alex Fill] * FDD led shows current track * BestView, ZX-Power, etc now works with [BETA128] Fast=1 * "disk modified" flag shown in BETA128 settings [sb AlCo] ! fixed small bug in Z80 [fb AlCo] ! fixed bug in service ROM emulation [fb AlCo] ! reset should not clear Z80 registers [fb AlCo] + BASIC-48 labels from file "sos.l" shown in monitor (Ctrl-L) unfortunately, i have no BASIC-128 and TR-DOS labels ! fixed crash on Alt-Tab with dsprimary=1 [fb AlCo] ! fixed screen update when returning from full-screen in gdi/overlay mode + ATM/Nemo ATA HDD emulation [alpha]. works with images and real drives @ ini: changed ROMSET=pentagon (some soft expect tr-dos in service ROM) ! fixed saving/loading snapshots (Snowball, Return to Eden) + XAS7 labels shown in monitor (Ctrl-A,Ctrl-L). for XAS 128k config + alasm labels shown in monitor (Ctrl-Shift-A,Ctrl-L) [thanx to Alco for docs] version 0.26b 27 jan 2005 ! HDD emulation: fixed reading in CHS mode, when it goes to next track/head @ changed ini: [SOUND]SoundBuffer=2 (less sound delay for 1GHz+ CPU) + jump to address under cursor from registers window [sb AlCo] + cache size option: 16/32K * new gui/ini design for selection of model, romset and memory size + ULA option: "unstable data bus" [sb AlCo] ! invoking monitor from full-screen mode has switched screen resolution + Scorpion PROF-ROM (useless without SMUC hardware) [greetz to jtn, Neu Animal] * able to load XAS/ALASM labels from PENTAGON-256/512 high-memory * added "cancel" button when replacing unsaved disk or exit [sb Vitamin, AlCo] * selecting normal/double switches window size in GDI mode [sb elf/2] * centered picture of 384x304 video mode when border=none,small [sb AlCo] + ATM XT keyboard [thanx to Kamil Karimov for 8051 disasm] ! saving snapshots/images with dots in filename [fb lvd] version 0.27b 27 feb 2005 ! asm/disasm of DD/FD+ED (out (c),xl, etc) [fb MadCat] @ ini [SOUND]SoundBuffer=2 changed back to 6 (was unstable) ! fixed bug in GS emulation [fb Moroz] * trace step removes "cpu halted" mode [sb lvd] ! disk image filename was not changed after "Save As" [sb AlCo] + memory R/W breakpoints. new gui for bp manager (Alt-C) * switching to/from ATM XT mode without resetting controller [sb Gambler] + tactmeter [sb Spectre] ! noflic did not work in 8-bit and GDI modes with scanlines + GIGASCREEN on #EFF7 bit 4, without multicolors yet (use with noflic) + option for alternative (interlaced) noflic algoritm for filter=double + paste text from clipboard [sb Alco, elf/2] * anti-text64: fonts from ACE,PC20 in default fontset + anti-text64: search font in external file + anti-text64 detects inverted characters [sb AlCo] ! closing on ALT-F4 sometimes didn't ask "save? yes,no,cancel" * register #0B bit 2 of CMOS RTC controls binary/BCD mode * new option [VIDEO]DetectModel (description in unreal.ini) + Kondrat'yev ISA modem [mapped to windows driver for real modem] version 0.28b 28 mar 2005 ! pc joystick/gamepad did not work since 0.27 [fb Terazini] + pc joystick/gamepad can be bound to any keys, not only kempston joystick please create new keyboard layouts with JLEFT=6,JRIGHT=7,JUP=9,... etc... + AY mouse [thanx to [bETA]mEN for scheme] * mouse coords updated (interpolated) every Z80 cycle, not every frame + loading labels from user.l for external assemblers [sb Kurles^HS^CPU] label format is 'PP:AAAA nnn', PP - page, AAAA - offset, nnn - text * flash-color options read from ini [sb Agent Cooper] @ ini: [SOUND] Fq=48000 by default (supported by most AC'97's. for others, consult soundcard manual or set default 44100) + Scorpion SMUC: PROFROM,IDE,CMOS,NVRAM [thanx to Neu Animal for scheme scan] * press F12 to reset in default mode, as specified in ini: [MISC]Reset * GS emulation code re-organized in object-oriented way + monitor: jump to label [sb Kurles^HS^CPU] * edit MODS.H to compile size-optimized versions without unnecessary parts @ fixed errata in documentation [thanx to AlCo] version 0.29b 29 may 2005 * added ATA-1 compatibility (address registers after read/write) [fb Blade] ! fixed bug in sound engine, that cause crash after long running + AY 2nd chip: Turbo-AY (POS), Turbo-sound (NedoPC) and Quadro-AY schemes monitor: Alt-Y switches active chip + frame resampler: converts spectrum 50hz-int into 60/75/80/... hz display refresh, has built-in low-pass filters to handle 3color and noflic. set [VIDEO]Refresh to maximum for you monitor in 640x480 (75,85 or 100 hz) ! fixed bug in .Z80 loader [fb Terazini] ! General Sound was accidentally disabled in 0.28b ! fixed INTRQ bug in ATM HDD scheme ! fixed GS volume tables in low level mode [fb psb] ! fixed bugs in GS Z80 [fb psb] ! fixed bug in on-screen watches [fb MadCat] ! fixed reset keys inside monitor version 0.30b 1 aug 2005 ! fixed bug in TV+noflic [fb AlCo] + video filters menu on F4 / SHIFT-F4 ! fixed general sound BASS mode: sound effects not played (bug since ver 0.28) ! OSD GS led continue show volume after sample stop for looped samples ! fixed bug in frame resampler - crash on full border mode [fb Alex/AT] ! fixed bug in frame resampler that caused additional flicker * better contrast in frame resampler (less frames to mix => more contrast) + frame resampler works with all renders, for slow (less then 600mhz) machines use 8-bit ddraw driver. it is b/w and does not use MMX probably there are bugs with ddraw/ddrawh. ddrawt/blt/ovr work fine @ for LCD monitors, pls use refresh=60 with "frame resampler": LCDs can't switch pixels so fast and picture worse with higher rates * added SMUC version ports (#5FBA & #5FBE) [sb deathsoft] * border (port #FE) not cleared on reset [sb deathsoft] + KAY-256/1024: himem,ROMs (note that ROMs in the net have invalid pages order) - scorpion port #1FFD decoded as in real scheme. pentagon soft may not work * some changes in overlay render (may not work on old vcards, i don't care) ! removed unnecessary screen mode switches when entering monitor + modem: speccy able to control transfer mode and rate [code by Alex/AT] ! modem: fixed bug - could read trash byte from input buffer [fb Alex/AT] + IDE/ATAPI cdrom (needs physical drive or windows-level emulated device) version 0.31b 24 aug 2005 ! atapi: sense key not placed into error register on ATAPI error ! atapi: fixed bug in ATAPI commands, that don't return data block ! atapi: fixed bug with DRQ on end of ATAPI data block ! gs: "save mod" was disabled since 0.28b [fb TJ] ! fixed bug in window size after leaving fullscreen [fb Tj] + new funny led shows R/W/X dynamic in spectrum memory [sb Raider] + keyboard shortcuts in windowed mode: Alt-1, Alt-2, Alt-3 + 4x scale video filter [sb Shiru Otaku] (set minres=1024 to avoid 1280x960) + shows condition hit and jp/ret/call direction in trace window [sb Dexus] + monitor: Alt-F9 shows only ray-painted screen area + monitor: Alt-S cycles through watches / screen dump / ray-painted - monitor: mon.render hotkey is deleted (as obsolete) * monitor: detection internal loop exit when tracing loop on F8 [sb Dexus] + monitor: fill memory with pattern [sb Raider] * FDD & FDC code comletely rewritten, bugs may appear ! when saving disk image, prefer original format as default, not TRD ! CacheVox works fine with [BETA128]Fast=0. no other emul can handle this yet ! better WD1793 sector write emulation (overwrite old gap and data AM) + monitor: more fields in beta128 panel (see docs) @ visual ini-file editor available at http://realsoftmakers.nm.ru/RSM.files/download.htm version 0.32b 4 sep 2005 + monitor: jump destination marked with arrow [sb Dexus] + ini option "HighPriority" + non-bluring scale 2x,3x,4x, developed in AdvanceMAME project (MMX-rewritten) @ scale3x is not MMX-vectorized and slower then scale4x @ if your monitor displays only up to 1024x768, use border=none for scale4x ! better FDD emulation: BestView works with [beta128]fast=0 [fb Kubas] ! temporary hacks in scorpion trdos replaced accordingly to scheme ! better FDC emulation: adjusted timeouts in fast=1 mode @ [beta128]IL is 2 by default in INI: speed-up #3D13 loaders in fast=0 mode ! no crash on 1280x1024 scrshots: dynamic buffer size version 0.32b2 21 sep 2005 ! fixed bug (only drive A: can be used) [fb Strunov] ! fixed bug in FDD delays [fb Kubas] * some changes in multicolor renderer [sb AlCo] * Pentagon-1024: #7FFD.5 is a 48k mode lock when #EFF7.2=1 [sb AlCo] * color console output * AdvMAME scale 2x,4x optimized for SSE2 version 0.33b 7 dec 2005 * monitor: importing ALASM labels with searching in whole memory + monitor: Alt-M to edit model-specific high memory port [sb Spectre] + monitor: transfer data between FDD image and spectrum memory [sb AlCo] + Alt-F6 - memory (cheat) searcher [sb Kpa3] + SAM style video drive (disabled by default, edit mods.h and recompile) + Alone Coder's 4bpp video mode (on #EFF7 bit 5) + TRD/SCL preview in save/load dialogs [sb 3HAXAPb] + added "AUTOLOAD" ini section [sb AlCo] + load file with drag'n'drop from explorer window * mouse capture on left-click to main window (Shift+ESC still works) ! restored fire function in "joystick on mouse" mode ! fixed small bug in HOBETA loader [fb AlCo] * GLUK 6.1 is used as default system ROM version 0.34b 22 jan 2006 ! correct border color after snapshot loading [fb [bETA]mEN] ! fixed bug in ATM memswap on RG0 [fb AlCo] ! fixed rare crashes on reading port #FF ! fixed bugs (not all) in CD-ROM emulation [fb AlCo] + Z80 INT length emulation (Adventurer#13 intro works with right timings) * ignore some unwanted mouse clicks and keyboard pushes [sb AlCo] + complete emulation of ATM-TURBO 4.50 [thanks to Doronetty and Max Timonin] version 0.35b 22 jul 2006 ! Z80: fixed flags after ADD IX/IY,SP instruction ! Z80: fixed undoc flags after LDI(R)/LDD(R) ! Z80: fixed undoc flags after CPI(R)/CPD(R) - Z80: undoc flags for IN[R] / OUT[R] not ready yet ! Z80: MEMPTR implemented (as described in boo_boo & Kladov research) ! anti-text64 now works in ATM-TURBO models [fb AlCo] ! monitor: don't waste CPU time in spectrum screen view (F9) [fb AlCo] * changes in HDD/CDROM code: physical layer moved to separate classes ! GS: fixed unused port#BB bits (some games rely on it) [fb moroz] + CD-ROM access via SPTI (native WinNT) or ASPI (3rd-party wnaspi32.dll) * used my SNDRENDER library for sound & AY emulation (easier & reusable) * implemented 16/32bpp renders for ATM-1,2 640x200 screen mode * improved GS quality: high-level emulation mode playing samples using BASS @ please upgrade BASS to version 2.3 (API changed) version 0.36b 28 feb 2007 (Alone Coder) + поддержка YM2203 (TurboSound FM) интегрирована Dexus'ом с изменениями Alone Coder'а. Теперь исправленная эмуляция (TurboFM Revision C). YM2203 support (TurboSound FM) was integrated by Dexus with Alone Coder's changes. Fixed emulation now (TurboFM Revision C) * исходники теперь компилируются под MSVC6 (было MSVC7). Sources are now compiled by MSVC6 (was MSVC7) - в связи с этим выброшены фильтры AdvMAME, FrameResampler. Because of that the filters AdvMAME and FrameResampler are removed ! цвет на точку по EFF7 bit0, мультиколор перенесён на bit5. Colour-per-pixel mode is set by EFF7 bit0, and hardware multicolour mode is moved to bit5 ! исправлена загрузка 48k снапшотов, если до этого был установлен режим Pentagon 1024k: вместо 0-й ставилась 32-я банка памяти. Fixed loading of 48k snapshots, if Pentagon 1024k mode was before: 32nd bank was set instead of 0th ! сброс в 48k на Pentagon 1024k включал 32-ю банку. Reset to 48k was setting 32nd bank on Pentagon 1024k - убита защита от выгрузки sna в режимах >128k, теперь можно отгружаться в Walker'е. SNA saving protection in >128k modes is now removed, so Walker may be saved ! максимальная длина дорожки увеличена до 7000 байт - теперь работает игра "Шибениця" (gallows.td0). Если какая-то программа перестала работать, СООБЩАЙТЕ! Maximum track length is increased to 7000 bytes, and Gallows game works now. PLEASE REPORT if some program ceases to work! + русская версия хелпа. Russian version of help + название последнего загруженного диска выводится в заголовке окна эмулятора. A name of last loaded disk is shown in a title of emulator window ! вываливалось при обращении к IDE-устройству, если одно из IDE-устройств не было настроено. Crashed while addressing IDE device if one of IDE devices was not set ! CD-ROM не работал под Windows 9x, теперь работает. Сделан обход глюка, который возникает вот здесь, по непонятной мне причине: CD-ROM did not work in Windows 9x, it works now. Walkaround of bug, that appears here, was made: int ATAPI_PASSER::SEND_ASPI_CMD(void *buf, int buf_sz) { SRB_ExecSCSICmd SRB = { 0 }; SRB.SRB_Cmd = SC_EXEC_SCSI_CMD; SRB.SRB_HaId = (unsigned char)dev->adapterid; SRB.SRB_Flags = SRB_DIR_IN | SRB_EVENT_NOTIFY | SRB_ENABLE_RESIDUAL_COUNT; SRB.SRB_Target = (unsigned char)dev->targetid; SRB.SRB_BufPointer = (unsigned char*)buf; SRB.SRB_BufLen = buf_sz; SRB.SRB_SenseLen = sizeof(SRB.SenseArea); SRB.SRB_CDBLen = ATAPI_CDB_SIZE; SRB.SRB_PostProc = hASPICompletionEvent; memcpy(SRB.CDBByte, &cdb, ATAPI_CDB_SIZE); /* DWORD ASPIStatus = */ _SendASPI32Command(&SRB); passed_length = SRB.SRB_BufLen; if (SRB.SRB_Status == SS_PENDING) { DWORD ASPIEventStatus = WaitForSingleObject(hASPICompletionEvent, 10000); // timeout 10sec if (ASPIEventStatus == WAIT_OBJECT_0) ResetEvent(hASPICompletionEvent); } if (senselen = SRB.SRB_SenseLen) memcpy(sense, SRB.SenseArea, senselen); if (temp.win9x) senselen = 0; //Alone Coder //makes possible to read one CD sector in win9x if ((temp.win9x)&&(passed_length >= 0xffff)) passed_length = 2048; //Alone Coder //was >=0xffff in win9x //makes possible to work in win9x (HDDoct, WDC, Time Gal) version 0.36.1 10 mar 2007 (Alone Coder) ! буфер на 256 значений YM2203 убран - мешает цифровому звуку через YM2203. Buffer for 256 YM2203 samples is removed - it hampered the digital sound via YM2203 + ввод из клипборда теперь поддерживает и русские символы (кроме двух: заглавная Ё понимается как Е, заглавный Ъ - как апостроф). Paste from clipboard understands Cyrillic letters * убрано окошко, извещающее об изменении файла user.l (sb Elfh). Messagebox "unreal discovered changes in user labels" is removed * дополнен хелп (обязательно посмотрите раздел "несовместимость"!). More info in help (please look "bugs and incompatibilities") * дополнен комплект файлов. File set is filled up version 0.36.2 28 mar 2007 (Alone Coder) ! клавиши в max speed режиме опрашиваются каждый фрейм: temp.inputblock = 0;//temp.vidblock; а то не всегда реагировало на NumLock в max speed режиме. Keys in max speed mode are scanned every frame, for better responsibility of NumLock in max speed mode. ! звуковой буфер не чистился (sound_stop()) в меню Save disk (main_save(), correct_exit()). Sound buffer was not cleared in Save disk menu ! вываливался при показе меток длиной 10 (sb Elfh). Emulator crashed when tried to display 10 char long labels * 0 не показывается как метка. 0 is no more shown as a label ! что-то исправлено в интерфейсе с BASS.DLL (fb molodcov_alex): if (!BASS_ChannelPlay(hmod, FALSE)) reportError("BASS_ChannelPlay() [music]"); Something fixed in BASS.DLL interface ! порт #7ffd на Скорпионе дешифровался неправильно (теперь с учётом A12, как #1ffd) - не работала листалка ACNews. Port #7ffd in Scorpion mode was deciphered without A12 - ACNews lister failed to work version 0.36.3 28 apr 2007 (Alone Coder) ! исправлена палитра. Palette is fixed ! Z80: в операциях записи в память сама запись (wm()) делается после увеличения счётчика тактов (cpu->t+=) (если два байта, то 2 раза cpu->t+=). Важно для мультиколоров. Z80: memory write procedure (wm()) in memory write operations is called after increasing the tick counter (cpu->t+=) (in two-byte operations cpu->t+= is made twice). Important for multicolors ! исправлена русская буква "м" в anti-text64 - показывалась как "m". Anti-text64: fixed Russian letter "м" ! TurboSound FM: FM часть заглушена в 4 раза в соответствии с реальным устройством. TurboSound FM: FM is 4 times more quiet as in real device ! поставлен шумопонижающий фильтр (нужно для beeper'а). Кто знает как - помогите убрать щелчки на границах 20ms кадров! Если просто заполнять первые 2-4 отсчёта кадра предыдущим значением, то щелчки на бипере исчезают, но появляются щелчки на AY... Noise reduction filter added (for beeper music). Please help to remove that clicks in boundaries of 20ms frames! If I simply fill the first 2 to 4 samples of a frame with preceding value, then the beeper clicks are disappearing, but AY clicks appear... ! звуковой буфер не чистился в меню Save sound. Sound buffer was not cleared in Save sound menu version 0.36.4 14 jun 2007 (Alone Coder) ! шумопонижающий фильтр можно выключить в меню и в ini. Lowpass filter may be triggered in menu and in .ini-file ! в eff7 (bit 4) вместо Gigascreen работает выключение турбо-режима (ставится 71680 тактов) - в соответствии с реальной машиной (кнопка W в Mr Gluk Reset Service). Звук при каждом переключении переинициализируется. Gigascreen mode (eff7 bit 4) changed to turbo mode off, as in real Pentagon 1024SL 2.x (key W in Mr Gluk Reset Service). Turbo off sets 71680 ticks per frame. The sound is re-initialized when this bit switched ! в eff7 (bit 3) вместо Read only cache работает включение 0-го банка ОЗУ в область 0000-3fff - в соответствии с реальной машиной. Read only cache (eff7 bit 3) changed to "RAM0 in 0000-3fff" mode, as in real Pentagon 1024SL 2.x ! немного исправлена громкость FM. FM volume slightly fixed ! PSB: половина правого канала GS слышна в левом и наоборот. Half of GS right channel is mixed to the left channel and vice versa ! PSB: исправление щелчков громкости в GS. Reduced volume clicks in GS version 0.36.5 29 jul 2007 (Alone Coder) ! исправлен глюк прошлой версии с вводом числа тактов в кадре. Fixed framesize bug of previous version ! диалог POKE ругался на что угодно. POKE did not work ! при сохранении trd под другим именем обновляется имя в титуле. When trd disk is saved under another name, that name is shown in emulator window title ! LVD: в z80asm исправлены операции ALU a,r. Fixed ALU a,r operations in assembler/disassembler ! Deathsoft: в modem неправильно ставилось число бит в байте. Fixed wrong number of bits in byte for modem ! PSB: новая версия ПЗУ General Sound. New version of General Sound ROM version 0.36.6 17 oct 2007 (Alone Coder) + окно эмулятора возникает в центре рабочего стола (из расчёта размера double). Emulator window appears in the middle of the screen (for "double" size of emulator screen) ! убрано выпадение при показе длинных меток в отладчике. Fixed crash while showing long labels in debugger + неполная дешифрация кэша (для MODPLAYi) (scor). Cache access is decoded by 1 address line (for MODPLAYi) ! определялся TFM, когда есть только TS. TFM was detected by Spectrum software when only TS was present ! звуковой буфер не чистился при вызове хелпа. Sound buffer was not cleared in help window + настройка способа работы колеса мыши в ini. Mouse wheel mode setup in ini * в ini исправлены секции ROM и по умолчанию поставлен DSPrimary=0. ROM sections in ini fixed, and DSPrimary=0 by default version 0.36.7 18 nov 2007 (Alone Coder) ! Digital Studio не работало на TurboSound, т.к. по сбросу включался 0-й AY (KYV). Digital Studio did not work with TurboSound enabled because 0th AY was on - заштопал ещё две дыры в показе меток, теперь вроде не вываливается (Elfh). Two more holes fixed in show labels in debugger, so it does not crash any more - эмулятор не компилировался на более новых компиляторах (из-за локальных меток цикла и нетипизированных const и static) (DeathSoft). Emulator sources were incompatible with modern compilers (local loop labels and omission of explicit types for const and static labels) version 0.37.0 8 feb 2008 (Alone Coder) + General Sound 2MB (Dmitry Demyanenko) - под XP не работало чтение таблицы партиций с CD (выдавало длину 65535), теперь насильно формируется длина 2048. CD partition table under XP returned wrong length of 65535 (fixed to 2048). + NMI в области ПЗУ игнорируются (иначе не работает теневой монитор). NMI is ignored when ROM area is executed (Scorpion shadow monitor wants this). + от турбо-режима зависит число тактов в команде (t=(t+1)>>1), теперь исключены выпадания при частом переключении режима. Turbo mode reduces number of t-stated in every command (t=(t+1)>>1), and shutdowns because of switching turbo frequently are now fixed. + программное переключение турбо-режима на ATM Turbo 7.10. Software turbo mode switching in ATM Turbo 7.10 * соответственно, по умолчанию в кадре снова 71680 тактов, однако включен турбо-режим (выключение - клавишей W в Mr Gluk Reset Service). By default 71680 t-states are in frame again, with turbo on though (switch it off with W key in Mr Gluk Reset Service). + в Mr Gluk Service (6.4) исправлено выключение турбо-режима при выходе в бейсик и др. Mr Gluk Reset Service (6.4) fixed to correctly set turbo mode when in quits to BASIC etc. General Sound ROM v1.05a (с) Stinger, 1997, bugfixed by psb & Evgeny Muchkin, 2007. В данной версии прошивки исправлены глюки версии 1.04 Beta. 1. Глюк с модулями, в которых >= 63 паттерна (klisje.mod, tranceillusion.mod). 2. Глюк со скоростью проигрывания ПОСЛЕДНЕЙ ноты модуля, её скорость выставлялась стандартной, во многих модулях при зацикливании была заметна задержка (напр., technostyle(z).mod). Более того, при зацикливании не на 1ю позицию, скорость все равно выставлялась стандартной! 3. Пофиксена неправильная скорость проигрывания сэмплов. На некоторых модулях было заметно, что сэмплы играли немного быстрее чем надо (напр., EightMayDay.mod). 4. При начале проигрывания модуля GS сообщал, что играет какая-то нота, даже если в канале ничего не играло (команда #64 возвращала не 127). 5. Добавлена команда для плееров: #6A - Set player mode. После этой команды GS перестанет обращать внимание на команду останова в модуле (ком. F00). Полезно для некоторых модулей (bst.mod). Формат команды: SD #01 ;#01 - On, #00 - Off SC #6A WC 6. Встроен релупер для модулей. Раньше, если в модуле играл сэмпл, длина лупа которого была слишком маленькой (десятки-сотни байт), GS тормозил или зависал. После этой команды сэмплы в загружаемом модуле фиксятся и GS не тормозит. Формат команды: SD MinLoopLen_Low SC #6B WC SD MinLoopLen_High Параметр MinLoopLen задается в СЛОВАХ и может быть в диапазоне от 0 до 16384 (0 - релупер выключен). Возможен короткий формат команды: SC #6B WC SC ... ;следующая команда GS В этом случае длина поумолчанию будет 512 слов. ВНИМАНИЕ! Настройки команд #6A и #6B сбрасываются только аппаратным RESET или командой #F4 (командой #F3 не сбрасываются!). p.s. В прошивке по смещению #0004 находится номер версии в BCD формате; по смещению #0100 находятся оригинальные копирайты (3 строки по 24 символа); по смещению #0800 находится информация о патче, строка заканчивается 0. p.p.s. Для работы старых плееров в новых режимах (п.5 и 6), достаточно перед их запуском дать из бейсика команды: OUT 179,1 OUT 187,106 OUT 187,107 p.p.p.s. Хочется выразить особую благодарность следующим людям: Stinger: за прошивку и доступные исходники, Aprisobal: без SjASMPlus не было бы ничего этого, Evgeny Muchkin: за всяческое содействие при создании патча, Caro: за IDA и моральную поддержку, SMT & Alone Coder: за UnrealSpeccy (и за исправление глюков в нем!;), Half Elf: за плагины к фару, n1k-o & Manwe: за консультации по mod'ам. ---------------------------------------------------------------------- UnrealSpeccy 0.36.7 by SMT ---------------------------------------------------------------------- contents 1. features 2. system requirements 3. keys in emulator 4. bugs and incompatibilities 5. greets 6. license ---------------------------------------------------------------------- features cpu Z80: all (un)documented commands and flags memory Pentagon 128/512/1024 and 48K ROM Scorpion 256/1024 RAM and 64K ROM Scorpion PROF-ROM with SMUC support (128/256/512K) KAY-256/1024 and 64K ROM Profi 1024 RAM/ROM and memory mapper ATM TURBO 1 v4.50 512/1024 RAM, 64-1024K ROM ATM TURBO 2+ v7.10 128/512/1024 RAM, 64-1024K ROM cache 16/32K CMOS/RTC: russian chip (512Bu1, 64 bytes, 1st day is monday) or pc-compatible (DALLAS, 256 bytes, 1st day of week is sunday) SMUC RTC and NVRAM (24LC16) sound beeper, tape saving and loading tones AY-3-8910/YM2149: excellent sound emulation, including digital and unusual effects, parallel ports on R14/R15 are not emulated Turbo-AY (Turbo-Sound): two AY(or YM) chips by PoS and NedoPC schemes TurboSound 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 samples with volumes and frequencies taken from corresponding AY registers and 'pseudo-turbo' - two parallel YM chips with some phase shift two covoxes - Pentagon (port #FB) & Scorpion (port #DD) SounDrive saving sound to WAV or VTX (VTX - good format for AY sound, much more 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-player General 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-level emulation. Low-level emulation is useful for programs altering the firmware player and using second Z80 for their own needs. In general, use BASS for games, and low-level emulation for advanced sound/music editors (RIFF tracker) video several video drivers, from simple and fastest to complex bi-linear filtering, that upsamples Spectrum display to 512x384 * 64 colors; 'noflic' filter is specially for programs fast switching two screens to get more colors; several chunky filters for 21st century demos amazing video filter: Anti-Text64. Designed for reading e-zines. It converts 4x8 fonts to 8x8 or 8x16 on the fly and saves your eyes multicolors are fixed for Pentagon & Scorpion, 1T screen update for all border effects able to emulate scorpion timings, including scorpion border update nopaper mode for debugging border effects flash-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 modes Pentagon 384x304 mode [see ZX-Guide#2, AlCoNews#32] Pentagon color-per-pixel mode [see Info Guide#8, #9] hardware multicolor attribute port #FF tune-up video/sound with hotkeys change 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 in fast (or slow) games in very wide range for comfortable playing alt+grey*, grey-, grey+ selects soundchip (AY/YM) and stereo mode (ABC/ACB), or palette beta 128 disk interface implemented all FDC WD1793 commands, including read/format track traps for read/write sector - more then 256 times speedup tape full TAP and TZX support CSW support tape browser auto-start tape when accessing to ROM load routine fast loading: UnrealSpeccy is able to recognize loader logic and 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 like they used the same idea in RS 0.90.38... For really fast loading, also choose 'normal' video driver IDE UnrealSpeccy is able to use KAY, SCORPION and ATM-2 IDE interfaces with two devices on it (hard disks or CD-ROMs) for hard disks you may use image file or Spectrum drive, connected to computer. CD-ROM requires physical or windows-level emulated device schemes supported: Nemo - controller for ZX-BUS manufactured by Nemo and NedoPC ATM - ATM TURBO 2+ v7.10 Nemo(A8) - Nemo scheme modification: uses A8 instead of A0 to select high/low byte of 16bit data (easy to transfer sector with just two commands INIR:INIR) SMUC - IDE controller for ZS Scorpion modem ISA modem, configured to use COM1 ports 03F8-03FF translated to Spectrum's ports #F8EF-#FFEF. Modem interrupt (translated to Spectrum NMI) is not emulated Host computer should have installed windows driver for real modem. At least ping/dns by Kamil Karimov tested and works fine with empty 'modem initialization string' input devices fully customizable keyboard copy text from clipboard via emulation of Spectrum keyboard AY-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 keyboard kempston joystick on mouse (joystick will follow mouse cursor) mouse wheel and buttons can be bound to any zx keys or kempston PC joystick/gamepad can be bound to any zx keys or kempston sticky keys mode [stolen from ZX_Emul, read description there] autofire (with adjustable key and period) files reading: SP, SNA and Z80 (all versions, 48k and 128k) TAP, TZX, CSW FDI, TRD, SCL, TD0, UDI if disk image does not contain boot.B, it may be appended. Disk images for every drive may be loaded automatically at start of UnrealSpeccy HOBETA format - appends file to existing disk; if no disk, then empty TR-DOS disk will be created. Best use with command line: unreal.exe prog.$B prog.$C <- will be placed on same disk You can also load it from 'F3' dialog, but only by one file writing: SNA 48k and 128k TRD, FDI, UDI TD0 (saved unpacked, so expect saved file larger than loaded) SCR, BMP (screenshots) WAV, VTX disk images converter: emulator can open disk image in any format (TRD/TD0/FDI/SCL/UDI) and save it to any other format leds 1. AY volume/status. Just for fun. White color - tone, yellow - noise, green - envelope; also shows YM2203 and GS volumes 2. perfomance leds. One displays how much Z80 t-states is between two interrupts. While watching some demo you can see how much time takes one or another effect. Second led shows PC framerate - at normal speed it must be 50. If it is less, then your CPU is too slow, and sound may be jerky - try to select faster video driver, disable some devices, increase skipframe or decrease t-states per int. When running on max speed, framerate shows how fast you computer is. For example, 800 fps is 16 times faster than Spectrum, 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 keyrows are - and A-G. is an exit, but why program scans - ? I've pressed , and I saw that now program queries -

. After pressing A+P, program queries -. When pressing A+P+X active keyrow areonly -. So, I've found cheat without digging in program code! (Another way was to set breakpoint on reading port #FE and analyze code nearby) 4. loading led. When saving/loading from disk, emulator shows blue or red diskette. When formatting track, yellow disk is displayed. When loading from tape, emulator displays cassette picture and progress for current block (or 'PS' - tape silence) 5. local time - for those ZX Spectrum fans, who spend all their time with virtual Spectrum 6. on-screen watches - display used RAM and ROM banks in last frame, count user-defined expressions 7. using leds on AT keyboard to display AY amplitude peaks leds look strange when flash-color is enabled. It's not a bug monitor software that in PC world is called 'debugger', in Spectrum world is often called 'monitor' find text or code. Using mask: code matches when ((code & mask) == (pattern & mask)) unlimited number of code breakpoints conditional breakpoints of any complexity, uses C-like expression syntax (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 memory areas) built-in Z80 assembler/disassembler save-load memory blocks disk editor ripper'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 window hotkeys for location instruction operand in Z80 or dump window on-screen watches: show memory areas addressed by register pairs GUI all 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 use HEX addresses. Delimiters for numbers are space, comma, colon, semicolon - so POKEs can be cut'n'pasted from any cheats collection loading from archives. Now supported: CAB,ZIP,RAR. You can add your own archivers to INI file ---------------------------------------------------------------------- system requirements Windows 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 functionality Celeron-266 CPU for Profi/Pentagon/ATM/Anti-Text64 hi-res modes Celeron-400 CPU for GS low-level emulation UnrealSpeccy eats only 12Mb of RAM, so if you've started Windows, then memory is enough 2D accelerared video card with hardware support of video overlays and color keying for overlay modes 3D accelerared video card for hardware chunky bilinear filter 2 Mb of video memory in fullscreen 4 Mb of video memory for windowed mode 16-bit sound card [optional, but recommended] if you have such hardware, but emulator runs slow, try the following: 0. install latest directX and videocard drivers 1. increase sound buffer size (especially for Win95) in INI file 2. select video filter='small', video driver='ddraw' 3. disable vsync 4. set 'ShareCPU=0' in INI file 5. do not use General Sound low-level emulation 6. do not use YM2203 7. set 'skipframe=4' in INI file 8. 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 emulator these are default keys, can be changed in INI file Ctrl-F1 monitor Shift-ESC only for windowed mode: give mouse to emulator or to MS Windows Alt-F1 help on keys F1 options/GUI F2 write snapshot/disk image Alt-F2 quicksave to qsave1.sna Ctrl-F2 quicksave to qsave2.sna Shift-F2 quicksave to qsave3.sna F3 read snapshot/tape/disk image Alt-F3 quickload from qsave1.sna Ctrl-F3 quickload from qsave2.sna Shift-F3 quickload from qsave3.sna (SHIFT+)F4 select video driver (filter) Alt-F4 exit emulator F5 start/stop saving sound (WAV or VTX formats). May be used from monitor: set breakpoint to start/stop routines and save; when saving to vtx, start and end silence are wiped F6 enter POKE(s) Alt-F6 search in memory for changed values (cheats, etc) F7 start/stop tape Shift-F7 tape browser Alt-F8 screenshot F9 quicksave all altered disk images and CMOS Alt-Shift-F11 NMI Alt-F11 NMI to cache Ctrl-F11 NMI to TR-DOS ("magic") F12 reset to default mode, as specified in INI file Ctrl-Shift-F12 reset to basic-128 Ctrl-F12 reset TR-DOS (128) Shift-F12 reset to 48 basic, but port 7FFD unlocked Alt-Shift-F12 reset to 48 basic, port 7FFD locked Alt-F12 reset to system ROM Ctrl-Alt-F12 reset to cache pause/break pause grey/ leds on/off grey* select parameter to change: t-states/int (speed), fix, etc... Alt+grey* select parameter to change: AY/palette grey+,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/off Alt-Ctrl-Z toggle ATM XT(AT)-keyboard controller on/off Alt-Enter toggle full-screen mode Alt-Shift-Ins copy text from clipboard to keyboard buffer Alt-1 set window size to 1x scale in windowed mode Alt-2 set window size to 2x scale, useful for hardware-stretched modes like overlay and blitter Alt-3 maximize window keys in monitor (CTRL,SHIFT,ALT+)F1,F2,F3,F5,F11,F12 - see above Ctrl-F1 exit, run program F7 step F8 trace, skip calls and loops F9 show Spectrum screen Shift-F9 show alternative 128k screen Alt-F9 show screen until painted point with border, mc and 2-scr effects F11 run program until address (SP) TAB next window SHIFT-TAB previous window Alt-D toggle text/hex dump Alt-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 file Alt-W save memory block to file Alt-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 tool Alt-O configure on-screen watches Alt-U disasm to file Alt-S cycle screenshot (ray-painted) / screendump (screen memory) / watches Alt-F render current frame to video buffer without border and MC effects Ctrl-U set user-defined watch address Ctrl-L view labels, visible for Z80 in current memory state Ctrl-J select and go to label Alt-C breakpoints manager Alt-Y switch active sound chip in Turbo-Sound mode manager can handle 3 types of breakpoints: 1. conditional breakpoints and on-screen watches are using C expression syntax. operators (in priority order): () ! ~ M(x) -> * % / + - >> << > < == = <= >= != & ^ | && || operands: a,b,c,d,e,h,l,bc,de,hl - common registers a',b',c',d',e',h',l',bc',de',hl' - alternative registers ix,iy,pc,sp,i,r - control registers FD - 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 - right characters - 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 to non-intuitive operator's precedence, e.g. out & 0FF == 0FE is treated as 'out & (0FF == 0FE)' <- always 0 M(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 to !(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 same M(pc)==0CB && pc->1 >= 10 && pc->1 <= 17 - set break on executing instruction "rl " I hope, these examples will be enough to get idea note: double-click on breakpoint to edit it 2. execution breakpoints (also set in CPU window by pressing SPACE). In manager window it is easy to setup breakpoint on execution range like 6000-FFFF 3. breakpoints on reading/writing memory. Similar to execution breakpoints, but have flags "R" and "W" to issue interrupt on reading/writing memory address (flags may be set together) monitor: registers window Cursor select register ENTER,0-F change register Ctrl+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,IFF2 Alt+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 window monitor: CPU window F4 trace to cursor Alt-F7 find text Ctrl-F7 find code with mask HOME go to PC Ctrl-G go to address SPACE set/reset breakpoint under cursor ENTER edit Z80 instruction, opcode bytes or cursor address A-X assemble new Z80 instruction Z set PC to cursor Ctrl-1,.,Ctrl-8 save current position to slot 1-8 1-8 save current position to stack, go to saved position in slot 1-8 Backspace restore position from jumpstack ' push cursor position and go to instruction operand ; jump to instruction operand in data window Ctrl-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 window Alt-F7 find text in memory / disk track Ctrl-F7 find code with mask in memory / disk track Cursor,Home,End,PgUp,PgDn move Ctrl-G go to address Ctrl-M select memory editor Ctrl-V select disk editor (physical track) Ctrl-O select disk editor (logical sectors) Ctrl-T select disk/track/sector in diskeditor Ctrl-TAB move to hex/ascii Ctrl+S,P,B,D,H,X,Y go to SP,PC,BC,DE,HL,IX,IY other keys edit monitor: Beta 128 window here is a typical FDC indicator content CD:1820 STAT:21 SECT:09 T:01/01 S:3C/00 first line is command and data register (cmd18,data20 - seek track 20) 2nd line - status register 3rd line - sector register 4th line - actual FDD head position and track register 5th line - Beta disk system register and DRQ/INTRQ port ---------------------------------------------------------------------- bugs and incompatibilities some programs, such as Manic Miner and Lode Runner, require old 48K ROM (1982.rom), while some other programs require ZX 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 enabled Profi service ROM can work only when all TR-DOS delays are enabled Bumpy does not work in default configuration, it tries to read port #FFDF for kempston joystick - so disable kempston mouse before playing [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 shadow monitor is not designed for this situation and may crash CacheVox by AlCo requires TR-DOS delays enabled and [BETA128] IL=1 If 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.rar Download xBIOS for ATM Turbo2+ from http://atmturbo.nedopc.com/ Get WNASPI32.DLL from Ahead Nero or from Ahead website BASS.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 in UnrealSpeccy'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 ---------------------------------------------------------------------- license UnrealSpeccy is completely freeware. You may use this emulator and its sources without any restrictions. You may use the sources 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 port emulator to any other platform (but there are many MSVC-specific language constructions, so it's doubtful that you can compile it with another compiler) E-mail of current developer: alone_coder!mail.ru, dmitry.alonecoder!gmail.com Send me bug reports, ideas, and changed source lines. ---------------------------------------------------------------------- UnrealSpeccy 0.36.7 by SMT ---------------------------------------------------------------------- содержание 1. возможности 2. требования к системе 3. управляющие клавиши эмулятора 4. несовместимость 5. приветы и благодарности 6. лицензия ---------------------------------------------------------------------- возможности процессор Z80: все (не)документированные команды и флаги модели памяти Pentagon 128/512/1024 с 64K ПЗУ Scorpion 256/1024 с 64K ПЗУ Scorpion ПрофПЗУ с поддержкой SMUC (128/256/512K) KAY-256/1024 с 64K ПЗУ Profi 1024 ОЗУ/ПЗУ с memory mapper'ом ATM TURBO 1 v4.50 512/1024 ОЗУ, 64-1024K ПЗУ ATM TURBO 2+ v7.10 128/512/1024 ОЗУ, 64-1024K ПЗУ кэш 16/32K CMOS/часы(RTC): советская микросхема (512ВИ1, 64 байта, 1-й день - понедельник) или микросхема из IBM PC (DALLAS, 256 байт, 1-й день - воскресенье) часы и энергонезависимое ОЗУ (NVRAM) (24LC16) контроллера SMUC звук бипер и звук магнитофона AY-3-8910/YM2149: точная эмуляция, включая цифровой звук и нестандартные эффекты, но параллельные порты на R14/R15 не эмулируются Turbo-AY (Turbo-Sound): 2 микросхемы AY(или YM) по схеме PoS или NedoPC TurboSound FM: 2 микросхемы YM2203 (6 AY каналов + 6 FM каналов) режим 'use digital samples' (отсутствующий на реальном Спектруме): AY-музыка через цифровой плейер - играются три сэмпла с громкостями и частотами из соответствующих регистров AY режим 'pseudo-turbo': 2 запараллеленных микросхемы YM со сдвигом по фазе два ковокса - Pentagon (порт #FB) и Scorpion (порт #DD) SounDrive запись звука в WAV или VTX (VTX - хороший формат для AY звука, гораздо плотнее, чем PSG, но для него требуется lha.exe где-либо в %PATH%) General Sound - плейер MOD и звуковых эффектов через библиотеку BASS. Можно сохранить музыку, чтобы затем слушать её во внешнем плейере низкоуровневая эмуляция General Sound (внутренний Z80 на 12MHz, 512Kb внутреннего ОЗУ, внутренние порты и ЦАПы) BASS даёт более высокое качество и больше каналов, чем низкоуровневая эмуляция. Низкоуровневая эмуляция нужна для программ, подменяющих фирменный плейер и использующих Z80 для своих целей. На практике BASS рекомендуется для игр, а низкоуровневая эмуляция - для продвинутых музыкальных/звуковых редакторов (RIFF tracker) графика множество фильтров, от быстрого simple до билинейной фильтрации, масштабирующей спектрумовское изображение до 512x384 с 64 цветами; фильтр 'noflic' для программ, которые быстро переключают два экрана, чтобы получить больше цветов; несколько чанковых фильтров для демок XIX века замечательный фильтр 'Anti-Text64'. Предназначен для чтения прессы. На лету заменяет шрифты 4x8 на более приятные для глаз шрифты 8x8 и 8x16 настройки Pentagon и Scorpion для мультиколорных эффектов, причём бордер обновляется с точностью до такта для эмуляции скорпионовских бордерных эффектов имеется режим обновления бордера раз в 4 такта режим nopaper для отладки бордерных эффектов flash-color (в каждом знакоместе при включенном бите FLASH можно выбрать один из 128 цветов ink на чёрном фоне) режимы высокого разрешения: Pentagon 512x192, Profi 512x240, ATM (работают только с фильтром 'double') цветные видеорежимы ATM-TURBO (только с фильтром 'double'): текстовый 80x25, EGA 320x200, мультиколор 640x200. Для смены шрифта текстового режима поместите SGEN.ROM в папку unreal. Не включайте border=none в видеорежимах ATM режим 384x304 компьютера Pentagon [см. ZX-Guide#2, AlCoNews#32] режим "цвет на точку" компьютера Pentagon [см. Info Guide#8, #9] аппаратный мультиколор порт атрибутов #FF настройка графики и звука горячими клавишами параметры графики (число тактов в кадре и в строке) выбираются и настраиваются клавишами grey+, grey-, grey* на цифровой клавиатуре t-states/frame (число тактов в кадре) позволяет подобрать скорость в слишком быстрых (или слишком медленных) играх комбинации alt+grey*, grey-, grey+ выбирают звуковой сопроцессор (AY/YM) и стереорежим (ABC/ACB), или же палитру дисковый интерфейс Beta 128 все команды контроллера ВГ93 (WD1793), включая чтение/запись дорожки перехват чтения/записи секторов - ускорение более чем в 256 раз магнитофон полная поддержка TAP и TZX поддержка CSW выбор файла (tape browser) автозапуск ленты при обращении к стандартной процедуре чтения быстрая загрузка: UnrealSpeccy может распознать логику загрузчика и ускорить его путём пропуска циклов задержек и ожидания фронтов. Разумеется, UnrealSpeccy при этом не сбивает тайминги, так что для быстрой загрузки требуется включить max speed (NumLock). Таким образом, любую 128K игру можно загрузить за 10-20 секунд. Эта хитрость разработана независимо от RAMSOFT, но похоже, что RS 0.90.38 работает аналогичным образом. Для действительно быстрой загрузки включите видеофильтр 'normal' IDE UnrealSpeccy эмулирует IDE-интерфейсы компьютеров KAY, SCORPION и ATM-2 с двумя устройствами типа жёсткий диск/CD-ROM вместо реальных жёстких дисков можно использовать файл-образы. CD-ROM эмулируется через реальное устройство или через виртуальное, работающее на уровне операционной системы эмулируемые схемы: Nemo - контроллер для шины ZX-BUS, производившийся Nemo и NedoPC ATM - ATM TURBO 2+ v7.10 Nemo(A8) - изменение схемы Nemo: использует A8 вместо A0, чтобы выбирать старший/младший байт 16-разрядного слова (можно считать сектор двумя командами INIR:INIR) SMUC - IDE-контроллер для компьютера ZS Scorpion модем Внутренний ISA-модем, настроенный на COM1 (порты 03F8-03FF, транслируемые на спектрумовские порты #F8EF-#FFEF). Прерывание от модема (NMI на Спектруме) не эмулируется. Требуется установить драйвер модема в Windows. Программа ping by Kamil Karimov проверена и работает при пустой строке инициализации модема (modem initialization string) устройства ввода полностью настраиваемая клавиатура вставка текста из буфера обмена через эмуляцию спектрумовской клавиатуры AY-mouse (мышь от КОРВЕТа, подключённая к порту A звукового сопроцессора) kempston mouse с настраиваемой скоростью и опцией обмена кнопок, с поддержкой колеса (D7..D4 в порту кнопок либо как клавиши UP/DOWN) kempston joystick на клавиатуре kempston joystick на мыши (джойстик следует за курсором мыши) колесо и кнопки мыши можно привязать к любым клавишам клавиатуры Спектрума или кемпстон-джойстика джойстик для PC можно привязать к любым клавишам клавиатуры Спектрума или кемпстон-джойстика режим залипших клавиш (sticky keys) [взято из ZX_Emul, см. его описание] autofire (настраиваемая клавиша, настраиваемый период) файлы читаются: SP, SNA и Z80 (все версии, 48k и 128k) TAP, TZX, CSW FDI, TRD, SCL, TD0, UDI если образ диска не содержит boot.B, можно его автоматически добавлять. Можно использовать загрузку образов дисков для каждого из дисководов при запуске эмулятора формат HOBETA - файл добавляется на существующий диск; если нет диска, создаётся пустой TR-DOS диск. Удобно грузить из командной строки: unreal.exe prog.$B prog.$C <- будут помещены на один диск Можно грузить хобетные файлы через меню 'F3', но только по одному файлу записываются: SNA 48k и 128k TRD, FDI, UDI TD0 (записывается без сжатия, поэтому записанный файл, скорее всего, будет больше считанного) SCR, BMP (скриншоты) WAV, VTX преобразование форматов: эмулятор может открыть образ диска в одном из форматов (TRD/TD0/FDI/SCL/UDI) и записать его в другом формате индикаторы 1. громкость/состояние AY. Белый цвет - тон, жёлтый - шум, зелёный - огибающая; также отображаются громкости YM2203 и GS 2. индикаторы performance. Один показывает, сколько тактов Z80 прошло между двумя прерываниями. При просмотре демонстраций можно увидеть, сколько времени занимает тот или иной эффект. Второе число - частота кадров PC - на нормальной скорости должно быть 50. Если оно меньше, то ваш компьютер слишком медленный, и вы слышите искажённый звук. Выберите более быстрый видеодрайвер и фильтр, отключите какие-нибудь устройства, увеличьте skipframe или убавьте t-states per int. При прогоне на max speed частота кадров показывает, насколько ваш компьютер быстр. Например, 800 fps - это в 16 раз быстрее, чем Spectrum, и средняя игра загрузится за 20 секунд. 3. индикатор input. Показывает, какие устройства ввода опрашиваются - клавиатура, мышь, кемпстон-джойстик. Для клавиатуры показываются опрашиваемые полуряды. Пример: я заметил, что в интро к KOL0BOK2 активны полуряды - и A-G. - это выход, но почему программа опрашивает -? Я нажал и увидел, что теперь программа опрашивает -

. После нажатия A+P программа опрашивает -. После нажатия A+P+X активным остаётся только полуряд -. Получается, что я нашёл cheat без залезания в код! (Можно было поставить breakpoint на чтение порта #FE и анализировать код в этом районе) 4. индикатор loading. При записи/чтении диска эмулятор показывает синюю/красную дискету. При форматировании дорожки дискета жёлтая. При загрузке с магнитофона эмулятор показывает кассету и прогресс считывания текущего блока (или 'PS' - пауза в записи) 5. local time - часы для тех, что проводит всё своё время с виртуальным Спектрумом 6. on-screen watches - показывает банки ОЗУ и ПЗУ, использованные в последнем кадре; вычисляет выражения, определённые пользователем 7. можно использовать лампочки на AT клавиатуре в качестве индикаторов громкости AY каналов индикаторы необычно окрашиваются в режиме flash-color. Это не глюк монитор-отладчик программа, называемая в мире PC "дебаггером", в мире Spectrum часто носит название "монитор" поиск текста или кода. Использует маску: совпадение, когда ((code & mask) == (pattern & mask)) неограниченное число точек останова (breakpoints) остановы по условию (conditional breakpoints) любой сложности, используют Си-подобный синтаксис (через них можно реализовать останов по чтению или записи в порт определённого значения, по определённой команде процессора и т.п.) остановы по обращению к памяти (по чтению/записи/исполнению указанных областей памяти) встроенный ассемблер/дизассемблер Z80 сохранение-загрузка областей памяти редактор образа диска (диск-доктор) ripper's tool: для извлечения процедур с их данными. Показывает, какие байты были считаны/записаны, и сохраняет всё адресное пространство процессора, забивая неиспользованные адреса указанным байтом (по умолчанию #CF) горячие клавиши сохранения/восстановления положения курсора в окне дизассемблера горячие клавиши перехода по адресу, указанному в команде - в окно дизассемблера или в окно дампа on-screen watches: показывают области памяти, адресованные регистровыми парами графический интерфейс (GUI) все настройки, имеющиеся в INI-файле, можно изменять в GUI (но они не сохраняются, для постоянного изменения редактируйте INI-файл) легко вводимые POKE, если вы не хотите использовать монитор или шестнадцатеричную систему счисления. Разделители чисел - пробел, запятая, двоеточие, точка с запятой - так что можно копировать POKE прямо из коллекций cheat'ов чтение из архивов. Поддержаны: CAB,ZIP,RAR. Можете добавить свои архиваторы в INI файле ---------------------------------------------------------------------- требования к системе Windows 95 и выше, либо NT (не проверялось). Для работы с реальным HDD требуется Windows 2000/XP/2003. для работы UnrealSpeccy требуется: Pentium-166 CPU MMX для минимального функционирования Celeron-266 CPU для режимов высокого разрешения Profi/Pentagon/ATM/Anti-Text64 Celeron-400 CPU для низкоуровневой эмуляции GS UnrealSpeccy занимает всего 12Mb ОЗУ, так что если Windows запустился, то памяти хватает видеокарта с 2D ускорителем, поддерживающая video overlays и color keying for overlay modes видеокарта с 3D ускорителем для hardware chunky bilinear filter 2 Mb видеопамяти в полноэкранном режиме (fullscreen) 4 Mb видеопамяти в оконном режиме (windowed) 16-битная звуковая карта [не обязательна, но рекомендуется] Если вы имеете соответствующее железо, но эмулятор тормозит, то попробуйте следующее: 0. установите свежий directX и свежие дрова видеокарты 1. увеличьте размер sound buffer (особенно для Win95) в INI-файле 2. выберите video filter='small', video driver='ddraw' 3. отключите vsync 4. установите 'ShareCPU=0' в INI-файле 5. отключите низкоуровневую эмуляцию General Sound 6. отключите YM2203 7. установите 'skipframe=4' в INI-файле 8. установите 'Frame=30000' в INI-файле (если больше ничего не помогает) 9. отключите звук (без звука эмулятор работает значительно быстрее) Это должно помочь ---------------------------------------------------------------------- управляющие клавиши эмулятора перечислены клавиши по умолчанию, их можно сменить в INI-файле Ctrl-F1 монитор-отладчик Shift-ESC для оконного режима: отдать мышь эмулятору или системе Alt-F1 помощь по клавишам F1 настройки/GUI F2 записать снапшот/образ диска Alt-F2 записать снапшот qsave1.sna Ctrl-F2 записать снапшот qsave2.sna Shift-F2 записать снапшот qsave3.sna F3 загрузить снапшот/образ ленты/образ диска Alt-F3 загрузить снапшот qsave1.sna Ctrl-F3 загрузить снапшот qsave2.sna Shift-F3 загрузить снапшот qsave3.sna (SHIFT+)F4 выбрать видеодрайвер (фильтр) Alt-F4 выход из эмулятора F5 начать/закончить сохранение звука (WAV или VTX). Можно использовать из монитора: установите точки останова на начальных/конечных процедурах и записывайте; при записи vtx убираются паузы в начале и конце F6 ввести POKE (одно или много) Alt-F6 поиск изменённых значений в памяти (для cheat'ов и т.п.) F7 запустить/остановить ленту Shift-F7 выбор файла на ленте (tape browser) Alt-F8 записать скриншот F9 сохранить все изменённые образы диска и содержимое CMOS-часов Alt-Shift-F11 NMI Alt-F11 NMI в кэш Ctrl-F11 NMI в TR-DOS ("magic") F12 сброс в режиме по умолчанию, указанном в INI Ctrl-Shift-F12 сброс в 128 бейсик Ctrl-F12 сброс в TR-DOS (128) Shift-F12 сброс в 48 бейсик с открытой верхней памятью Alt-Shift-F12 сброс в 48 бейсик в режиме 48k Alt-F12 сброс в системную страницу ПЗУ Ctrl-Alt-F12 сброс в кэш pause/break пауза grey/ индикаторы on/off grey* выбор параметра для изменения: t-states/int (скорость), fix... Alt+grey* выбор параметра для изменения: AY/палитра grey+,grey- настройка выбранного параметра (с SHIFT'ом более тонкая) NumLock максимальная скорость (max speed) on/off (в max speed нет звука) Alt-NumLock autofire on/off Alt-Ctrl-Z on/off контроллер клавиатуры XT(AT) компьютера ATM Alt-Enter полноэкранный режим on/off Alt-Shift-Ins вставить текст из буфера обмена через эмуляцию клавиатуры Спектрума Alt-1 установить размер окна 1x в оконном режиме Alt-2 установить размер окна 2x, полезно для режимов, использующих графический ускоритель, таких как overlay и blitter Alt-3 максимизировать окно клавиши в мониторе-отладчике (CTRL,SHIFT,ALT+)F1,F2,F3,F5,F11,F12 - см. выше Ctrl-F1 выход из монитора в программу F7 шаг (выполнить одну команду процессора) F8 шаг без трассировки подпрограмм и циклов F9 показать экран Спектрума Shift-F9 показать неактивный экран 128k Спектрума Alt-F9 показать экран до текущей отрисованной точки, с бордером, мультиколорами и двухэкранными эффектами F11 запустить программу с остановом в точке (SP) TAB следующая панель SHIFT-TAB предыдущая панель Alt-D переключение текст/дамп Alt-B изменить значение в порту 7FFD (выбор банка / экрана) Alt-M изменить значение дополнительного порта памяти (#1FFD,#FDFD,#DFFD,...) Alt-P ввести POKE (одно или много) Alt-F6 поиск изменённых значений в памяти (для cheat'ов и т.п.) Alt-R загрузить область памяти из файла Alt-W записать область памяти в файл Alt-F заполнить область памяти указанной последовательностью (чтобы скопировать область памяти, запишите её, потом загрузите) Alt-G состояние General Sound (двойной щелчок мышью - играть сэмпл) Alt-T выдиралка процедур (ripper's tool) Alt-O настройка on-screen watches Alt-U дизассемблирование в файл Alt-S переключение скриншот (отрисованный с мультиколорами и т.п.) / дамп экрана (изображение экранной памяти) / watches Alt-F отрендерить текущий кадр в видеобуфер без мультиколорных эффектов и т.п. Ctrl-U установить произвольный адрес для watch Ctrl-L показ меток, видимых для Z80 в текущем состоянии диспетчера памяти Ctrl-J переход по меткам Alt-C менеджер точек останова (breakpoints) Alt-Y переключить активный звуковой сопроцессор в режиме Turbo-Sound менеджер точек останова оперирует тремя типами точек останова: 1. условные остановы (conditional breakpoints) и on-screen watches используют Си-подобный синтаксис выражений. операции (перечислены в порядке убывания приоритета): () ! ~ M(x) -> * % / + - >> << > < == = <= >= != & ^ | && || операнды: a,b,c,d,e,h,l,bc,de,hl - основной набор регистров a',b',c',d',e',h',l',bc',de',hl' - альтернативный набор регистров ix,iy,pc,sp,i,r - прочие регистры FD - порт памяти #FD (также известен как #7FFD) OUT - порт, использованный в команде OUT (или 0FFFFFFFF, если OUT не было) IN - порт, использованный в команде IN (или 0FFFFFFFF, если IN не было) VAL - значение, считанное/записанное в порт (имеет смысл, только если OUT != 0FFFFFFFF или IN != 0FFFFFFFF) числа - шестнадцатеричные, должны начинаться с цифры: DFFD - нельзя, 0DFFD - можно коды символов - заключаются в апострофы ('A','B' и т.п.) Все вычисления производятся в 32-битной беззнаковой целой арифметике. Если вы плохо знакомы с Си, ставьте скобки, где возможно, т.к. приоритет операций неинтуитивен, например: out & 0FF == 0FE понимается как 'out & (0FF == 0FE)' <- всегда 0 M(x) - байт, считанный из адреса x (можно записать как x->0) '=' - то же, что '==' (для паскалистов) Примеры: (out+1) | (in+1) - IN/OUT в любой порт (in & 8001) == 0 - чтение клавиш от до !(out & 1) - любой вывод в порт #FE (out & 0FF)==0BB && (val==0F3 || val==0F4) - сброс General Sound (out & 0FF)==0FD && (val&7)==3 - установка 3-й банки памяти (FD & 7) == 3 - то же самое M(pc)==0CB && pc->1 >= 10 && pc->1 <= 17 - останавливается во время выполнения команды RL Надеюсь, этих примеров достаточно для понимания идеи Чтобы редактировать точку останова, щёлкните на ней мышью два раза 2. точки останова по адресам (также ставятся в окне дизассемблера кнопкой "пробел"). В окне менеджера точек останова легко расставить точки останова на большой диапазон памяти, например, 6000-FFFF 3. остановы по чтению/записи памяти. Похожи на остановы по адресам, но имеют флаги "R" и "W", означающие останов по чтению/записи указанных адресов памяти (можно установить оба флага) монитор: окно регистров стрелки выбор регистра ENTER,0-F изменение значения регистра Ctrl+A,F,B,D,H,S,P,X,Y,I,R,M,1,2 изменить A,F,BC,DE,HL,SP,PC,IX,IY,I,R,IM,IFF1,IFF2 Alt+S,Z,5,H,3,P,N,C переключить соответствующий флаг ' перейти в панель дизассемблера к адресу под курсором ; перейти в панель дампа к адресу под курсором монитор: панель дизассемблера (CPU window) F4 выполнение программы до адреса под курсором Alt-F7 поиск текста Ctrl-F7 поиск кодов с учётом маски HOME перейти на адрес PC Ctrl-G перейти на указанный адрес SPACE установить/снять точку останова под курсором ENTER редактировать команду Z80, её код или текущий адрес A-X ввести команду Z80 Z установить PC на адрес под курсором Ctrl-1,.,Ctrl-8 запомнить адрес курсора в спецячейку 1..8 1-8 запомнить адрес курсора в спецстеке и перейти к адресу, ранее запомненному в спецячейке 1..8 Backspace вернуть курсор по запомненному в спецстеке адресу ' запомнить адрес курсора в спецстеке и перейти в панели дизассемблера к адресу, указанному в команде под курсором ; перейти из панели дизассемблера в панель дампа к адресу, указанному в команде под курсором Ctrl-A чтение меток из XAS или ALASM, используя 3 метода: 1. XAS7: ассемблер должен лежать в банке 6 (или #46 для Pentagon-512) 2. ALASM: версия 4.42-5.0x должна лежать в 128k памяти (банки 1-7) 3. ALASM+STS: STS должен лежать в банке 7 (или #47 для Pentagon-512) монитор: окно дампа (memory window) Alt-F7 поиск текста в памяти / дорожке диска Ctrl-F7 поиск кодов с учётом маски в памяти / дорожке диска стрелки,Home,End,PgUp,PgDn движение курсора Ctrl-G перейти на указанный адрес Ctrl-M включить редактирование памяти Ctrl-V включить редактирование диска (физической дорожки) Ctrl-O включить редактирование диска (логических секторов) Ctrl-T выбор диска/дорожки/сектора при редактировании диска Ctrl-TAB переход между дампом и текстом Ctrl+S,P,B,D,H,X,Y перейти по адресу SP,PC,BC,DE,HL,IX,IY прочие клавиши редактирование монитор: панель дискового интерфейса Beta 128 здесь обычный набор индикаторов дискового контроллера CD:1820 STAT:21 SECT:09 T:01/01 S:3C/00 первая строка - команда и регистр данных (1820 - переход к дорожке #20) 2-я - регистр состояния (status) 3-я - регистр сектора 4-я - реальное положение головки дисковода и содержимое регистра дорожки 5-я - системный регистр Beta disk и порт для чтения DRQ/INTRQ (порт #ff) ---------------------------------------------------------------------- несовместимость некоторые программы, такие как Manic Miner и Lode Runner, требуют старое 48K ПЗУ (1982.rom), некоторые другие требуют ПЗУ от ZX Spectrum 128 (48for128.rom + 128tr!.rom) некоторые TR-DOS программы (Unreal Megademo by KSA, Street Fighter) работают только если перехват процедур TR-DOS (TR-DOS traps) выключен и включены задержки (delays) сервисное ПЗУ Profi работает только при включенных задержках TR-DOS Bumpy не работает в конфигурации по умолчанию, т.к. пытается читать кемпстон-джойстик через порт #FFDF - выключайте kempston mouse перед запуском этой игры [bug found by Paul Pavlov] sounddrv=wave не работает на CTSB128PCI (Creative Sound Blaster) из-за глюка в драйверах этой звуковой карты. [bug found by Nuts] некоторые адвентюры, созданные в ABS (ALIEN.SCL, LENIN.SCL) не работают на TR-DOS 5.04TM, используйте версию 5.03 - самую совместимую [bug found by Paul Pavlov] Vixen 1,2,3 - несовместимы с SounDrive [bug found by Paul Pavlov] Fernandez - несовместимо с SounDrive [bug found by Shadow Maker] port #FF иногда не отвечает при SkipFrame!=0 (то же самое при SkipFrameMaxSpeed!=0 в режиме max speed) Кнопка 'MAGIC' на компьютере Scorpion генерирует NMI даже при PC < #4000, но теневой монитор не рассчитан на это и может сглючить CacheVox by AlCo требует включения TR-DOS задержек и [BETA128] IL=1 Если в эмуляторе после возвращения фокуса залипает клавиша, следует нажать Scroll Lock, деактивировать мерцающую клавишу, потом снова нажать Scroll Lock. Если в эмуляторе после возвращения фокуса неадекватно работают управляющие клавиши, следует нажать Enter, и работа клавиш исправится. Если эмулятор виснет при работе с General Sound, попробуйте DSPrimary=0. Если эмулятор вываливается при работе с General Sound, попробуйте GSType=Z80. Если Kempston Joystick не работает, войдите в меню, нажмите там NumLock, затем вернитесь из меню. Если звук плохой, попробуйте в .ini DSPrimary=1 (эмулятор может при этом неожиденно закрываться!) или SoundDrv=wave. Скриншоты кладутся в каталог эмулятора. Чтение-запись файла в отладчике - в текущем каталоге (который видно по F3). Качайте sys.trd (для дисковода B:) с http://alonecoder.narod.ru/zx/SYS.rar Качайте xBIOS для ATM Turbo2+ с http://atmturbo.nedopc.com/ Возьмите WNASPI32.DLL из Ahead Nero или с веб-сайта Ahead BASS.DLL v2.3 взят с http://www.un4seen.com/ ---------------------------------------------------------------------- приветы от SMT: * dj.Z, IMP и MIC - мне очень нравится ваша музыка ! * Nik-O и Fatal Snipe - за верность AY сцене * Hacker KAY - спасибо за самую точную информацию про AY/YM * Paul Pavlov - собрал самый (сейчас уже не самый) большой TR-DOS архив * Raul Gomez Sanchez (автор R80) * Stalker - спасибо за STS * Placebo, Extreme, Digital Reality, CBS - за качественные демки * V_Soft (Roman Scherbakov) - за формат Vortex * Sergey Bulba - за AY_Emul * Alone Coder - you keep Spectrum alive * Ian Luck - спасибо за BASS * SirX - просто привет * всем фанатам ZX Spectrum - Speccy is da best! особая благодарность людям, заинтересованным в развитии UnrealSpeccy и присылавшим информацию о железе и софте: * Maxim Vasilyev - присылал много багрепортов * Mac Buster - информация про дисковый интерфейс Beta 128 * Shiru Otaku - прислал GSPAK.ZIP * Alexey Kravchenko - прислал скорпионовские тайминги * Vitaliy Pigo - тестирование и замеры скорости * Alex Baskakov - помог с форматом TD0 * Alone Coder - прислал много информации о пентагоновском железе * Dexus - интегрировал поддержку YM2203 * Maksagor - информация про ATM * многие другие, кто присылал письма с благодарностями/предложениями и т.п. ---------------------------------------------------------------------- лицензия UnrealSpeccy распространяется совершенно свободно. Вы можете использовать эмулятор и его исходники без всяких ограничений. Вы можете использовать исходники UnrealSpeccy в своих эмуляторах. Вы можете выпускать исправленные/новые версии UnrealSpeccy. В этом случае вы не обязаны распространять исходный код (в отличие, например, от требований GNU Public License). Вы можете портировать эмулятор на любую другую платформу (но здесь много специфических для MSVC конструкций языка, поэтому сборка другим компилятором затруднительна) Адреса текущего разработчика: alone_coder!mail.ru, dmitry.alonecoder!gmail.com Все багрепорты, предложения и изменённые строчки присылайте сюда.