(classic) New target: Casio PV-2000

Post Reply
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

(classic) New target: Casio PV-2000

Post 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
User avatar
RobertK
Well known member
Posts: 347
Joined: Mon Feb 26, 2018 12:58 pm

Post 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.
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Post 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.
User avatar
dom
Well known member
Posts: 2076
Joined: Sun Jul 15, 2007 10:01 pm

Post 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!
User avatar
RobertK
Well known member
Posts: 347
Joined: Mon Feb 26, 2018 12:58 pm

Post 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.
Post Reply