I have now released the first cross-platform version of my little game "H-Tron" that I had initially ported to the ZX81 (from Borland Turbo C on DOS):
https://sourceforge.net/projects/h-tron/
Currently ten target systems are supported:
Sinclair ZX81
Jupiter Ace
Mattel Aquarius
Philips P2000
Philips VG5000
Robotron Z 1013
Robotron Z 9001 (KC 87)
Tandy TRS-80
EACA EG2000 Colour Genie
VZ 200 / Laser 310
As you can see, I prefer rather obscure machines. Other criteria were the availability of blocky low-res graphics and either ANSI or native console support.
Usability of the two-player-mode is currently very limited on all systems other than the ZX81 because the status of two buttons cannot be checked simultaneously. This is why an in_KeyPressed() function would be nice to have on at least some non-Sinclair Systems as well.
I hope that my source code will help other newcomers making their first steps into z88dk programming (I have learned a lot from other people's programs). I have also included a "simple source" version (non-portable for ZX81 only) that is much easier to read than the portable one.
Here are a few screenshots:
Sinclair ZX81
Jupiter Ace
Philips P2000
Philips VG5000
Tandy TRS-80
EACA EG2000 Colour Genie
New cross-platform game: H-Tron
I've just committed VG5k support. I've updated the joystick() function to use the actual joysticks as well (https://github.com/z88dk/z88dk/issues/779)
Well...Other criteria were the availability of blocky low-res graphics
I just added c_plot, c_unplot, c_xorplot and c_point functions that emulate the low-res graphics on platforms that have a higher resolution. It's a bit of a cheat since it actually plots 16 underlying pixels, but it might allow you to run HTron on other machines - your test program runs on the Colecovision for example.
I have just updated the Sourceforge project and uploaded a new release of my game:
2018-07-10:
- New targets supported:
Casio PV-1000
ColecoVision
Exidy Sorcerer
Mitsubishi Multi 8
Samsung SPC-1000
Triumph Adler Alphatronic PC
- VG5000, TRS-80, EG2000, Aquarius: new keyboard input method makes the two-player mode usable
- VZ 200 / Laser 310: "Visible Cursor Problem" (that occured occasionally) hopefully solved
- Bugfixes: correct random seed initialization, automatic round restart (on some systems, without space or 0 pressed) fixed
On the SPC-1000, the speed of the game is unfortunately quite erratic, the game is not really playable like that. I am not sure if this is maybe a feature of the Takeda emulator. Fans of that system are of course invited to improve my source code.
@dom: in the ColecoVision and Multi8 versions you can see how c_plot() performs. This is indeed a very useful addition, with only a few additional lines of code we can port a low-res game to a high-res system.
2018-07-10:
- New targets supported:
Casio PV-1000
ColecoVision
Exidy Sorcerer
Mitsubishi Multi 8
Samsung SPC-1000
Triumph Adler Alphatronic PC
- VG5000, TRS-80, EG2000, Aquarius: new keyboard input method makes the two-player mode usable
- VZ 200 / Laser 310: "Visible Cursor Problem" (that occured occasionally) hopefully solved
- Bugfixes: correct random seed initialization, automatic round restart (on some systems, without space or 0 pressed) fixed
On the SPC-1000, the speed of the game is unfortunately quite erratic, the game is not really playable like that. I am not sure if this is maybe a feature of the Takeda emulator. Fans of that system are of course invited to improve my source code.
@dom: in the ColecoVision and Multi8 versions you can see how c_plot() performs. This is indeed a very useful addition, with only a few additional lines of code we can port a low-res game to a high-res system.
Cool project!
Consider supporting 6809 and 6502 architectures with CMOC and CC65 compilers.
CC65 now supports low res graphics on all Commodore systems.
CoCo/Dragon have pseudo-graphics characters to implement low res graphics.
Maybe something can be done about the Nascom target. Is it much slower than the ZX81?
Consider supporting 6809 and 6502 architectures with CMOC and CC65 compilers.
CC65 now supports low res graphics on all Commodore systems.
CoCo/Dragon have pseudo-graphics characters to implement low res graphics.
Maybe something can be done about the Nascom target. Is it much slower than the ZX81?
Thanks! I was already thinking about using cc65 too because I will soon run out of Z80 targets. :-) So far I have only made a little C64 hi-res graphics test with cc65, but nothing else.
What would be the right place to ask cc65-related questions? Is there a cc65 forum like this one?
Maybe I didn't search for it properly, but the documentation for cc65 is a little confusing for beginners...
A systems overview list as we have it for z88dk would be nice to have.
> CC65 now supports low res graphics on all Commodore systems.
What is the low-res equivalent for our plot() function? Let's say on the VIC20?
The first step will be to get my plot test (see here for an older version) running on the CC65 systems.
> Maybe something can be done about the Nascom target. Is it much slower than the ZX81?
Now I am no longer sure whether the Nascom is really such a so slow machine. Maybe the z88dk display routines for that target still have potential for optimization? We had a similar problem with the Camputers Lynx: first it was running very slowly, but then Dom was able to dramatically improved the display routines, resulting in more speed than I need for my game.
The Nascom is a really interesting target that would deserve its z88dk code to be revisited...
What would be the right place to ask cc65-related questions? Is there a cc65 forum like this one?
Maybe I didn't search for it properly, but the documentation for cc65 is a little confusing for beginners...
A systems overview list as we have it for z88dk would be nice to have.
> CC65 now supports low res graphics on all Commodore systems.
What is the low-res equivalent for our plot() function? Let's say on the VIC20?
The first step will be to get my plot test (see here for an older version) running on the CC65 systems.
> Maybe something can be done about the Nascom target. Is it much slower than the ZX81?
Now I am no longer sure whether the Nascom is really such a so slow machine. Maybe the z88dk display routines for that target still have potential for optimization? We had a similar problem with the Camputers Lynx: first it was running very slowly, but then Dom was able to dramatically improved the display routines, resulting in more speed than I need for my game.
The Nascom is a really interesting target that would deserve its z88dk code to be revisited...
I've had a look at the Nascom and can see the following:
- Printing text is really fast (it pretty much just appears)
- Demo mode Htron is a little sluggish
I've changed the graphics handling to go via gencon rather than have a separate bit of code and graphics appear to be a little faster - the demo mode is now a bit more fluid. The fact that the target is a 3x2 in each character block does make things a bit slower than than the 2x2 targets, but the display routine is so simple that it should make up for it!
However, by the sounds of things I don't think what I'm seeing is representative of the experience that you're seeing - it seems like the emulators (or builds of) both of you are using are significantly slower than one I'm using.
It's probably time for video clips to see if there is a difference!
- Printing text is really fast (it pretty much just appears)
- Demo mode Htron is a little sluggish
I've changed the graphics handling to go via gencon rather than have a separate bit of code and graphics appear to be a little faster - the demo mode is now a bit more fluid. The fact that the target is a 3x2 in each character block does make things a bit slower than than the 2x2 targets, but the display routine is so simple that it should make up for it!
However, by the sounds of things I don't think what I'm seeing is representative of the experience that you're seeing - it seems like the emulators (or builds of) both of you are using are significantly slower than one I'm using.
It's probably time for video clips to see if there is a difference!