retrohackers.org
https://retrohackers.org/

LIGHT GUN and trigger...
https://retrohackers.org/viewtopic.php?f=1&t=552
Page 1 of 1

Author:  MIRKOSOFT [ Wed Jan 20, 2010 4:57 pm ]
Post subject:  LIGHT GUN and trigger...

Hi!

I'm user of C128DCR and now owner of light gun Cheetah DEFENDER64.

What's my problem?

I can aim to target on screen and light gun it indicates, but I can't to get trigger status.

I tried IRQ, of course $DC01 (JoyPort1), commands COLLISION and PEN(x) in BAISC V7.
In assembler it was easier, but I can't detect if is trigger holding down or released...

Can anybody help me?

Thanks for every help.

Miro

Author:  mistermsk [ Wed Jan 20, 2010 8:58 pm ]
Post subject:  Re: LIGHT GUN and trigger...

I assume you tried Gangster or Time Traveler which I believe are Light Gun games for the Commodore 64, correct? Just trying to find out if the problem you are having is the Light Gun functioning or are you just trying to get the status interrupt only? Kinda' veg when you posted.

Author:  MIRKOSOFT [ Wed Jan 20, 2010 9:16 pm ]
Post subject:  Re: LIGHT GUN and trigger...

Hi!

Yes, I tried games, no problem, works.

My problem is that I want to programming Light Gun.

Position is not problem, but I don't know how detect trigger.

Usually ways as $DC01, IRQ, PEN(4), COLLISION works not - exactly - some changes are in $DC01.

If I check $DC01 in assembler, when I aim at screen value $FF changes to $EF (like fire is pressed), but I don't press trigger...
...and if I press trigger, no values are changed...

Miro

Author:  mistermsk [ Wed Jan 20, 2010 9:28 pm ]
Post subject:  Re: LIGHT GUN and trigger...

In 64 Mode (Holding the C= Key down on power on) try:
Code:
100 REM * LIGHT PEN DEMO *
150 A$=CHR$(147):PRINTA$
160 PRINTTAB(10)"THREE CHOICES"
170 PRINT:PRINT
180 PRINTTAB(5)"* CHOICE ONE"
190 PRINT:PRINT:PRINT:PRINT
200 PRINTTAB(5)"* CHOICE TWO"
210 PRINT:PRINT:PRINT:PRINT
220 PRINTTAB(5)"* CHOICE THREE"
230 A=PEEK(53267):B=PEEK(53268)
240 IF A>55 THEN 230
250 IF (B>70) AND (B<80) THEN 300
260 IF (B>110) AND (B<120) THEN 330
270 IF (B>150) AND (B<160) THEN 360
290 GOT0230
300 PRINTA$
310 PRINT"CHOICE ONE"
320 GOTO 400
330 PRINTA$
340 PRINT"CHOICE TWO"
350 GOTO 400
360 PRINTA$
370 PRINT"CHOICE THREE"
400 FOR I=0 TO 1500
410 NEXT I:PRINT
420 PRINT"* CONTINUE"
430 IF PEEK(53267)<55 AND PEEK(53268) <70{2 SPACES}THEN 150
440 GOTO 430

(taken from here.)
and then run it. If I am not mistaken all a light gun is, is a light pen. Instead of pressing the pen to the screen (which makes it like the fire button) they made the trigger (switch) external.

Author:  MIRKOSOFT [ Wed Jan 20, 2010 9:37 pm ]
Post subject:  Re: LIGHT GUN and trigger...

Yes, I know this example.

I have also Light pen. This demo works correctly with both devices (Light gun and Light pen).
But this demo checks not trigger/light pen press...
I reprogrammed this demo for detect pressing, light pen works ok, light gun not.
There's the problem - light gun has other indicating of pressing trigger...
and I don't know it.

Miro

Author:  RaveGuru [ Thu Jan 21, 2010 1:13 pm ]
Post subject:  Re: LIGHT GUN and trigger...

Did you check the paddle triggers? Enable paddles by writing #$c0 to $dc00 and check for activity in $dc00 or $dc01. Don't forget to set the DDR registers to input...

Author:  mistermsk [ Mon Jan 25, 2010 6:02 pm ]
Post subject:  Re: LIGHT GUN and trigger...

I found this artical that shows the light gun trigger is pin 6, which is odd because that IS the fire button.

I also found this program at 64HDD under Projects. It also uses pin 6. It has a basic program that should work for you.

Let Us Know,
MisterMsk

Author:  MIRKOSOFT [ Mon Jan 25, 2010 6:37 pm ]
Post subject:  Re: LIGHT GUN and trigger...

Thank you for support.

I found with help that if I'm checking (pot(2)and255) it gives back to me value 2, then I'm checking coordinates normally, here's example:

100 rem * light gun demo *
110 color0,2:color4,14:color5,1
150 a$=chr$(147):printa$:x=0:y=0:z=0
160 printtab(10)"shoot targets!"
180 char1,5,5,"O"
200 char1,5,10,"O"
220 char1,5,15,"O"
230 if(pot(2)and255)<>2then230
235 a=pen(0):b=pen(1)
250 if (b>75) and (b<90) then char1,5,5,
"0":x=1
260 if (b>110) and (b<135) then char1,5,
10,"0":y=1
270 if (b>145) and (b<170) then char1,5,
15,"0":z=1
280 ifx=1andy=1andz=1thenchar1,10,20,"yo
u passed!":end
290 goto230

Also thanks for every help.

Miro

Page 1 of 1 All times are UTC [ DST ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/