Add OPL4 playback and analyzer support
This commit is contained in:
@@ -0,0 +1,536 @@
|
||||
<HTML STYLE="width: {?x}px; height: {?y}px">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<HEAD>
|
||||
<TITLE>UnrealSpeccy: current key bindings</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="Gray" TEXT="white">
|
||||
|
||||
<a href="#mainkeys"> </a>
|
||||
|
||||
<CENTER> <H1> Emulator keys </H1> </ENTER>
|
||||
|
||||
<table border=2>
|
||||
<tr> <td> <B>{main.exit}</B> </td>
|
||||
<td> exit emulator </td> </tr>
|
||||
<tr> <td> <B>{main.settings}</B> </td>
|
||||
<td> configure emulator </td> </tr>
|
||||
<tr> <td> <B>{main.lockmouse}</B> </td>
|
||||
<td> bind mouse in windowed mode to kempston mouse</td> </tr>
|
||||
<tr> <td> <B>{main.monitor}</B> </td>
|
||||
<td> enter debugger </td> </tr>
|
||||
<tr> <td> <B>{main.selectfilter}</B> </td>
|
||||
<td> select video filter for output </td> </tr>
|
||||
<tr> <td> <B>{main.selectdriver}</B> </td>
|
||||
<td> select driver for filters, working through driver </td> </tr>
|
||||
<tr> <td> <B>{main.flictoggle}</B> </td>
|
||||
<td> toggle flic/noflic </td> </tr>
|
||||
<tr> <td> <B>{main.fullscreen}</B> </td>
|
||||
<td> toggle full-screen on/off (only for GDI, Overlay, or ddraw blitter video modes)</td> </tr>
|
||||
<tr> <td> <B>{main.pause}</B> </td>
|
||||
<td> pause </td> </tr>
|
||||
<tr> <td> <B>{main.selectfix}</B> </td>
|
||||
<td> select video parameter for tune-up </td> </tr>
|
||||
<tr> <td> <B>{main.selectsnd}</B> </td>
|
||||
<td> select sound parameter for tune-up </td> </tr>
|
||||
<tr> <td> <B>{main.incfix}</B> </td>
|
||||
<td> increase selected parameter </td> </tr>
|
||||
<tr> <td> <B>{main.decfix}</B> </td>
|
||||
<td> decrease selected parameter </td> </tr>
|
||||
<tr> <td> <B>{main.incfix10}</B> </td>
|
||||
<td> coarse increase selected parameter </td> </tr>
|
||||
<tr> <td> <B>{main.decfix10}</B> </td>
|
||||
<td> coarse decrease selected parameter </td> </tr>
|
||||
<tr> <td> <B>{main.leds}</B> </td>
|
||||
<td> toggle on-screen leds</td> </tr>
|
||||
<tr> <td> <B>{main.status}</B> </td>
|
||||
<td> toggle status line</td> </tr>
|
||||
<tr> <td> <B>{main.maxspeed}</B> </td>
|
||||
<td> toggle max. speed</td> </tr>
|
||||
<tr> <td> <B>{main.pokedialog}</B> </td>
|
||||
<td> show poke dialog</td> </tr>
|
||||
<tr> <td> <B>{main.starttape}</B> </td>
|
||||
<td> start tape </td> </tr>
|
||||
<tr> <td> <B>{main.tapebrowser}</B> </td>
|
||||
<td> show tape browser </td> </tr>
|
||||
<tr> <td> <B>{main.screenshot}</B> </td>
|
||||
<td> write screenshot </td> </tr>
|
||||
<tr> <td> <B>{main.shotclipbrd}</B> </td>
|
||||
<td> copy screenshot to clipboard </td> </tr>
|
||||
<tr> <td> <B>{main.reset}</B> </td>
|
||||
<td> reset to default mode </td> </tr>
|
||||
<tr> <td> <B>{main.reset128}</B> </td>
|
||||
<td> reset to 128K </td> </tr>
|
||||
<tr> <td> <B>{main.resetsys}</B> </td>
|
||||
<td> reset to service ROM </td> </tr>
|
||||
<tr> <td> <B>{main.reset48}</B> </td>
|
||||
<td> reset to 48K </td> </tr>
|
||||
<tr> <td> <B>{main.resetbasic}</B> </td>
|
||||
<td> reset to 48K basic with unlocked high memory </td> </tr>
|
||||
<tr> <td> <B>{main.resetdos}</B> </td>
|
||||
<td> reset to TR-DOS </td> </tr>
|
||||
<tr> <td> <B>{main.resetcache}</B> </td>
|
||||
<td> reset to cache </td> </tr>
|
||||
<tr> <td> <B>{main.nmi}</B> </td>
|
||||
<td> generate NMI </td> </tr>
|
||||
<tr> <td> <B>{main.nmidos}</B> </td>
|
||||
<td> select TR-DOS and generate NMI ("MAGIC" button) </td> </tr>
|
||||
<tr> <td> <B>{main.nmicache}</B> </td>
|
||||
<td> select cache and generate NMI </td> </tr>
|
||||
<tr> <td> <B>{main.help}</B> </td>
|
||||
<td> show this help </td> </tr>
|
||||
<tr> <td> <B>{main.save}</B> </td>
|
||||
<td> save disk or memory image </td> </tr>
|
||||
<tr> <td> <B>{main.load}</B> </td>
|
||||
<td> load disk or memory image </td> </tr>
|
||||
<tr> <td> <B>{main.savesound}</B> </td>
|
||||
<td> start sound recording </td> </tr>
|
||||
<tr> <td> <B>{main.qsave1}</B> </td>
|
||||
<td> quick-save to slot 1 </td> </tr>
|
||||
<tr> <td> <B>{main.qsave2}</B> </td>
|
||||
<td> quick-save to slot 2 </td> </tr>
|
||||
<tr> <td> <B>{main.qsave3}</B> </td>
|
||||
<td> quick-save to slot 3 </td> </tr>
|
||||
<tr> <td> <B>{main.qload1}</B> </td>
|
||||
<td> quick-load from slot 1 </td> </tr>
|
||||
<tr> <td> <B>{main.qload2}</B> </td>
|
||||
<td> quick-load from slot 2 </td> </tr>
|
||||
<tr> <td> <B>{main.qload3}</B> </td>
|
||||
<td> quick-load from slot 3 </td> </tr>
|
||||
<tr> <td> <B>{main.keystick}</B> </td>
|
||||
<td> toggle sticky-keys mode </td> </tr>
|
||||
<tr> <td> <B>{main.autofire}</B> </td>
|
||||
<td> toggle autofire mode </td> </tr>
|
||||
<tr> <td> <B>{main.saveram}</B> </td>
|
||||
<td> save RAM dump </td> </tr>
|
||||
<tr> <td> <B>{main.saveall}</B> </td>
|
||||
<td> save CMOS and unsaved diskette images </td> </tr>
|
||||
<tr> <td> <B>{main.xtkbd}</B> </td>
|
||||
<td> enable/disable ATM XT keyboard controller (emulation control keys will be disabled in this mode) </td> </tr>
|
||||
<tr> <td> <B>{main.pastetext}</B> </td>
|
||||
<td> copy text from clipboard to keyboard buffer </td> </tr>
|
||||
<tr> <td> <B>{main.memsearch}</B> </td>
|
||||
<td> search in memory for changed values (cheats, etc) </td> </tr>
|
||||
<tr> <td> <B>{main.size1}</B> </td>
|
||||
<td> set normal window size in windowed mode </td> </tr>
|
||||
<tr> <td> <B>{main.size2}</B> </td>
|
||||
<td> set double window size in windowed mode </td> </tr>
|
||||
<tr> <td> <B>{main.sizem}</B> </td>
|
||||
<td> maximize window in windowed mode </td> </tr>
|
||||
<tr> <td> <B>{main.tsutoggle}</B> </td>
|
||||
<td> toggle TSU layers </td> </tr>
|
||||
|
||||
</table>
|
||||
|
||||
<a href="#monitor_keys"> </a>
|
||||
|
||||
|
||||
<CENTER> <H1> Debugger Keys </H1> </CENTER>
|
||||
|
||||
<table border=2>
|
||||
|
||||
<tr> <td> <B>{mon.exit}</B> </td>
|
||||
<td> exit to system </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.emul}</B> </td>
|
||||
<td> back to emulation </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.settigns}</B> </td>
|
||||
<td> configure emulator </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.bpdialog}</B> </td>
|
||||
<td> breakpoints manager </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.gs}</B> </td>
|
||||
<td> general sound status dialog </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.pokedialog}</B> </td>
|
||||
<td> enter pokes </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.tapebrowser}</B> </td>
|
||||
<td> tape browser </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.reset128}</B> </td>
|
||||
<td> reset to 128K </td> </tr>
|
||||
<tr> <td> <B>{main.resetsys}</B> </td>
|
||||
<td> reset to service ROM </td> </tr>
|
||||
<tr> <td> <B>{mon.reset48}</B> </td>
|
||||
<td> reset to 48K </td> </tr>
|
||||
<tr> <td> <B>{mon.resetbasic}</B> </td>
|
||||
<td> reset to 48K basic with unlocked high memory </td> </tr>
|
||||
<tr> <td> <B>{mon.resetdos}</B> </td>
|
||||
<td> reset to TR-DOS </td> </tr>
|
||||
<tr> <td> <B>{mon.resetcache}</B> </td>
|
||||
<td> reset to cache </td> </tr>
|
||||
<tr> <td> <B>{mon.nmi}</B> </td>
|
||||
<td> generate NMI </td> </tr>
|
||||
<tr> <td> <B>{mon.nmidos}</B> </td>
|
||||
<td> select TR-DOS and generate NMI ("MAGIC" button) </td> </tr>
|
||||
<tr> <td> <B>{mon.nmicache}</B> </td>
|
||||
<td> select cache and generate NMI </td> </tr>
|
||||
<tr> <td> <B>{mon.help}</B> </td>
|
||||
<td> show this help </td> </tr>
|
||||
<tr> <td> <B>{mon.save}</B> </td>
|
||||
<td> save disk or memory image </td> </tr>
|
||||
<tr> <td> <B>{mon.load}</B> </td>
|
||||
<td> load disk or memory image </td> </tr>
|
||||
<tr> <td> <B>{mon.savesound}</B> </td>
|
||||
<td> start sound recording </td> </tr>
|
||||
<tr> <td> <B>{mon.qsave1}</B> </td>
|
||||
<td> quick-save to slot 1 </td> </tr>
|
||||
<tr> <td> <B>{mon.qsave2}</B> </td>
|
||||
<td> quick-save to slot 2 </td> </tr>
|
||||
<tr> <td> <B>{mon.qsave3}</B> </td>
|
||||
<td> quick-save to slot 3 </td> </tr>
|
||||
<tr> <td> <B>{mon.qload1}</B> </td>
|
||||
<td> quick-load from slot 1 </td> </tr>
|
||||
<tr> <td> <B>{mon.qload2}</B> </td>
|
||||
<td> quick-load from slot 2 </td> </tr>
|
||||
<tr> <td> <B>{mon.qload3}</B> </td>
|
||||
<td> quick-load from slot 3 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.screen}</B> </td>
|
||||
<td> show spectrum screen, as it present in video memory </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.altscreen}</B> </td>
|
||||
<td> show 128K spectrum screen at bank#7 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.rayscreen}</B> </td>
|
||||
<td> show painted screen area until crt-ray (with MC, border & 2-scr effects) </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.step}</B> </td>
|
||||
<td> trace single Z80 M1 cycle </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.stepover}</B> </td>
|
||||
<td> trace Z80 over loops, calls, etc... </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.exitsub}</B> </td>
|
||||
<td> trace until word in (PC) (designed for 'exit routine') </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.loadblock}</B> </td>
|
||||
<td> load memory block </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.saveblock}</B> </td>
|
||||
<td> save/disasm memory block </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.fillblock}</B> </td>
|
||||
<td> fill memory block with pattern </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.setbank}</B> </td>
|
||||
<td> write to port #7FFD </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.sethimem}</B> </td>
|
||||
<td> write to model-specific extended memory port </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.next}</B> </td>
|
||||
<td> next window </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.prev}</B> </td>
|
||||
<td> prev. window </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.dump}</B> </td>
|
||||
<td> toggle mode of dump window </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.rip}</B> </td>
|
||||
<td> activate ripper's tool </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.osw}</B> </td>
|
||||
<td> configure on-screen watches </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.scrshot}</B> </td>
|
||||
<td> toggle screenshot/screendump/watches </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.setwatch}</B> </td>
|
||||
<td> set user-defined watch address </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.switchay}</B> </td>
|
||||
<td> switch active AY (turbo-sound) </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.labels}</B> </td>
|
||||
<td> goto label </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mon.memsearch}</B> </td>
|
||||
<td> search in memory for changed values (cheats, etc) </td> </tr>
|
||||
|
||||
</table>
|
||||
|
||||
<CENTER> <H2> Debugger Keys - registers window </H2> </CENTER>
|
||||
|
||||
<table border=2>
|
||||
|
||||
<tr> <td> <B>{reg.left}</B> </td>
|
||||
<td> left </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.right}</B> </td>
|
||||
<td> right </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.up}</B> </td>
|
||||
<td> up </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.down}</B> </td>
|
||||
<td> down </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.edit}</B> </td>
|
||||
<td> edit current register </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.a}</B> </td>
|
||||
<td> edit register 'A' </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.f}</B> </td>
|
||||
<td> edit flags </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.bc}</B> </td>
|
||||
<td> edit BC </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.de}</B> </td>
|
||||
<td> edit DE </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.hl}</B> </td>
|
||||
<td> edit HL </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.pc}</B> </td>
|
||||
<td> edit PC </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.sp}</B> </td>
|
||||
<td> edit SP </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.ix}</B> </td>
|
||||
<td> edit IX </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.iy}</B> </td>
|
||||
<td> edit IY </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.i}</B> </td>
|
||||
<td> edit I </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.r}</B> </td>
|
||||
<td> edit R </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.im}</B> </td>
|
||||
<td> toggle interrupt mode </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.iff1}</B> </td>
|
||||
<td> toggle iff1 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.iff2}</B> </td>
|
||||
<td> toggle iff2 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.SF}</B> </td>
|
||||
<td> toggle flag SF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.ZF}</B> </td>
|
||||
<td> toggle flag ZF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.F5}</B> </td>
|
||||
<td> toggle flag F5 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.HF}</B> </td>
|
||||
<td> toggle flag HF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.F3}</B> </td>
|
||||
<td> toggle flag F3 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.PF}</B> </td>
|
||||
<td> toggle flag PF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.NF}</B> </td>
|
||||
<td> toggle flag NF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.CF}</B> </td>
|
||||
<td> toggle flag CF </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.codejump}</B> </td>
|
||||
<td> goto address in code window under cursor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{reg.datajump}</B> </td>
|
||||
<td> goto address in data window under cursor </td> </tr>
|
||||
|
||||
</table>
|
||||
|
||||
<CENTER> <H2> Debugger Keys - disasm window </H2> </CENTER>
|
||||
|
||||
<table border=2>
|
||||
|
||||
<tr> <td> <B>{cpu.findpc}</B> </td>
|
||||
<td> set cursor at PC </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.here}</B> </td>
|
||||
<td> trace to cursor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.findtext}</B> </td>
|
||||
<td> find string </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.findcode}</B> </td>
|
||||
<td> find code with mask </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.goto}</B> </td>
|
||||
<td> push cursor position and goto address </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.bpx}</B> </td>
|
||||
<td> breakpoint under cursor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.asm}</B> </td>
|
||||
<td> edit instruction </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.setpc}</B> </td>
|
||||
<td> set PC to cursor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.up}</B> </td>
|
||||
<td> up </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.down}</B> </td>
|
||||
<td> down </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.left}</B> </td>
|
||||
<td> left </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.right}</B> </td>
|
||||
<td> right </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.pgdn}</B> </td>
|
||||
<td> next page </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.pgup}</B> </td>
|
||||
<td> prev. page </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save1}</B> </td>
|
||||
<td> save cursor position to slot 1 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save2}</B> </td>
|
||||
<td> save cursor position to slot 2 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save3}</B> </td>
|
||||
<td> save cursor position to slot 3 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save4}</B> </td>
|
||||
<td> save cursor position to slot 4 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save5}</B> </td>
|
||||
<td> save cursor position to slot 5 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save6}</B> </td>
|
||||
<td> save cursor position to slot 6 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save7}</B> </td>
|
||||
<td> save cursor position to slot 7 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.save8}</B> </td>
|
||||
<td> save cursor position to slot 8 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest1}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 1 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest2}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 2 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest3}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 3 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest4}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 4 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest5}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 5 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest6}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 6 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest7}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 7 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.rest8}</B> </td>
|
||||
<td> push cursor position to jumpstack and restore cursor position from slot 8 </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.back}</B> </td>
|
||||
<td> pop cursor position from jumpstack </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.context}</B> </td>
|
||||
<td> push cursor position and goto instruction operand </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.datajump}</B> </td>
|
||||
<td> jump to instruction operand in data window </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.labels}</B> </td>
|
||||
<td> show labels on/off </td> </tr>
|
||||
|
||||
<tr> <td> <B>{cpu.importl}</B> </td>
|
||||
<td> menu for importing labels from XAS/ALASM </td> </tr>
|
||||
|
||||
</table>
|
||||
|
||||
<CENTER> <H2> Debugger Keys - memory/disk editor window </H2> </CENTER>
|
||||
|
||||
<table border=2>
|
||||
|
||||
<tr> <td> <B>{mem.left}</B> </td>
|
||||
<td> left </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.right}</B> </td>
|
||||
<td> right </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.up}</B> </td>
|
||||
<td> up </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.down}</B> </td>
|
||||
<td> down </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.pgup}</B> </td>
|
||||
<td> page up </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.pgdn}</B> </td>
|
||||
<td> page down </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.switch}</B> </td>
|
||||
<td> move between hex/ascii fields </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.stline}</B> </td>
|
||||
<td> goto start of line </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.endline}</B> </td>
|
||||
<td> goto end of line </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.findtext}</B> </td>
|
||||
<td> find text in memory / disk track </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.findcode}</B> </td>
|
||||
<td> find code with mask in memory / disk track </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.goto}</B> </td>
|
||||
<td> goto address </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.mem}</B> </td>
|
||||
<td> select memory editor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.diskphys}</B> </td>
|
||||
<td> select disk editor (physical track) </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.disklog}</B> </td>
|
||||
<td> select disk editor (logical sectors) </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.diskgo}</B> </td>
|
||||
<td> select drive/track/sector in diskeditor </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.pc}</B> </td>
|
||||
<td> goto PC </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.sp}</B> </td>
|
||||
<td> goto SP </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.bc}</B> </td>
|
||||
<td> goto BC </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.de}</B> </td>
|
||||
<td> goto DE </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.hl}</B> </td>
|
||||
<td> goto HL </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.ix}</B> </td>
|
||||
<td> goto IX </td> </tr>
|
||||
|
||||
<tr> <td> <B>{mem.iy}</B> </td>
|
||||
<td> goto IY </td> </tr>
|
||||
|
||||
</table>
|
||||
|
||||
</BODY></HTML>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
48.rom - оригинальная прошивка от ZX Spectrum 48k
|
||||
2006.rom - 48k прошивка 2006 года (отличается исправлением багов оригинала) - не для 128 бейсика!
|
||||
atm103rs.rom - прошивка ATM Turbo 1
|
||||
xBIOS132+sl.rom - прошивка ATM Turbo 2+
|
||||
bios_1_07_13 - BIOS 1.07.13 для ATM2+
|
||||
QC_3_05.rom - Quick Commander (вместо 128 бейсика)
|
||||
scorp295.rom - старая скорпионовская прошивка 2.95
|
||||
scorp_prof401.rom - профПЗУ 4.01 для Scorpion (с поддержкой SMUC)
|
||||
profi.rom - прошивка для Profi
|
||||
pentagon.rom - стандартная прошивка для pentagon basic 48, basic 128 с пунктом tr-dos в меню
|
||||
kay1024.rom - прошивка для KAY 1024, 2000, JV Kramis 0.3
|
||||
kay1024b.rom - прошивка для KAY 1024, 1998, JV Kramis 0.2
|
||||
trd503.rom - tr-dos 5.03
|
||||
trd504tm.rom - tr-dos 5.04tm
|
||||
bootgs.rom - прошивка для ngs (на базе gs1.05a)
|
||||
ts-bios.rom - BIOS for TS-Configuration (includes: TS BIOS Setup and start code, 128 basic ROM (32 kB), tr-dos 5.04T)
|
||||
|
||||
Дополнительные rom (не входят в компект)
|
||||
48for128.rom - 48k прошивка для 128 бейсика
|
||||
128tr!.rom - 128k прошивка с TR-DOS'ом наверху
|
||||
DOS6_10E.rom - TR-DOS с исправленными глюками и поддержкой рамдиска (см. Info Guide #7)
|
||||
GLUKPEN.rom - Mr Gluk Reset Service 6.5R (фикс для US0.37.1 - дискдоктор по reset+G и номер диска) (см. Info Guide #7)
|
||||
GLUKATM.rom - версия Глюка для ATM Turbo 2+ (на реале работать не может, нужна для разработки TR-DOS программ под ATM)
|
||||
@@ -0,0 +1,30 @@
|
||||
Tests:
|
||||
- check TheLink Turbo switching for Pentagon config
|
||||
|
||||
Bugs:
|
||||
- Wrong multicolor rendering: truncate tcpu to lower limit of attribute address
|
||||
- Add WnR=1 to CRAM and SFILE DMA, otherwise ignore
|
||||
- Incorrect exit from DEBUG in Bomber (paging?)
|
||||
- Probably incorrect DOS on/off behaviour with regard to RAM at #0000 (MEMCONFIG)
|
||||
- 3x and 4x renderers on Win7 crash Unreal
|
||||
|
||||
Missing features:
|
||||
- ld a,r and ld a,i tacts not recalculated for Turbo (op_ed.cpp.177 and op_ed.cpp.232)
|
||||
- leds
|
||||
- ATM3 wrong palette update in Personal Nightmare demo due to fine ATM3 port decode (PN uses coarse addressing)
|
||||
- NoFlic (in some renderers)
|
||||
- VDOS
|
||||
- other clones full compatibility
|
||||
- TheLink doesn't compile on TSconf (probably missing #EFF7 features)
|
||||
|
||||
To Do:
|
||||
- Save settings to .ini
|
||||
- Carry out Debugger into separate window
|
||||
- Add all models resources to Debugger
|
||||
- Save .avi using VFW
|
||||
- Add some workaround for TR-DOS timeouts on 7+ Turbo
|
||||
- Separate reset() and res_init() procedures
|
||||
- Add res_init() to SNA load when TS-conf active
|
||||
|
||||
X-factors:
|
||||
- Regular lags/glitches in when Process Explorer ON
|
||||
@@ -0,0 +1,676 @@
|
||||
----------------------------------------------------------------------
|
||||
UnrealSpeccy 0.37.7 by SMT and Others
|
||||
----------------------------------------------------------------------
|
||||
|
||||
contents
|
||||
|
||||
1. features
|
||||
2. system requirements
|
||||
3. command line
|
||||
4. keys in emulator
|
||||
5. bugs and incompatibilities
|
||||
6. greets
|
||||
7. license
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
features
|
||||
|
||||
|
||||
cpu
|
||||
Z80: all (un)documented commands and flags
|
||||
|
||||
|
||||
memory
|
||||
|
||||
Pentagon 128/512/1024 and 48K ROM
|
||||
TS-Configuration
|
||||
Scorpion 256/1024 RAM and 64K ROM
|
||||
Scorpion PROF-ROM with SMUC support (128/256/512K)
|
||||
KAY-256/1024 and 64K ROM
|
||||
ZX Evolution
|
||||
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 <B>-<SPACE> and A-G. <SPACE> is an exit, but why program
|
||||
scans <A>-<G> ? I've pressed <A>, and I saw that now program
|
||||
queries <Y>-<P>. After pressing A+P, program queries <CAPS>-<V>.
|
||||
When pressing A+P+X active keyrow areonly <B>-<SPACE>. 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
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
command line parameters
|
||||
|
||||
/i <file> specify custom INI file, default:
|
||||
emulator_executable_filename_without_extension.ini
|
||||
/l <file> specify labels file, default: user.l
|
||||
/b <file> specify breakpoints file, default: bpx.ini
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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)
|
||||
PG0, PG1, PG2, PG3 - TS-conf page registers for memory windows at #0000, #4000, #8000, #C000
|
||||
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)
|
||||
RD - address used in memory read operation
|
||||
WR - address used in memory write operation
|
||||
MDT - data read/written to memory
|
||||
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 <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 same
|
||||
M(pc)==0CB && pc->1 >= 10 && pc->1 <= 17
|
||||
- set break on executing instruction "rl <reg>"
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@@ -0,0 +1,710 @@
|
||||
----------------------------------------------------------------------
|
||||
UnrealSpeccy 0.37.7 by SMT and Others
|
||||
----------------------------------------------------------------------
|
||||
|
||||
содержание
|
||||
|
||||
1. возможности
|
||||
2. требования к системе
|
||||
3. командная строка
|
||||
4. управляющие клавиши эмулятора
|
||||
5. несовместимость
|
||||
6. приветы и благодарности
|
||||
7. лицензия
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
возможности
|
||||
|
||||
|
||||
процессор
|
||||
Z80: все (не)документированные команды и флаги
|
||||
|
||||
|
||||
модели памяти
|
||||
|
||||
Pentagon 128/512/1024 с 64K ПЗУ
|
||||
TS-Configuration
|
||||
Scorpion 256/1024 с 64K ПЗУ
|
||||
Scorpion ПрофПЗУ с поддержкой SMUC (128/256/512K)
|
||||
KAY-256/1024 с 64K ПЗУ
|
||||
ZX Evolution
|
||||
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
|
||||
активны полуряды <B>-<SPACE> и A-G. <SPACE> - это выход, но почему
|
||||
программа опрашивает <A>-<G>? Я нажал <A> и увидел, что теперь
|
||||
программа опрашивает <Y>-<P>. После нажатия A+P программа опрашивает
|
||||
<CAPS>-<V>. После нажатия A+P+X активным остаётся только полуряд
|
||||
<B>-<SPACE>. Получается, что я нашёл 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. отключите звук (без звука эмулятор работает значительно быстрее)
|
||||
|
||||
Это должно помочь
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
параметры командной строки
|
||||
|
||||
можно запускать эмулятор, указав следующие параметры командной строки:
|
||||
|
||||
/i <файл> указать собственный файл конфигурации, по умолчанию:
|
||||
имя_исполняемого_файла_эмулятора_без_расширения.ini
|
||||
/l <файл> указать файл меток, по умолчанию: user.l
|
||||
/b <файл> указать файл ловушек, по умолчанию: bpx.ini
|
||||
|
||||
кроме того после параметров можно указать список файлов, поддерживаемых
|
||||
эмулятором форматов для загрузки.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
управляющие клавиши эмулятора
|
||||
|
||||
перечислены клавиши по умолчанию, их можно сменить в 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)
|
||||
PG0, PG1, PG2, PG3 - регистры страниц для TS-conf для окон #0000, #4000, #8000, #C000
|
||||
OUT - порт, использованный в команде OUT (или 0FFFFFFFF, если OUT не было)
|
||||
IN - порт, использованный в команде IN (или 0FFFFFFFF, если IN не было)
|
||||
VAL - значение, считанное/записанное в порт (имеет смысл, только
|
||||
если OUT или IN != 0FFFFFFFF)
|
||||
RD - адрес памяти из которого производилось чтение
|
||||
WR - адрес памяти в который производилась запись
|
||||
MDT - значение, считанное/записанное в память
|
||||
|
||||
числа - шестнадцатеричные, должны начинаться с цифры: 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 - чтение клавиш от <B> до <SPACE>
|
||||
!(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 <reg>
|
||||
|
||||
Надеюсь, этих примеров достаточно для понимания идеи
|
||||
|
||||
Чтобы редактировать точку останова, щёлкните на ней мышью два раза
|
||||
|
||||
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 конструкций языка,
|
||||
поэтому сборка другим компилятором затруднительна)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user