Comments (11)
@zx70 is doing some fairly major tweaks on the zx81 video at the moment, so this is probably a fallout from that.
from z88dk.
Right. Hopefully the latest snapshot altready includes a fix for it, please let me know.
from z88dk.
Hi @zx70, I could get one of my games to work. Have you improved the performance of the WRX driver?
It looks still very slow.
It would be nice to have some sort of UDG (solid, non-trasparent, 8 pixel-aligned tiles). It would make my games playable.
I currently use sprites, which cannot assume they are alligned on 8 pixel boundaries and I have to delete and draw them each single time I draw a "tile".
from z88dk.
there's little space for speed improvements on the driver itself. I can say that the 64 rows mode is faster and that hrg_blank() will make the programs run faster when the display is blanked.
On the libraries you could achieve a little bit of boost by using clga() to delete the sprites area, iirc I tuned it to help with the putsprite() slowness.
I also think that the text driver allows the font redefinition in graphics mode, I don't remember if the udg is supported.
I've also fixed the arx driver, it is still slower than wrx but it is now overall improved.
from z88dk.
I am not aware of UDG for the ZX81. That is what I need. Hopefully they are faster than sprites.
Is the arx driver meant for a more exotic hardware?
How can I use clga()?
from z88dk.
I was going to integrate my answer, the zx81 had several video modifications to extend its capabilities.
The earlier hardware mods simply aimed to replace the ROM font.
You can look at examples/zx81/dstar.c, I've managed to support most of the possible font positions by pressing the numeric keys: different DIY projects existed on the magazines as well as some commercial interface.
At its maximum extent this mod allows a software trick, the ARX driver (by Andy Rea, recently improved by Fruitcake) which swaps the fonts during the video raster pass to get a full graphics mode. This means that the ARX graphics library is not your best choice when you use 8x8 symbols because you'd rather prefer a font redefinition option in text mode.
The WRX mode is different, it uses ram areas in different positions which couldn't be used in text mode. Other historical graphics extensions were the Memotech HRG, the G007 and few other rare and expensive interfaces.
In graphics mode you can speed up the sprites by
- reducing their size (see microman),
- running in 64 rows mode (which also requires less ram memory),
- and where library is well written, using clga() to clean the video portion.
void clga(int tlx, int tly, int width, int height)
from z88dk.
I noticed that the optimized clga() could be extended to some more target with 'narrow' HRG graphics.
I just did it for the PX4 and the MC-1000 but testing it is a lenghty process.
You can test the code on your favourite target yourself, you need to spot the right 'lst' file (something like 'libsrc/target/mc1000/mc1000.lst'), alter it and rebuild the target library.
The list file must have a line referring to the 'narrow' graphics list:
@gfx/narrow/gfx_narrow.lst
alter it by inserting the reference to the alternative code BEFORE the gfx list inclusion:
gfx/narrow/obj/${TARGET}/clrarea2
@gfx/narrow/gfx_narrow.lst
Then, move into {z88dk}/libsrc and use make to rebuild the specific target libraries and move the resulting lib files into {z88dk}/lib/clibs
Do not try it on low resolution targets (like the Mattel Aquarius), it won't work.
EDIT: nor it will work on the MSX/SVI VDP, but I'm on it
`
; --- Different way to compute the horizontal byte boundary ---
ld a,h
and 7
dec a
ccf ; CY reset if we're at a byte boundary
ld a,0
adc b ; otherwise add 1/8 more and include one extra byte
rra
srl a
srl a
ld (rowbytes1+1), a
ld (rowbytes2+1), a ; 0 means that area is within same address
; --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
`
from z88dk.
@zx70 I see a significant improvement on the ZX81 WRX target.
Not much on the C128 80col mode (which in my case should not use sprites by redefined characters but which are not possible (yet or may ever) possible on the C128 when controlled by the Z80 (???)
from z88dk.
I just spotted a partial regression which I never fixed after a big clean-up activity happened some year ago.
I suspect we have faster replacements of putsprite() and draw_profile() for the zx81 in high resolution.
from z88dk.
I think the sprites on the ZX81 and on the TS2068 should be slightly faster now
Note that on the ZX81 several HRG modes are available:
WRX
ARX (probably the UDG is a better choice here, but putsprite is supported).
..and with some memory constraint:
Memotech WRX (not all the graphics patterns are usable)
G007
from z88dk.
+Commodore 128, this should speed-up clga(), xorclga() and fillb().
The vertical overflow protection is missing, but I think it is a good compromise already
from z88dk.
Related Issues (20)
- Compile error today (worked yesterday) HOT 1
- MacOS - zsdcc binary is r14210 HOT 3
- appmake +zx colliding with binaries of previous builds HOT 3
- TMS9918 graphics improvements HOT 6
- [question][ti] What is the meaning of "Warning: Use of numbers in the variable name is not certain to work on all calculators!" ? HOT 2
- (sccz80) Support static __far data
- [zx81][feature] WRX96 and/or WRX128 with centered display? HOT 1
- sccz80 - lhs constant comparison HOT 6
- 8085 - l_eq l_ne operator optimisation HOT 5
- (classic) KC and ZX81 (384 rows) graphics not fully ix independent HOT 8
- Unexpected z80asm macro formal parameter behavior? HOT 4
- 8085 - am9511 - comparative l_f32_ge HOT 6
- 4 bit audio player for the PSG
- Missing makefile.msd in msx examples HOT 1
- New MSX config for plain "bin" file. HOT 1
- How is ADD DE, buffer assembled? HOT 3
- macOS - zcc being flagged for virus HOT 5
- 8085 - _z88dk_callee return improvement HOT 3
- (z80asm) Implement local labels HOT 17
- CP/M File I/O Drops a Character Every 128 Bytes HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from z88dk.