ZX ULAX emulator

Struggling with Fuse or trying to find an emulator with a specific feature. Ask your questions here.
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

game pack update

Post by Lethargeek »

two new games

Total Eclipse 2 was made similar to the 1st part (a bit simpler even)

The Charm was a tricky one as i wanted to preserve the "submerged" attribute effect
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

quick declashing of the fresh Zombi Mall - viewtopic.php?t=7976

Code: Select all

; sprite
107767	0111 0
107769	107767	B
107774	0131 0113
1077A3	C007
; shifted
1077A8	0180 -4 0380 -5	0190 -4 0390 0 0591 0 0 0398 0119
1077C5	1077A8	C5
; aligned
1078D0	0160 0 0 0130 0531 0336 0113 0 0
1078D9	1078D0	3D
10788C	C888

; sbuf2scr
10789D	0131 0113 0 0
1078A1	10789D	1A
maybe will improve it later before putting into the game pack
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

some early hw testing...

User avatar
Nitrowing
Manic Miner
Posts: 607
Joined: Mon Sep 21, 2020 8:38 pm
Location: Cleethorpes

Re: ZX ULAX emulator

Post by Nitrowing »

Lethargeek wrote: Wed Sep 14, 2022 12:44 pm some early hw testing...

Witchcraft!
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

right now it's just the FPGA with soft core Z80 as the real one isn't soldered yet
also it's only 48k but it's enough to start debugging the ULAX core
we also need a new SDRAM controller with burst access
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

another one...

some features weren't added yet, so these look less colourful compared to the emulator

Gvan
Drutt
Posts: 10
Joined: Mon May 18, 2020 2:43 am

Re: ZX ULAX emulator

Post by Gvan »

Lethargeek wrote: Thu Sep 15, 2022 7:41 am right now it's just the FPGA with soft core Z80 as the real one isn't soldered yet
also it's only 48k but it's enough to start debugging the ULAX core
we also need a new SDRAM controller with burst access
What about a Kickstarter campaign ?
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

Gvan wrote: Fri Sep 16, 2022 7:37 pm What about a Kickstarter campaign ?
even if we wanted to try it, Kickstarter wasn't working with russian citizens even before the current events
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

a quick work for la Bruja aka the Evil Spell
https://spectrumcomputing.co.uk/entry/2 ... m/La_Bruja

Code: Select all

; sprite
108474	01F0 05F0 0 CF1F
10847C	0131 C333 0 0013
80847D	0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF
1084B0	C3CA
1084B1	0130 5F33 0531 0 0 0 0330 0 0 0 0113
1084BF	C888

; sbuf2scr
1085A7	0131 0113
1085CA	0111

; bg2sbuf
108603	0131 0113
not tested much, will add to the game pack later
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

Frightmare (128k version) - https://spectrumcomputing.co.uk/entry/1 ... Frightmare
this one went surprisingly fast and smooth, except some of the original sprite masks defects revealed

Code: Select all

; buf2scr
1099BE	0111 0
1099C0	1099BE	3D

; sprite
109842	C30F
109848	0140 0 0 0150 0 6077 0160
109861	5766 0140 0 0 0150 0 6877 0160
10987A	0414 0 0 0 0415 0 0 0 0416 0 0 0 0417 5766
10988C	0214 0 0 0 0215 0 0 0 0216 0 0 0 0217
1098AE	C888
1098D3	5FC4 5FC5 5FC6 5FC7 5765 5774
1098EB	5A45 5C67
109909	5945 5C67

; sprattrs
10992E	0131 0 0013
80992F	0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF

; sprcolor
109FA7	01F0

; bullet
10A802	C301
80A803	fffd 8002 8000
708002	7FFF 7FFF
700002	7FEF 7FEF
10A80C	0140 0 0131 0F34 0113
10A81B	C888
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

game pack update

Post by Lethargeek »

more games -

Bangers & Mash - a multiload, but such a simple dux works for the both parts

the Happiest Days of your Life turned out to be a very interesting case where Spec256/ZX-Poly bitplane-painting approach may fail even with uncompressed pixel data. The sprite mask is generated on the fly with a series of shifts and logical ops and if sprite pixels in different bitplanes don't match it will end in a semi-randomly coloured garbage. Furthermore, it seems to me that extra sprite xoring is used to detect collisions, which may cause several Z80 processors working in parallel (simulated in ZX-Poly) to lose sync

also added la Bruja and Frightmare (the bugfixed version) from the above
User avatar
Jbizzel
Dynamite Dan
Posts: 1537
Joined: Mon May 04, 2020 4:34 pm
Location: Hull
Contact:

Re: ZX ULAX emulator

Post by Jbizzel »

@Lethargeek Can you do bomb Jack? What a game that would be if you could actually see what is going on.
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

@Jbizzel, i tried it once. The main problem of Bomb Jack is not the negligible colour clash (sprites are mostly black anyway) but the way it combines erasing the old sprite and drawing the new one accidentally destroyng parts of the already drawn sprites under it. While it is possible to minimize this without patching the original code, it would require a lot of tedious work and some z80 code patching. I'm not sure when i will have time for this.
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

BIG game pack update

Post by Lethargeek »

a whopping ten new games this time! :D

Beyond the Ice Palace
Fanky Punky
God save the Punk
Heartbroken
Impossamole
Nonamed
Ragnablock
Skyscraper of Doom
Streets of Doom
Superman.olo


and one of these (Impossamole) is even a multiload! once enabled, it should work with proper disk and tape level loaders, but for the rzx with its multiple embedded snapshots you'll need to reload the same dux once for the each level (pressing PgDn as usual) to refresh the VRAM
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

another quick work, this time for an obscure spanish game Ship Pilot

Code: Select all

; buf2scr
10F39D	0111 0
10F39F	10F39D	39
10F408	10F39D	3B

; sprite
10F74B	C3CA
10F74E	2140
10F75E	0130 0334 0 0140 0 0 0165 0150 0 0360 0 0 0 0531 0336 0113
10F778	0340 0 0 0541 0345 0114
10F78B	C888
10F79F	CF11
10F7AC	0133
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

another quick one for Downtown

Code: Select all

; (bullet)
190BB6	C088
190BC5	C888
809220	FFFC 3FE0 8000

; sprite
10E751	C00E
10E75D	0130 0 5F33 0141 0543 0 0130 0 0 0530 0 0334 0 0113
10E776	C888

; buffer
10E78A	0111
10E797	0111
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

double update

Post by Lethargeek »

public beta 29
- added a new way to copy blocks in dux files
- fixed AY/YM regs unused bits emulation
- added emu state changes echo in fullscreen mode
(same as the window title, you can set the message time in the ini file)

also six additions to the game pack:
Downtown
Gemelos
Herbert's Dummy Run
Piso Zero
Ship Pilot
Tuma-7 (2 parts)
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

bugs without borders

Post by Lethargeek »

public beta 30
fixed black stripes in fullscreen (when the 'fake border' extension is turned off) suddenly becoming non black :)
fixed multicolour and border visible state being lost when the emulator is paused
(watching video memory immediate state is still more useful in debugger)
User avatar
PeterJ
Site Admin
Posts: 6879
Joined: Thu Nov 09, 2017 7:19 pm
Location: Surrey, UK

Re: ZX ULAX emulator

Post by PeterJ »

Multiple posts deleted. Thanks for the reports.
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

a quick one for the recent Forest Escape
this is for the full version, not the demo

Code: Select all

; scr2sbuf
109221	0111 0 0111 0 0111
109230	109221	-1928F

; masked
1092E3	C807
1092E8	2160 0131 0536 0337 0113
1092EF	1092E8	-192FB
109300	1092E8	-193A3
1093AD	C888
(i won't put it in the game pack while the game is not free and still for sale)
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

Cursed Castle

Code: Select all

; sbuf2scr
10A294	2161 0116 0 0117 0
10A299	10A294	-1A2A6

; sbuf
10A480	0131 0330 0113 0 0 0
10A486	10A480	-1A4AC
10A4AD	C888
10A50F	10A480	-1A53B
10A53C	C888
10A544	0130 0 0213 0 0
10A549	10A544	-1A569
10A56A	C888
10A56B	C007
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

Re: ZX ULAX emulator

Post by Lethargeek »

Orbol Voon

Code: Select all

; spr2buf
1023EF	0131 0113 0 0
1023F3	1023EF	1A

; sprite
1022F5	C007
; shifted
1022F8	0130
1022FA	0140 0 0 0 0 0340 0 0 0 0 0 0150 0 0 0 0 0350 0 0551 0 0 0354 0115 0 0 0 0 0 0
102317	1022FA	C5
1023DC	C888
; normal
10241E	0160 0 0 0130 0531 0336 0113 0 0
102427	10241E	3D
102464	C888
this is begging for multicolour-style sprite (like Rade Blunner), maybe later
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

double update

Post by Lethargeek »

public beta 31
- proper interrupted INxR/OTxR flags emulation
- dux format additions (simpler block copy syntax)
- many debugger fixes

Cursed Castle and Orbol Voon (multicolour sprites) added in the game pack
(make sure you're running the latest emuL version for these)
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

moar in stoar!

Post by Lethargeek »

public beta 32 - many improvements, but most important for a simple user are:
- finally, unicode filenames support (so no need to rename those põrtúgúês titles anymore) 8-)
- tape block number and its length displayed, makes multiload tape handling a bit easier
- option to auto restart rzx playback after it's finished
- beeper to AY/YM balance setting

...and overall major code revision with some other minor tweaks and bugfixes (full list in the changelog)

WARNING! do not use your old ini file with this version as it is now partially incompatible! check and retype your preferences in the new one
User avatar
Lethargeek
Manic Miner
Posts: 743
Joined: Wed Dec 11, 2019 6:47 am

game pack update (and some tech talk)

Post by Lethargeek »

meet four new additions:

Arkos (3 parts)
the Island of Dr.Destructo
Mini Fly (aka Destructo 2)
Prince Clumsy


also two of the past releases were improved/fixed:

Blinky's Scary School
Corsarios - part 2


As said before, there's some room to fix some original graphical bugs and glitches because you only need to sync the ULAX and the Z80 ops at memory access moments only (and then not every one of these even). Often these glitches aren't apparent with colour clash but once you get rid of it - then it's becoming immediately obvious. Take the Corsarios for example - the sprites there are being processed in the wrong order with the Jolly Roger being last and on top of everything else, so in the original ZX mode you get this:

Image

So - mast in the backgroung, then the player sprite, then the flag (with a part of its pole) appears floating in the air looking detached from the mast.

Now with the fixed ULAX version (reverse sprite order in one of the code branches) you get this:

Image

Arkos looks even more odd - in the 2nd part (the flight) projectiles and explosions are behind everything else, including the moon. And because the moon sprite has gaps representing the cloud shadows over the moon you will see an explosion behind the moon but over the clouds that are over the moon! Actually not a big deal with the colour clash (as the sprites take the moon or ground colours) but with proper sprite colours it becomes incredibly odd and stupid. I won't put the pics here now, but you may run the 2nd part with the dux driver intended for the other parts and see it yourself.

Fixing such things without touching the original Z80 code is not as straightforward as an usual adaptation, sometimes quite tricky, but it's often possible even with the current ULAX version. Maybe in the future i will add some features to make it easier.
Post Reply