ZX ULAX emulator
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
game pack update
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
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
quick declashing of the fresh Zombi Mall - viewtopic.php?t=7976
maybe will improve it later before putting into the game pack
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
some early hw testing...
Re: ZX ULAX emulator
Witchcraft!
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
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
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
another one...
some features weren't added yet, so these look less colourful compared to the emulator
some features weren't added yet, so these look less colourful compared to the emulator
Re: ZX ULAX emulator
What about a Kickstarter campaign ?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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
a quick work for la Bruja aka the Evil Spell
https://spectrumcomputing.co.uk/entry/2 ... m/La_Bruja
not tested much, will add to the game pack later
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
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
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
game pack update
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
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
Re: ZX ULAX emulator
@Lethargeek Can you do bomb Jack? What a game that would be if you could actually see what is going on.
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
@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.
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
BIG game pack update
a whopping ten new games this time!
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
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
double update
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)
- 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)
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
bugs without borders
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)
fixed black stripes in fullscreen (when the 'fake border' extension is turned off) suddenly becoming non black
![Smile :)](./images/smilies/icon_e_smile.gif)
fixed multicolour and border visible state being lost when the emulator is paused
(watching video memory immediate state is still more useful in debugger)
Re: ZX ULAX emulator
Multiple posts deleted. Thanks for the reports.
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
a quick one for the recent Forest Escape
this is for the full version, not the demo
(i won't put it in the game pack while the game is not free and still for sale)
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
Re: ZX ULAX emulator
Orbol Voon
this is begging for multicolour-style sprite (like Rade Blunner), maybe later
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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
double update
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)
- 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)
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
moar in stoar!
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)![Cool 8-)](./images/smilies/icon_cool.gif)
- 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
- finally, unicode filenames support (so no need to rename those põrtúgúês titles anymore)
![Cool 8-)](./images/smilies/icon_cool.gif)
- 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
- Lethargeek
- Manic Miner
- Posts: 744
- Joined: Wed Dec 11, 2019 6:47 am
game pack update (and some tech talk)
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](https://i.servimg.com/u/f69/19/84/49/23/c2-zxc10.png)
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](https://i.servimg.com/u/f69/19/84/49/23/c2-noc10.png)
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.
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](https://i.servimg.com/u/f69/19/84/49/23/c2-zxc10.png)
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](https://i.servimg.com/u/f69/19/84/49/23/c2-noc10.png)
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.