Skip to content

Commit

Permalink
release 2.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
raydac committed Dec 15, 2019
1 parent f8b2d0f commit 0aacbc7
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 16 deletions.
30 changes: 21 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
![ZX-Poly logo](docs/zxpoly_logo.png)

# Changelog
- __2.0.1-SNAPSHOT__
- added Spec256 snapshot support (zipped)
- __2.0.1 (15-dec-2019)__
- added support of Spec256 snapshots (as .ZIP with SNA)
- improved simulation of "port #FF"
- refactoring

Expand All @@ -32,7 +32,7 @@ Keyboard plays role of ZX-Keyboard (ALT = SS, SHIFT = CS, CTRL+WHEEL = scaling),
![The Main Window of the Emulator](docs/screenshots/tapeloading.png)

# Supported snapshot formats
- Snapshots: .Z80, .SNA, .ZXP (ZX-Poly snapshot format)
- Snapshots: .Z80, .SNA, .ZXP (ZX-Poly snapshot format), ZIP (Spec256 with SNA inside)
- Tape: .TAP (allows export to WAV file)
- Disks: .TRD, .SCL

Expand All @@ -44,13 +44,13 @@ By default it starts embedded ZX-Poly Test ROM image, but it can be replaced by

# Theory and structure of the ZX-Poly platform
![ZXPoly test ROM screen](docs/block_scheme.png)
The base of the platform is the theory that stable synchronous systems (without any inside random processes) built on the same components (because different element base can be also source of random processes) by being started synchronously in the same time from the same state have the same state in any point of time if all synchronous system components get the same input signal states in the same time.
The base of the platform is the theory that stable synchronous systems (without any inside random processes) built on the same components (because different element base can be also source of random processes) by being started synchronously in the same time from the same state have the same state in any point of time if all synchronous system components get the same input signal states in the same time.
![Structure of ZXPoly](docs/zxpolystruct.png)
ZX-Poly platform adds several ports to manipulate work modes and the main port of the platform is #3D00. [In more details it is desribed in wiki.](https://github.com/raydac/zxpoly/wiki/Short-description-of-ZX-Poly-platform)

# Supported videomodes
## Standard ZX-Spectrum 256x192 (2 colors per pixel in 8x8 block) (mode 0,1,2,3)
It is just regular ZX-Spectrum mode 256x192 with 2 attributed colors for 8x8 pixel block.
It is just regular ZX-Spectrum mode 256x192 with 2 attributed colors for 8x8 pixel block.
![Standard ZX screenshot](docs/screenshots/atw_standard.png)

## ZX-Poly 256x192 (16 colors per pixel)
Expand All @@ -59,7 +59,7 @@ It is a family of video-modes and contain three sub-mode. All modes provide way
### ZX-Poly 256x192 STANDARD (mode 4)

It is just regular video mode without any masking. It just integrates pixel info from video-ram of all CPU modules and form 4 bit index in ZX-Spectrum palette.
[TRD disk with the example can be downloaded from here, the game has been partly colorized](adapted/Atw2/target/atw2.trd)
[TRD disk with the example can be downloaded from here, the game has been partly colorized](adapted/Atw2/target/atw2.trd)
![ZXPoly256x192 screenshot](docs/screenshots/atw_zxpoly.png)

### ZX-Poly 256x192 EXTENSION MASK_INK+PAPER (6)
Expand All @@ -73,12 +73,12 @@ It is the most complex from the video-mode family. It analyses FLASH bit of each

## ZX-Poly 512x384 (2 colors per pixel placed in chess order) (mode 5)
The Mode uses attributes but places pixels in chess order.
[TRD disk with the example can be downloaded from here](adapted/ZxWord/target/zxword.trd)
![ZXPoly512x384 animation](/adapted/ZxWord/screenshots/zxpoly_zxword_mode5.gif)
[TRD disk with the example can be downloaded from here](adapted/ZxWord/target/zxword.trd)
![ZXPoly512x384 animation](adapted/ZxWord/screenshots/zxpoly_zxword_mode5.gif)

# Adaptation of games

To adapt old games, I have developed special utility called ZX-Poly Sprite corrector, which can be found in releases. It is a very easy editor which shows images in data blocks and allows to redraw them. It supports import from Z80 and SNA snapshots and as the result it generates ZXP snapshots.
To adapt old games, I have developed special utility called ZX-Poly Sprite corrector, which can be found in releases. It is a very easy editor which shows images in data blocks and allows to redraw them. It supports import from Z80 and SNA snapshots and as the result it generates ZXP snapshots.
![ZXPoly Sprite Corrector screenshot](docs/zxpoly_sprite_editor.png)

## "Official Father Christmas" (1989)
Expand All @@ -98,6 +98,18 @@ Adapted game version in ZX-Poly emulator format can be downloaded [from here](ad
In november 2019, I made some adaptation of "Flying Shark" game for ZX-Poly 256x192 (mode 7). It shows possibility of combination of standard ZX-Spectrum colorization (for game panels) and ZX-Poly colorization (for game field). Snapshot for ZX-Poly emulator can be downloaded [from here](/adapted/FlyShark/flyshark.zxp).
![Flying Shark animation](adapted/FlyShark/flyshark_video.gif)

# Support of Spec256 emulation
Since 2.0.1 version, some restricted [Spec256 platform](http://www.emulatronia.com/emusdaqui/spec256/index-eng.htm) emulation added. Because there is real difference in work of ZX-Poly emulator (which based on parallel CPUs) and [Spec256](http://www.emulatronia.com/emusdaqui/spec256/index-eng.htm) (which based on CPU with 64bit virtual registers), not all games work well, but many of them can be started and playable.
![ScoobyDoo for Spec256](docs/screenshots/Spec256emulationScoobyDoo.png)

Known issues with emulation of listed games:
- __Knight lore__ doesn't work at all, looks like some problems with SNA snapshot
- __Bubbler__ is losing colorization for some game elements
- __Atic atac__ has some trash as footsteps of game elements
- __Solomon's key__ has some graphics trash

In ZX-Poly emulator working in Spec256 mode, some CPU registers are syncronized every iteration (by default PC, SP and bits of F excluding C bit), but it works not for all games. In games which need another register set, there can be provided special `zxpAlignRegs` parameter in CFG file situated in snapshot archive. For instance `zxpAlignRegs=XxYyPSsHLb` means syncronization of IX,IY,PC,SP,H,L and B' registers.

# F.A.Q.
## Is there a hardware implementation?
No, I had some negotiations with ZX-Spectrum clone manufacturers in Russia in the middle of 90th but I agreed with them that it was too late for market.
Expand Down
9 changes: 9 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
- __2.0.1 (15-dec-2019)__
- added support of Spec256 snapshots (as .ZIP with SNA)
- improved simulation of "port #FF"
- refactoring

- __2.0.0 (20-nov-2019)__
- Disk images support: TRD,SCL
- Tape snapshot support: TAP
- Emulator snapshot support: Z80, SNA, ZXP
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.igormaznitsa</groupId>
<artifactId>zxpoly</artifactId>
<version>2.0.1-SNAPSHOT</version>
<version>2.0.1</version>
<packaging>pom</packaging>

<url>https://github.com/raydac/zxpoly</url>
Expand Down
2 changes: 1 addition & 1 deletion zxpoly-emul/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.igormaznitsa</groupId>
<artifactId>zxpoly</artifactId>
<version>2.0.1-SNAPSHOT</version>
<version>2.0.1</version>
</parent>

<description>ZX-Poly emulator</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ <h3>Emulation of Spec256</h3>
Since 2.0.1 version, the emulator provides minimalistic support for <a
href="http://www.emulatronia.com/emusdaqui/spec256/index-eng.htm">Spec256</a> games. <a
href="http://www.emulatronia.com/emusdaqui/spec256/index-eng.htm">Spec256</a> games must be zipped and contain
SNA file in its archive. Because emulation based on multiple parallel working CPU (instead virtual 64 bit CPU in the
original emulator), some games can work not well.
SNA file in its archive. Because emulation based on multiple (9) working in-parallel CPU (instead virtual 64 bit CPU
in the
original emulator), some games can work not well and they need some extra tuning on register synchronization level.
</body>
</html>
7 changes: 6 additions & 1 deletion zxpoly-emul/src/main/resources/spec256appbase.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ knlore,b3326007551c29790aa815603b335f33d90328286af777c96f53f054c3631edf,1PSsXxYy

// Works not well
aticatac,7709e8d128ae244022c8ae61299fda0c620c0e323ff69d02ed1dacad267961cf,f1PSsahlbcdeXxYy
bubbler256,1b2d863b7b85315d71b56877ee26cb458c8746611789c23413bf2904278d19df,f1PSsHXxYyHhLl
bubbler256,1b2d863b7b85315d71b56877ee26cb458c8746611789c23413bf2904278d19df,01PSsXxYyLl
solomons,b045c9b0b8e827c2efaea4be6e74358aa7b6718e33f946e966b0ce334b66553f,1PSsXxYyBbCcLl

// working
Expand All @@ -27,3 +27,8 @@ brucelee256,429b5a50d3ce7b8b7236b18d8e8c5307f0165d436bcdbd0d8b354e101d312708,FfP
dizzy1,89906936113c676288a2e958ea3744195c1f6d213ab7841c0d98f2f036df1380,1HLPSs
scoobydoo256,ddb1960d4aa5b1a3069f0b61fea6d0284c5351eb5eaa45b073721c9baaf096ee,1HLXxYyPSs
sabrew,3e74bfeefe7b69d163a12e001ae4ce6416a43ada28fc32569ad2df747d1b83e9,1HhLlXxYyFfPSs
armymov1,3283ed31a4ecf35eb0dd223362e4c45cc35387944dde92db2930e370168bd612,1PSsXxYy
armymov2,984daadb51c3373340bf44beaedfd8bf96dff8da94599e19696f9e1319498d2f,1PSsXxYy
gameov2,1179c5aa4b475fc76165cdb429611d5edc2cc0bddbafb0d6dc13eaf39abffb06,01PSsXxYy
gameov1,5dee266176a42109272adbb9f5cc24d2357ef143c8fa99223970456288e345e1,01PSsXxYy
jetpac,d2b7bf6e8948022f8e32a9449a69a7f2f4e8c8907ba44428705761035f08c483,01PSsXxYy
2 changes: 1 addition & 1 deletion zxpoly-sprite-corrector/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.igormaznitsa</groupId>
<artifactId>zxpoly</artifactId>
<version>2.0.1-SNAPSHOT</version>
<version>2.0.1</version>
</parent>

<artifactId>zxpoly-sprite-corrector</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion zxpoly-z80/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.igormaznitsa</groupId>
<artifactId>zxpoly</artifactId>
<version>2.0.1-SNAPSHOT</version>
<version>2.0.1</version>
</parent>

<artifactId>zxpoly-z80</artifactId>
Expand Down

0 comments on commit 0aacbc7

Please sign in to comment.