CSpect jakoś do tej pory umyknął mojej uwadze, a szkoda, bo projekt rozwija się od 2015 roku i naprawdę jest interesujący - w końcu, oprócz emulacji ZX Spectrum, pozwala na zapoznanie się z softwarem ZX Spectrum NEXT, kickstartowego projektu, którego efektem to nowa wersją Spectrum, nie tylko będącą kompatybilną ze starymi modelami ale dającą nowe, współczesne mechanizmy.
Jeżeli komuś nie udało się zdobyć NEXT'a (za 275 funtów) i nie chce czekać na kolejną kampanię na KickStarterze, niech rzuci okiem na ten emulator.
Program wymaga zainstalowanej biblioteki OpenAL (dźwięk) w systemie.
Cspect i NxTel ze Spectrum Next - coś z wyglądu jak telegazeta lub BBS.
- Fixed a shader crash on OSX (Probably Linux as well)
- Fixed a crash in relative sprites where the X coordinate could go negative
- Added +3 "all ram" mode. (ZX81 games now work on the Next SD card)
- ay8912.dll no longer obfuscated. Didn't realise this was still getting obfuscated. This means you can now compile the DLL yourself using the supplied source.
- Fixed the fake UART and Wifi - was ignoring a basic AT command.
- Added a couple of new AT commands to the UART. AT+CIPSTA? will now return your IP address.
- AT+CIPDNS_CUR? will return googles DNS server - coz why not.
- AT+GMR will return n00160901 - which is an older version of the wifi chip I believe - any other preference?
- Fixed the default MMC path (when you don't specify one) on the Mac/Linux. Now uses .Net Path.PathSeparator...
- Any unknown UART command is now sent to the LOG file
- CTRL+F1 now enables/disables the TV shader
- PageUp+PageDown now makes the TV lines less/more visible
- Home+End now adjusts the TV shader "blur"
- Added sprite clipping in over border mode (1 = enabled) (bit 5 of reg $15)
- Composite/Unified mode visibility flag fixed
- Parallax scrolling demo (and .BAT file to run it) added to CSpect distro.
- Fixed a sprite window clipping bug
- Fixed the esxDOS streaming API emulation
- Improved the timing of the CPU so it should be much closer to the NEXT
- 48k timing - along with memory contention should also be much closer to the real thing
- Fixed the sprite over border clip window - no longer resets the user clip window
- Sprite "composite" mode added
- Sprite "Unified" mode added
- Fixed a screen render issue, where the screen was being stretched 1 pixel too much
- Fixed Left control in BASIC key mode.
- Fixed a bug where setting port $7ffd or port $1ffd would change the +3 ROM offset - even if next roms weren't enabled.
- .NEX files are now started in 14Mhz mode - same as the real machine
- Added IFF 1/2 to the debug display
- Fixed -fullscreen, just wasn't doing anything....
- Fixed -r when you exit in "fullscreen" mode (ALT+ENTER). Now exits fullscreen before quiting
- Added a "wish list" to the bottom of this doc.
- Right shift now works the same as left shift in BASIC key mode.
- Left ALT now releases the mouse, Left and Right Control is now SymbShift.
- In BASIC key mode if you also disable escape (-esc), escape will bring up the menu allowing you to quit BASIC/re-number etc.
- Fixed a SD card write, now flushes each sector as it writes so that card is always in a complete state
- Fixed a crash in SD Card writing.
- Added -sd2 for attaching a second SD card
- Added a special ZXBASIC keyboard mode, meaning it'll auto map keys to the spectrum version. (" will map to SYM+P for example)
- Added PageUp, PageDown, Home & End to ZXBASIC keyboard mode.
- F10 will toggle between game and ZXBASIC keyboard mode
- Fixed a bug when setting the sprite index via NextReg and top bit was set, the shap wasn't being offset by $80
- Added OpenAL install check for windows, if not found sound is disabled. use -sound to bypass check/error dialog
- The lovely guys at SpecNext.com have added "images" of the distro, making SD card usage much simpler.
Simply download the one you need.
- There are also some empty SD card images on the main site that you can put into the second SD card slot,
- allowing your work to be separate from the OS (allowing easy upgrading)
- In BASIC you can do 'SAVE "d:name.bas"' to save to the second slot....
- Fixed -esc command line, hadn't been ported from 1.x version
- Swapped Right Shift for SYMSHIFT to Right Control. Both shifts map to CAPS SHIFT. "," still works as SYMSHIFT
- Fixed PUSH XXXX opcode in debugger. Was displaying low/high. Now fixed to display high/low.
- Added "-log_cpu" for tracing the CPU instruction stream
- Added back in Label "switch" to debugger
- Missing "LDWS" opcode added to disassembler
- Fixed bug in ULA off mode where the border was still being drawn
- Fixed bug in 512 tile mode, where it was always above the ULA screen
- Added +3 ROM emulation (without RAM only mode)
- Added divMMC ROM/RAM hardware support via port $E3
- Added divMMC SD card support via ports $E7 and $EB
- SD Card SPI commands supported:CMD0,CMD1,CMD8,CMD9,CMD12,CMD13,CMD16,CMD17,CMD24,CMD55,CMD58,ACMD41
- (see SDCARD setup below to get up and running)
- Removed debug text output
- Initial WiFi/UART support added.
- NXtel.nex added to archive - see weblink above for the latest versions.
- Fixed Timex Hires mode when using ULANext
- Fixed Timex Hires border colour
- Fixed sprites crashing when using default transparency
- Fixed fallback colour in screen area (I think)
- Fixed darkening mode - removed debug code
- Fixed sprites being offset by a 1/2 pixel to the left
- Fixed new sprite rendering
- Fixed Lighten and Darkening modes
- Rendering rewrite to properly fix transparancy.
- Trying to fix ULA transparancy.
- Fixed PUSH $1234 to have the right order.
- Fixed LDWS so that flags are set based on the INC D
- Fixed BSLA so that it takes bits 4..0 not just bits 3..0
- Fixed a global colour transparancy issue
- Palette reading added - untested
- Fixed a transparency issue with ULA colours
- HL now gets set properly after an F_READ (address of next byte)
- 9 bit Layer 2 colour now compares to Global transparency 8 bits correctly.
- Attempt 3 at 9bit colour (3 bit blue)
- Fixed a type-o in 9 bit blues
- Fixed "HALT" instruction so that it waits for the next IRQ or Reset, and doesn't carry on at VBlank.
- 9 bit colours (and so 3 bit blues), now use the same colour mapping as Red and Green. 8 Bit colour is as before.
- Inital UART spport added via standard windows serial COM ports. Must use "-com" to setup
- Fixed the Real Time Clock (RTC) APi... was returing in the wrong order.
- Added "fine" seconds control to RTC API. "H" now holds full seconds.
- Copper will now trap uninitialised memory when trying to execute a program, and enter the debugger.
- Gamepads will now only use the "first" mapped analogue controller. Sorry. Dpad should work fine.
- Fixed a bug where creating a new file, then trying to open it would fail.
- Fixed 512 tile mode. ULA Disabled bit has moved to Reg 0x68, bit 7.
- Border can now be transparent and will use the fallback colour.
- NEX format file expanded. Default 16k RAM bank at $C000 now set.
- NEX format file can now set the file handle on request.
- Added more window scaling options (-w1 to -w10 now available).
- Updated 512 tile mode to use NextReg $6B (bits 0 and 1) properly.
- core version now set to 28 (2.0.28)
- Screen size changed to 320x256 to allow for full tilemap+sprites display (640x512 actual)
- Fixed Tiles under ULA screen when in border area (now also under border). Same as H/W
- Added 2 player Joysticks (first pass)
- Added MegaDrive joysticks (first pass)
- Sprite over border clipping fixed
- Sprite over border *2 on coords fixed
- Fixed a rasterline reading issue when read at the bottom of the screen.
- F_FSTAT($A1) and F_STAT($AC) now implemented again
- -fullscreen added to start in fullscreen mode
- Fixed loading of NEX files that have pre-set tiles
- Minor update for tilemap indexing
- Added ULA scrolling using LowRes scroll registers. Note: X currently byte scrolling only.
- Added Tilemap screen mode
- Added X and Y scrolling to tilemaps
- Fixed a couple of bugs in the streaming API.
- Fixed USL rendering order - was just buggered. (Layer2 demo was broken)
- Added a "-vsync" mode for when using "-60 -sound"
- Fixed regs $75-$79 auto inc then top bit of $35 NOT set
- Upped sprites to 128 as per new hardware (yum!)
- Fixed reg 0x43 bit 7- disable palette auto increment.
- Fixed NextReg access for sprites. Was using the wrong index.
- Added Auto-increment/port binding for NextReg $35 (sprite number)
- Added Auto-increment sprite Next registers $75-$79 (mirrors)
- Fixed MMC path setting from the command line
- Added logging debug command (see below)
- Added Layer 2 pixel priority mode - top bit of second colour palette byte (the single bit of blue) specifies over the top of everything.
- Added Next OS streaming API ( see below )
- Added DMA reverse mode (R0 BASE, bit 2)
- Added BSLA DE,B (ED 28) shift DE left by B places - uses bits 4..0 of B only
- Added BSRA DE,B (ED 28) arithmetic shift right DE by B places - uses bits 4..0 of B only - bit 15 is replicated to keep sign
- Added BSRL DE,B (ED 2A) logical shift right DE by B places - uses bits 4..0 of B only
- Added BSRF DE,B (ED 2B) shift right DE by B places, filling from left with 1s - uses bits 4..0 of B only
- Added BRLC DE,B (ED 2C) rotate DE left by B places - uses bits 3..0 of B only (to rotate right, use B=16-places)
- Added JP (C) (ED 98) JP ( IN(C)*64 + PC&$c000 )
- Added new sprite control byte
- Added sprite expand on X (16,32,64 or 128)
- Added sprite expand on Y (16,32,64 or 128)
- Added 16 colour shape mode
- Removed 12 sprite limit, limitations still apply when expanding on X (100 16x16s per line max)
- Sprite pixel wrapping on X and Y (out one side, back in the other)
- Added "lighten" mode. L2+ULA colours clamped. (selected using SLU layer order of 110)
- Added "darken" mode. L2+ULA-555 colours clamped. (selected using SLU layer order of 111)
- Fixed a crash in sprite palettes.
- Fixed Create/Truncate on esxDOS emulation
- Mouse support added
- Gamepads added - not sure about OSX and Linux, but appear fine on Windows.
- Ported to C#, OpenTL, OpenGL and OpenAL, now fully cross platform!
- Things NOT yet finished/ported.
- Some esxDOS functions (F_FSTAT, F_STAT, M_GETDATE)
- 128K SNA files are not currently loading
- File dialog (F2) will not work on OSX due to windows Forms not working in x64 mode in mono
- Mouse is not currently implemented
- Due to the way openAL appears to work, things aren't as smooth as i'd like. Disabling audio (-sound) will smooth out movement for now...
- Probably a few more things....
- added "-16bit" to use only the logical address of the MAP file
- Execution Breakpoints are now set in physical address space. A HEX number or SHIFT+F9 will set a logical address breakpoint. This means you can now set breakpoints on code that is not banked in yet.
- Next mode enabled when loading a .NEX file
- ULA colours updated to match new core colours. Bright Magenta no longer transparent by default. Now matches with $E7 (not $E3)
- Fixed debugger bug where "0" is just left blank
- New MAP format allowing overlays mapped in. Labels in the debugger are now based on physical addresses depending on the MMU
- You can now specify a bank+offset in the debuggers memory view (M $00:$0000) to display physical addresses.
- Numeric Keypad added for debugger use.
- EQUates are no longer displayed in the debugger, only addresses. This makes the view much cleaner
- Fixed sprite transparency to use the index before the palette and colour conversion is done
- -r on the command line will now allow CSpect to remember the window location, is if you move it somewhere, it'll start up there again next time.
- Moved command line options to the top of the file, as no one seems to find them. Keys etc are still below.
- Fixed sprite transparency index. now reads transparancy colour from sprite palette.
- Timex Hi-Colour mode fixed
- M_GETDATE added to esxDOS emulation (MSDOS format)
- BC = DATE
- DE = TIME
- Bits Description
- 0-4 Day of the month (1–31)
- 5-8 Month (1 = January, 2 = February, and so on)
- 9-15 Year offset from 1980 (add 1980 to get actual year)
- Bits Description
- 0-4 Second divided by 2
- 5-10 Minute (0–59)
- 11-15 Hour (0–23 on a 24-hour clock)
- -joy to disable DirectInput gamepads
- Re-added OUTINB instruction (16Ts)
- Fixed a but with MMU1 mapping when reading, it was reading using MMU0 instead.
- In ZXNext mode, if you have RAM paged in MMU0, then RST8 will be called, and esxDOS not simulated
- Palette control registers are now readable (Hires Pawn demo now works)
- Reg 0 now returns 10 as Machine ID
- Reg 1 now returns 0x1A as core version (1.10)
- Layer2 transparancy now checks the final colour, not the index
- Fixed sprites in the right border area (the 320x192 picture demo)
- Timex Hires colours now correct (Pawn demo)
- Fixed CPU on WRITE and on READ breakpoints
- -port1f command line removed
- .NEX format now leaves IRQs enabled
- Removed some of the old opcodes from the debugger
- Kempston joystick emulation added using direct input. All controllers map to a single port, port $001F = %000FUDLR
- Fixed memory contention disable (so now tested!)
- Added .NEX format oading. (see format below)
- Added nextreg 8, bit 6 - set to disable memory contention. (untested)
- Added Specdrum Nextreg mirror ($2D)
- Removed OUTINB
- Removed MIRROR DE
- Added sprite global transparancy register ($4B) - $e3 by default, same as global transparancy ($14).
- NextReg reg,val timing changed to 20T
- NextReg reg,a timing changed to 17T
- Added LDWS instruction (might change)
- Fixed Lowres window (right edge)
- You can now use long filenames in RST $08 commands (as per NextOS), can be set back to 8.3 via command line
- Layer 2 now defaults to banks 9 and 12 as per NextOS
- Added command line option to retrun $FF from port $1f
- Fixed a possible issue in loading 128K SNA files. Last entry in stack (SP) was being wiped - this may have been pointing to ROM....
- Fixed mouse buttons return value (bit 0 for button 1, bit 1 for button 2)
- -cur to map cursor keys to 6789 (l/r/d/u)
- Fixed copper instruction order
- Copper fixed - and confirmed working. (changes are only visible on next line)
- Copper increased to 2K - 1024 instructions
- Fixed a bug in the AY emulation (updated source included)
- Fixed Lowres colour palette selection
- Added new "Beast" demo+source to the package to show off the copper
- Layer 2 is now disabled if "shadow" screen is active (bit 3 of port $7FFD)
- Timex mode second ULA screen added (via port $FF bit 0 = 0 or 1). Second screen at $6000.
- Fixed bit ?,(ix+*) type instructions in the disassembler. All $DD,$CB and $FD,$CB prefix instructions.
- $123b is now readable
- Fixed cursor disappearing
- "Trace" text was still being drawn when window is too small.
- "POKE" debugger command added
- New timings added to enhanced instructions - see below.
- Border colour should now work again.... (palette paper offsets shifted)
- Minor update to fix port $303b. If value is >63, it now writes 0 instead (as per the hardware)
- Palettes now tested and working
- Missing ay.dll from archive
- Quick fix for ULA clip window
- Fixed a bug in delete key in debugger not working
- Fixed Raster line IRQ so they now match the hardware
- Fixed a bug in 128K SNA file loading
- Fixed a bug in moving the memory window around using SHIFT key(s)
- Removed SID support :(
- Added auto speed throttling. While rendering the screen, if the speed is over 7Mhz, it will drop to 7Mhz. (*approximated)
- Removed extra CPU instructions which are now defuct. (final list below)
- MUL is now D*E=DE (8x8 bit = 16bit)
- Current Next reg (via port $243b is now shown) in debugger
- Current 8K MMU banks are now shown in debugger
- CPU TRACE added to debugger view (see keys below) ( only when in 4x screen size mode)
- Copper support added. Note: unlike hardware, changes will happen NEXT scanline.
- Sprite Clip Window support added (Reg 25)
- Layer 2 Clip Window support added (Reg 24)
- ULA Clip Window support added (Reg 24)
- LOWRES Clip Window support added (Reg 24)
- Layer 2 2x palettes added
- Sprite 2x palettes added
- ULA 2x palettes added
- Regiuster $243b is now readable
- NOTE: SNASM now requires "opt ZXNEXTREG" to enable the "NextReg" opcode
- Startup and shut down crash should be fixed
- You can now use register names in the debugger evaluation ("M HL" instead of "M $1234", "BC HL" etc.)
- G <val/reg/sym> to disassemble from address
- -sound to disable audio
- Timing fixed when no sound active.
- -resid to enable loading and using of the reSID DLL. Note: not working yet - feel free to try and fix it! :)
- -exit to enable "EXIT" opcode of "DD 00"
- -brk to enable "BREAK" opcode of "DD 01"
- -esc to disable ESCAPE exit key (use exit opcode, close button or ALT+F4 to exit)
- Fixed the Kempston Mouse interface, now works like the hardware.
- Next registers are now readable (as per hardware)
- local labels beginning with ! or. will now be stripped properly
- Pressing CONTROL will release the mouse
- Right shift is now also "Symbol shift"
- 3xAY audio added - many thanks to Matt Westcott (gasman) https://github.com/gasman/libayemu
- Timex Hicolour added
- Timex Hires added
- Lowest bit og BLUE can now be set
- SHIFT+ENTER will set the PC to the current "user bar" address
- Raster interrupts via Next registers $22 and $23
- MMU memory mapping via NextReg $50 to $57
- Added 3xAY demo by Purple Motion.
- Source for ay.dll and resid.dll included (feel free to fix reSID.DLL!)
- You can now specify the window size with -w1, -w2, -w3 and -w4(default). If winow is less than 3x then the debugger is not available
- Cursor keys are now mapped to 5678 (ZX spectrum cursor)
- Backspace now maps to LeftShift+0 (delete)
- DMA now available! Simple block transfer (memory to memory, memory to port, port to memory)
- SpecDrum sample interface included. Port $ffdf takes an 8 bit signed value and is output to audio. (not really tested)
- Added the lowres demo (press 1+2 to switch demo)
- Updated Mouse demo and added Raster Interrupts
- Added DMA demo
- Added 3xAY music demo
- register 20 ($14) Global transparancy colour added (defaults to $e3)
- regisrer 7 Turbo mode selection implemented.
- Fixed 28Mhz to 14,7,3.5 transition.
- ULANext mode updated to new spec (see https://www.specnext.com/tbblue-io-port-system/)
- LDIRSCALE added
- LDPIRX added
- New Lowres layer support added (details below)
- ULANext palette support added (details below)
- TEST $XX opcode fixed
- port $0057 and $005b are now $xx57 and $xx5b, as per the hardware
- Fixed some sprite rotation and flipping
- Can now save via RST $08 (see layer 2 demo)
- Some additions to SNasm (savebin, savesna, can now use: to seperate asm lines etc)
- Swapped HLDE to DEHL to aid C compilers
- ACC32 changed to A32
- TEST $00 added
- Added in lots more new Z80 opcodes (see below)
- 128 SNA snapshots can now be loaded properly
- Shadow screen (held in bank 7) can now be used
- New debugger!!! F1 will enter/exit the debugger
- Sprite shape port has changed (as per spec) from $55 to $5B
- Loading files from RST $08 require the drive to be set (or gotten) properly - as per actual machines.
- RST $08/$89 will return the drive needed.
- Please see the example filesystem.asm for this.
- You can also pass in '*' or '$' to set the current drive to be system or default
- Basic Audio now added (beeper)
- New sprite priorities using register 21. Bits 4,3,2
- New Layer 2 double buffering via Reg 18,Reg 19 and bit 3 of port $123b
Warhawk Demo for ZX Spectrum Next (2018, Rusty Pixel)
This update is to add in (most) of the new hardware/registers that the latest Spectrum Next firmware has added - along with the new OS which uses some of it. There are some amazing advancements in this firmware. 14Mhz CPU speed all the time, 28Mhz copper and 14Mhz DMA, along with things like smooth scrolling the ULA screen. Brilliant update from the Next team.
- Fixed extra pixel in wrapping scroll of ULA
- Fixed label on/off
- Fixed lowres vertex clip "smear"
- Fixed -tv command line, and made it actually switch off all shader usage
- if bit 6 in attrib 3 is not set, #CSpect now properly ignores attribute 4
- Copper now runs at 28Mhz
- The CPU no longers slows down over the screen
- ULA can now scroll in 1/2 pixels
- ULA Shadow screen now works with Layer 2
- Reg 0x69 added (Layer 2 enable, ULA shadow mirror, and port bits 0-5 goto port 0xFF)
- Copper Reg 0x63 added
- DMA is now always 14Mhz...
- 4 bit lowres mode added (reg 0x6A)
- Added $123b Read mode
- Added $123b 48K mapping mode
- Reg 7 is now R/W, and bits 4/5 now set correctly
- Window regsiters are now R/W
Tagi: Zx, Zx Spectrum, Zx Spectrum Next, NextDev
Inne treści związane z tematem
[ZX] CSpect 2.11.1
CSpect jakoś do tej pory umyknął mojej uwadze, a szkoda, bo projekt rozwija się od 2015 roku i naprawdę jest interesujący - w końcu, oprócz emulacji ZX Spectrum, pozwala na zapoznanie się z softwarem ZX Spectrum NEXT, kickstartowego projektu, którego efektem to nowa wersją Spectrum, nie tylko będącą kompatybilną ze starymi modelami ale dającą nowe, współczesne ...