Page 1 of 1

(classic) New target: Casio PV-2000

Posted: Tue May 22, 2018 10:19 pm
by dom
Released at about the sometime as the PV-1000, but with a completely different graphic and sound chips. The PV-2000 uses fairly similar hardware to the MSX, as such it should be fairly easy to port MSX/M5/MTX/SG-1000/etc etc programs to it.

Specs:

* CPU: Z80 @ 3.579 Mhz
* VDP: TMS9918, 16k VRAM
* PSG: SN76489
* RAM: 4k
* ROM: 16k

Wiki Link:

* https://github.com/z88dk/z88dk/wiki/Pla ... sio-PV2000

Somewhat unusually, the TMS9918 is memory mapped rather than hanging off a couple IO ports.

Due to a lack of (or my inability to find...) a suitable ROM routine there's support for the input.h keyboard routines.

The memory is a bit tight on this machine, so not all of the MSX examples will work.

Not hooked in yet:

- PSG
- Joystick

Posted: Sun Jul 22, 2018 2:11 pm
by RobertK
The new release of my game H-Tron now supports the Casio PV-2000 using c_plot() and c_point() to achieve a 64x48 resolution.

The game is basically fully functional on that target. However, the screen shows a few graphics glitches:

Image

You see some occasional unwanted dots and lines.

Furthermore, occasionally c_plot() seems to return a wrong result because sometimes the computer opponent is able to drive *through* a wall.

Please check if maybe there is a bug in the graphics functions. It seems to me that the problems always occur on specific screen locations.

Posted: Sun Jul 22, 2018 2:42 pm
by dom
That's definitely odd - the code is mostly shared with the Colecovision - the only difference is memory mapped VDP ports rather than IO based VDP ports.

I'll check the interrupt code and make sure that all interaction with the VDP are uninterruptible.

Posted: Mon Jul 23, 2018 8:42 pm
by dom
This should now be sorted - the NMI needed to be hooked instead of the maskable interrupt. The ROM NMI code is obviously doing things to the VDP on the line interrupt and messing up the VDP registers for us.

Though, I'm not sure what the maskable interrupt is actually used for now of course!

Posted: Sat Jul 28, 2018 7:53 am
by RobertK
RobertK wrote:Furthermore, occasionally c_plot() seems to return a wrong result because sometimes the computer opponent is able to drive *through* a wall.
Sorry, I meant c_point().

Thanks, all the problems are fixed, now everything works as it should. I have released a new version of my game with an updated PV-2000 .rom cartridge file. BTW, I have also included support for the Sega SC-3000.