#221 joystick problems

closed-fixed
nobody
None
5
2005-12-27
2005-12-25
Patriek Lesparre
No

Several games in the MSXdev'05 competition have
problems with the joystick in openMSX. The following
games have been tested with openMSX 0.5.2 using several
configurations.

- Caverns of Titan only works in port 2

- Namake's Bridgedome works in port 1 until the
titlescreen. If you input a password on the
titlescreen, joystick port 1 will continue to work
throughout the game. But if you start the game straight
away, joystick in port 1 fails to work and must be
replugged into port 2 for the rest of the game.

These games have been disassembled and no erroneous
code has been found, both using BIOS calls as per the
BIOS specifications. Both have been verified on real
MSX machines to work correctly.

Curiously, using C-BIOS configs there is no problem.

Discussion

    • status: open --> closed-fixed
     
  • Logged In: YES
    user_id=356949

    I only checked "Caverns of Titan". The game writes the value
    56 to PSG register 7. So it programs portB as input! Because
    of this the joystick select bit doesn't work anymore and
    thus only joystick port B is read.

    If I change the openMSX code to always use the normal MSX
    port directions, both joystick ports work fine.

    On what type of real MSX machines has this been tested? On
    machines with a real AY8910 chip it will also go wrong.
    Newer MSX machine often have the AY8910 integrated in some
    other chip and there the port direction selection is usually
    omitted.

    We already forced portA to input to fix games like "Match
    Manic". I'll also force portB to output to fix these games.
    We need to make this configurable in the future.

     
  • Logged In: YES
    user_id=1004619

    Thanks, I completely forgot to check PSG R#7 writes. It
    didn't occur to me that this would be the side-effect it
    produces.

    It appears all these games use the PT3 tracker, which was
    ported from Spectrum. Apparantly the porter was a bit
    careless or just didn't realise.

    Would it be possible to make openMSX give a big flashy
    warning when a program writes these hazardous values to R#7?
    It's known to cause hardware crashes and possible permanent
    damage.

     
  • Logged In: YES
    user_id=1004619

    Additionally, why doesn't this affect C-BIOS?
    The R#7 values are still wrong using it and according to
    BiFi the C-BIOS GETSTCK routine (which these games use) does
    not correct them.