Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

Hi! May I ask for a pure ZX-based version?  The game should be runable also on the ZX-Uno and eLeMeNt ZX computers with simple HiColor graphics turned on (LD A,2: OUT (255),A) instead of using timex-like method of reading the port 255. 3 bytes could be applied in the 2048/AY code at 56092: 0,0,62, Tested with the eLeMeNt ZX :-)

Thanks for pointing this out. I tested it with ZEsarUX in ZX-Uno mode with new graphics modes enabled and it worked. However on a ZX-Go+ it does not. My other game that uses the Timex mode does work on the ZX-Go+ so I guess there is another problem with it. I was not aware of the  eLeMeNt ZX is there an emulator for it?

BTW my code was already using:
in      a, (0xFF)

or      a, 2

out     (0xFF), a

Changing this to just:

ld      a, 2

out     (0xFF), a

did not make any difference.

(8 edits)

Hi! The problem is that the port 255 returns various values on ZX machines, e.g. with bit 0 set, leading to non-defined states or simply switching to ZX-like graphics. Setting the mode directly with LD A,2 is safer :-). I do not have the ZX-Go+ but could test with the MB03+ interface which also adds Timex, a graphics part only, to any Speccy model (so the port 255 is ZX on reading and Timex with writing). Both MB and eZX hardware are emulated with the LnxSpectrum: www.ilnx.cz

I've added a beta for the eLeMeNt ZX. It works in LnxSpectrum. Can you let me know if it works on real hardware?

(2 edits)

Hi, many thanks for the eLeMeNt ZX/MB version! 

Unfortunately the LnxSpec emulator does not fully reflect some non-ZXi ports. As written above, on the eLeMeNt hardware the port 255 is ZX-based when read (IN), so there is an extra "shadow" port for Timex, timex 0xFF port is writeable only and readable is at port 0x9FFD.

The current beta should be changed, instead of IN A,(255) use LD BC,0x9FFD and IN A,(C).

Another method, without previous reading IN A,..., is  simply to write to the 0xFF port a timex graphics mode, value "2".

Please check the page 19 of the ProgRef manual

https://docs.google.com/document/d/1NJB_z3zVorTfmEj2JAS3QtAx_zbpkdCAAptHSnOOzkU/...

And the third solution:  the ZXi configuration port will be improved, a setup bit will be added to make the port 255 fully timex readable, but it will take some little time...

I've upload a new beta. It uses e_zxi_010 to enable Timex graphics then uses ports 0x9FFD and 0xFF as you suggested.

Thank you, this version works. :-)

I look forward to and wish you good luck with new programs!

I still wonder why the port 255 reading method is used (originally), I didn't find the reason anywhere in the Timex documentation.

Thanks for letting me know. I'll post a new build once I've retested everything.

According to https://worldofspectrum.org/faq/reference/tmxreference.htm  bit 7 controls which memory bank is used. However it's only used to to support cartridges on the TS2068. Bit 6 disables interrupts.