Wild Streets (Titus) bug, or incompatibility with +2A models?

General software. From trouble with the Banyan Tree to OCP Art Studio, post any general software chat here. Could include game challenges...
Post Reply
User avatar
Ivanzx
Manic Miner
Posts: 736
Joined: Tue Nov 14, 2017 9:51 am

Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ivanzx »

This issue was reported by me in the old WoS forums and now that I am playing it again, I came across the same problem: Once the boss is killed in the first level, you have to go to the right extreme of the screen to pass the level, just as Ralf did in the RZX, but everytime I do it, the game freezes, no matter what keys I am pressing or how much time I wait, the game is frozen forever. I have loaded the game in my +2A in 128k and 48k modes, with the same result :?
Ralf
Rick Dangerous
Posts: 2286
Joined: Mon Nov 13, 2017 11:59 am
Location: Poland

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ralf »

Hi Ivan, I don't remember details, I was recording it several years ago. But I don't remember any problems too.
It may be this particular model issue.

Maybe [mention]Bandit[/mention] would be able to help us? ;)
User avatar
djnzx48
Manic Miner
Posts: 730
Joined: Wed Dec 06, 2017 2:13 am
Location: New Zealand

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by djnzx48 »

It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
User avatar
Ivanzx
Manic Miner
Posts: 736
Joined: Tue Nov 14, 2017 9:51 am

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ivanzx »

djnzx48 wrote: Sun Jun 07, 2020 5:00 am It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
Wow, so in the end it was a bug! Thanks a lot for checking it :)
User avatar
Einar Saukas
Bugaboo
Posts: 3098
Joined: Wed Nov 15, 2017 2:48 pm

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Einar Saukas »

djnzx48 wrote: Sun Jun 07, 2020 5:00 am It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
Does it work if you connect a Kempston joystick but chose to play with the keyboard, and use Kempston just to press FIRE at the end of each level?
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2641
Joined: Mon Nov 13, 2017 3:16 pm

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ast A. Moore »

djnzx48 wrote: Sun Jun 07, 2020 5:00 am It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
Interesting. I haven’t looked at the code, but with no Kempston interface connected, the port will read all lines as high, meaning it will consider every button—the directions and fire—pressed. So, theoretically, the game should proceed to the next level without any user intervention.

Unless it expects a specific byte from the port (0x10), rather than checking for just Bit 4.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
User avatar
djnzx48
Manic Miner
Posts: 730
Joined: Wed Dec 06, 2017 2:13 am
Location: New Zealand

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by djnzx48 »

Einar Saukas wrote: Sun Jun 07, 2020 1:50 pm
djnzx48 wrote: Sun Jun 07, 2020 5:00 am It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
Does it work if you connect a Kempston joystick but chose to play with the keyboard, and use Kempston just to press FIRE at the end of each level?
Yes, it does. I made a small patch to allow advancing to the next level without a Kempston joystick connected. (You just have to press the '0' key or the fire button on an Interface 2 joystick.)

Code: Select all

$768e $5f         ld e, a
$768f $3a $d3 $76 ld a, ($76d3)
$7692 $b7         or a
$7693 $7b         ld a, e
$7694 $c8         ret z
                  
$7695 $db $1f     in a, ($1f)
$7697 $fe $ff     cp $ff
$7699 $c8         ret z
Ast A. Moore wrote: Sun Jun 07, 2020 2:13 pm
djnzx48 wrote: Sun Jun 07, 2020 5:00 am It looks like this game was only tested using a Kempston joystick. Try pressing 'fire' on the joystick once you reach the end of the stage, and you should be taken to the next stage. With the keyboard it seems to be impossible.
Interesting. I haven’t looked at the code, but with no Kempston interface connected, the port will read all lines as high, meaning it will consider every button—the directions and fire—pressed. So, theoretically, the game should proceed to the next level without any user intervention.

Unless it expects a specific byte from the port (0x10), rather than checking for just Bit 4.
Take a look at the code, if you dare. I don't know what they were thinking exactly, but the authors didn't find it necessary to read the Kempston port just once each time they needed a movement input. Instead the port gets read four times in a row (the first three inputs are simply thrown away).

The game explicitly tests for a Kempston interface after loading. The main problem is that the input routine returns with zero in A if the interface wasn't present, otherwise A ends up holding a joystick input (basically by chance). The calling routine mistakenly treats this return value as a valid input, causing the game to freeze if there's nothing connected.

I also noticed an odd bug in the game: if you press 'P' while moving to the left or right, everything locks up, and loading stripes may or may not appear.
User avatar
Ast A. Moore
Rick Dangerous
Posts: 2641
Joined: Mon Nov 13, 2017 3:16 pm

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ast A. Moore »

Well, it’s not easy to support auto-detection of multiple input interfaces. It’s bound to lead to bugs or lockups. I’ve been down that road, and it’s pretty bumpy.
Every man should plant a tree, build a house, and write a ZX Spectrum game.

Author of A Yankee in Iraq, a 50 fps shoot-’em-up—the first game to utilize the floating bus on the +2A/+3,
and zasm Z80 Assembler syntax highlighter.
Patrik Rak
Microbot
Posts: 116
Joined: Mon Apr 13, 2020 3:07 pm

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Patrik Rak »

Ast A. Moore wrote: Sun Jun 07, 2020 3:52 pm Well, it’s not easy to support auto-detection of multiple input interfaces.
Zynaps does that brilliantly. Whatever you start using, it automatically adjusts to it.
User avatar
Ivanzx
Manic Miner
Posts: 736
Joined: Tue Nov 14, 2017 9:51 am

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by Ivanzx »

Would it be possible to fix this via Pokes? :)
User avatar
djnzx48
Manic Miner
Posts: 730
Joined: Wed Dec 06, 2017 2:13 am
Location: New Zealand

Re: Wild Streets (Titus) bug, or incompatibility with +2A models?

Post by djnzx48 »

POKE 30350, 95
POKE 30351, 58
POKE 30352, 211
POKE 30353, 118
POKE 30354, 183
POKE 30355, 123
POKE 30356, 200
POKE 30357, 219
POKE 30358, 31
POKE 30359, 254
POKE 30360, 255
POKE 30361, 200
Post Reply