Jump to content

Photo

Pad 1.5 beta


75 replies to this topic

#26 Allan OFFLINE  

Allan

    Quadrunner

  • 5,135 posts
  • Location:Wallingford, CT

Posted Wed Dec 28, 2011 6:04 PM

Very nice. Is there any chance you could make it work with the CMI08 PC mouse adapter?

http://www.atariage....ouse-interface/


Allan

Edited by Allan, Wed Dec 28, 2011 6:10 PM.


#27 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Wed Dec 28, 2011 7:39 PM

Very nice. Is there any chance you could make it work with the CMI08 PC mouse adapter?

http://www.atariage....ouse-interface/

Allan


From a fast look at that thread, it seems that is mostly the same that doing the work for one paddle.. in that case it is possible (and can be tested in Altirra).
Maybe in version 1.8, but no promises :)

Edit:
Hmmmm.. but the manual says that you can put it "St-mouse" mode:
"when pushing the left and right button while the middle button is
pressed the interface is instructed to operate in ST mouse mode"
It should already work then.. or am I wrong?

Edited by NRV, Wed Dec 28, 2011 7:53 PM.


#28 Stephen OFFLINE  

Stephen

    River Patroller

  • 4,448 posts
  • A8 Gear Head
  • Location:Akron, Ohio

Posted Wed Dec 28, 2011 8:13 PM

Edit:
Hmmmm.. but the manual says that you can put it "St-mouse" mode:
"when pushing the left and right button while the middle button is
pressed the interface is instructed to operate in ST mouse mode"
It should already work then.. or am I wrong?

It should just work, if the game supports the ST mouse (which it does).

#29 Allan OFFLINE  

Allan

    Quadrunner

  • 5,135 posts
  • Location:Wallingford, CT

Posted Wed Dec 28, 2011 9:35 PM


Very nice. Is there any chance you could make it work with the CMI08 PC mouse adapter?

http://www.atariage....ouse-interface/

Allan


From a fast look at that thread, it seems that is mostly the same that doing the work for one paddle.. in that case it is possible (and can be tested in Altirra).
Maybe in version 1.8, but no promises :)

Edit:
Hmmmm.. but the manual says that you can put it "St-mouse" mode:
"when pushing the left and right button while the middle button is
pressed the interface is instructed to operate in ST mouse mode"
It should already work then.. or am I wrong?


Thanks. I'll give it a shot.

And I just did and it works like a charm. Much better than the ST mouse.

Allan

Edited by Allan, Wed Dec 28, 2011 9:42 PM.


#30 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Wed Dec 28, 2011 10:30 PM

Nice!, is good to know that the code supports a better mouse then.

I know that there is a mouse speed parameter in Altirra, but I don't know exactly what it represents.. anyone have any info on that? Phaeron?

#31 w1k OFFLINE  

w1k

    Stargunner

  • 1,340 posts
  • Location:martin, slovakia

Posted Thu Jan 12, 2012 4:24 AM

something new in development?:)

#32 Irgendwer OFFLINE  

Irgendwer

    Dragonstomper

  • 737 posts
  • Location:Germany

Posted Thu Jan 12, 2012 2:04 PM

Yep, I agree, the only problem that I remember from using the pads in the 2600 (with super breakout, video Olympics, etc) was the constant jitter. Just for that I prefer a little the mouse.


This should help:

http://www.atariage....86#entry2100486

#33 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Thu Jan 12, 2012 3:35 PM

something new in development? :)


Not for now..

This should help:

http://www.atariage....86#entry2100486


Thanks, I didn't remember that.. if someone request paddle controls I'm going to give it a try.

#34 Jacques OFFLINE  

Jacques

    Chopper Commander

  • 244 posts
  • Location:Wrocław, Poland

Posted Fri Jan 13, 2012 4:36 PM

Just ran the game for the first time, so will need to start playing first in order to give any impression.

But one thing: could you make a change that the game uses mouse in PORT 2? It's a common solution in most Atari programs using mouse. That joystick stays in port 1, but the mouse uses PORT2.

#35 Philsan ONLINE  

Philsan

    River Patroller

  • 2,700 posts
  • New Orleans Saints Super Bowl XLIV Champions
  • Location:Switzerland

Posted Sat Jan 14, 2012 6:53 AM

But one thing: could you make a change that the game uses mouse in PORT 2? It's a common solution in most Atari programs using mouse. That joystick stays in port 1, but the mouse uses PORT2.

+1

#36 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 4,970 posts
  • Recruiting players for the High Score Club
  • Location:High Score Club of course - JOIN IN!

Posted Sun Jan 15, 2012 4:33 PM

Great work NRV, looks like an Atari-ST game :thumbsup:
Great sound effect too & liking the metallic bricks :thumbsup:

You should consider posting this in the main A8 forum as people might have missed it :)

Here's my thoughts: [Played PAL version on 130XE&800XL]
  • Definitely port default to 2nd joystick port or at least an option to select it.
  • Easy is plenty easy enough but I think the Arcade mode is a touch too hard for most people - maybe slow it down a little. It's nice that you can keep the multi-balls going for a while but it's still a touch too difficult. The only reason to keep the game hard would be if there were only a few levels. How many are there? What happens at the end re difficulty/ending?
  • I'd prefer fewer power-ups.
  • I think power-ups should have small or better still no scoring value
  • The bricks and doing the levels should be where the points are - the power-ups should not be the focus of the game - consistent scoring to reward game progress not just luck.
  • I'd remove the skip level power-up unless the game has an end (like arcanoid where you are trying to reach this)
  • I like that there is not a shooting power up and you have the mega ball :thumpsup:
  • If you got really adventurous how about combining the power ups - especially the multi ball with hot ball or long bat would be :cool:
If anyone needs a mouse I bought one from www.st-freakz.co.uk via ebay a while ago. Works perfectly with this and the awesome KESoft's Brundles using the back of a regular foam mouse mat (needs a quick bit of shaving with a knife to fit 130XE's ports) ;-)

trbb

[yes - paddle controls would open this up to more players - might need some sensitvity adjustment settings re 130XE etc being shaky]

had another session today around 45K best I could do!
Please can you disable the reset trapping so it reboots (I ran PAD from mydos/mypicodosmenu) thanks :)

Edited by therealbountybob, Wed Jan 18, 2012 6:59 AM.


#37 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Tue Jan 17, 2012 12:00 AM


But one thing: could you make a change that the game uses mouse in PORT 2? It's a common solution in most Atari programs using mouse. That joystick stays in port 1, but the mouse uses PORT2.

+1


Here's my thoughts: [Played PAL version on 130XE&800XL]

  • Definitely port default to 2nd joystick port or at least an option to select it.
  • Easy is plenty easy enough but I think the Arcade mode is a touch too hard for most people - maybe slow it down a little. It's nice that you can keep the multi-balls going for a while but it's still a touch too difficult. The only reason to keep the game hard would be if there were only a few levels. How many are there? What happens at the end re difficulty/ending?
  • I'd prefer fewer power-ups.
  • I think power-ups should have small or better still no scoring value
  • The bricks and doing the levels should be where the points are - the power-ups should not be the focus of the game - consistent scoring to reward game progress not just luck.
  • I'd remove the skip level power-up unless the game has an end (like arcanoid where you are trying to reach this)
  • I like that there is not a shooting power up and you have the mega ball :thumpsup:
  • If you got really adventurous how about combining the power ups - especially the multi ball with hot ball or long bat would be :cool:
trbb

Please can you disable the reset trapping so it reboots (I ran PAD from mydos/mypicodosmenu) thanks :)


Hi!

I have already working the 2nd port option for the controllers (press "C" to choose the controller and port now). I also added a "casual" difficulty mode that is easier than "arcade" (the starting speed, the max speed and the "touching-the-top" speed are one step lower, and the time that it takes the ball to speed up is 40 seconds, instead of 20).

Attached File  pad_v5.zip   17.68KB   84 downloads

The only problem with this version is that the high score is for both, casual and arcade. I'm going to fix this soon.

Right now there are 28 levels ordered in a "tree like" structure. You start from level 1a and you can choose to go to levels 2a or 2b (left or right exit at the end of the level). From 2a you can go to 3a or 3b. From 2b you can go to 3b or 3c. So, for the first level you have only one option, for the second 2, for the third 3 .. and for the seventh level you have 7 possible options. It's done like this so one play through doesn't take too much time and to give an "exploration" feeling to the game. Obviously there is probably only one branch that can give you the highest score and I tried to balance that with the difficulty of the branches. The game ends (you win and go back to the menu) when you complete the seventh level.

I want to add another game mode with almost the same levels, but organized in 14 or 15 levels in two branches (left and right, like with arkanoid 2). I will try to add also one simple enemy to this one.

About the powerups: many of the decisions about them are oriented to replicate the feeling of the arkanoid arcade games for now. I didn't wanted to introduce originals ideas yet, mostly because I didn't have much time to test them also, but I should say that the current system doesn't have a random element "that" big.. is true that the number of powerups generated can change a little between plays of the same level, but the principal factor of that is your play style, because the bricks that can generate powerups are fixed in every level (you can get this info for the Arkanoid 1 levels with a tool called ArkEdit) and the two most important rules for powerup generation are that: there is no powerup generated while there is another one falling and also when the multi ball is active.

arkedit.png

So the gameplay right now, if you want a high score, is oriented to get all the possible powerups, what adds a big "risk / reward" factor.. that I like.
I like to think about the powerups as the "spice" of the levels, if not sometimes they are too plain and boring. I'm also pro a little random factor in some games, in between poker and chess I suppose :).

I added a rule to get a $5000 bonus score if passing the level without losing (I hope you read the scoring rules in the first post!). The "skip level" powerup can get you out of a difficult level and give you a bonus of $10000, but a real good player will try to advance that level till the end, without using the exits (what is very difficult), to score more points and get that $5000 bonus also.

Yeah, I also prefer the mega ball to the laser :) (is more in the "spirit" of these games).

I can make little adjusts and organize some special game modes if people want it, but I don't want to dedicate too much time to this project for now, because of another "priorities". That's why I don't want to implement combining powerups right now, but it can give you very interesting options, I agree :) (Arkanoid Returns does something like that... also Blasterball 3 did that well, but maybe the recomendation comes from too near :D).

Regards.

(About the reset trapping.. should investigate a little, I'm not doing it on purpose, but I normally deactivate the OS and use all of page zero).
(Going to look at paddle support also).

#38 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 4,970 posts
  • Recruiting players for the High Score Club
  • Location:High Score Club of course - JOIN IN!

Posted Tue Jan 17, 2012 7:30 AM

:cool: this is a really excellent game, It's nice when you catch a slow then a multi-ball. I like the choice of levels feature.

Will be playing v5 tonight :)

#39 Jacques OFFLINE  

Jacques

    Chopper Commander

  • 244 posts
  • Location:Wrocław, Poland

Posted Tue Jan 17, 2012 4:15 PM

After loading the game arcade is selected by default. Pressing D swaps between easy and casual, but arcade option gets gone completely.

Edited by Jacques, Tue Jan 17, 2012 4:16 PM.


#40 Bryan OFFLINE  

Bryan

    Quadrunner

  • 8,282 posts
  • Cruise Elroy = 4DB7
  • Location:Puriscal, Costa Rica

Posted Tue Jan 17, 2012 6:59 PM


Paddle is the natural controller for such games.


Yep, I agree, the only problem that I remember from using the pads in the 2600 (with super breakout, video Olympics, etc) was the constant jitter. Just for that I prefer a little the mouse.

In Castle Crisis I used a little hysteresis. If the paddle moves in the direction of the previous movement, then the new position is accepted, but if the paddle starts moving the other way, it needs a difference of 2 or 3 before the position will change and the "current direction" is changed. This keeps the controlled object from being able to wiggle back and forth.

If the pots are in good shape the paddles work pretty well but the pots get dirty with age and non-use. In Atari's arcade machines, the pots are much more reliable because they are wired in voltage mode rather than current mode.

#41 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Tue Jan 17, 2012 7:24 PM

After loading the game arcade is selected by default. Pressing D swaps between easy and casual, but arcade option gets gone completely.


Ooooops.. casual is there two times.. don't change arcade if you want to play that for now :)

In Castle Crisis I used a little hysteresis. If the paddle moves in the direction of the previous movement, then the new position is accepted, but if the paddle starts moving the other way, it needs a difference of 2 or 3 before the position will change and the "current direction" is changed. This keeps the controlled object from being able to wiggle back and forth.


Ok, thanks.
Do you know if is useful to sample the paddles many times in a frame and average the results?
I would like to know how many times can the value change in a frame.. but probably in the editor the behavior is different.

#42 Stephen OFFLINE  

Stephen

    River Patroller

  • 4,448 posts
  • A8 Gear Head
  • Location:Akron, Ohio

Posted Tue Jan 17, 2012 7:44 PM



Paddle is the natural controller for such games.


Yep, I agree, the only problem that I remember from using the pads in the 2600 (with super breakout, video Olympics, etc) was the constant jitter. Just for that I prefer a little the mouse.

In Castle Crisis I used a little hysteresis. If the paddle moves in the direction of the previous movement, then the new position is accepted, but if the paddle starts moving the other way, it needs a difference of 2 or 3 before the position will change and the "current direction" is changed. This keeps the controlled object from being able to wiggle back and forth.

If the pots are in good shape the paddles work pretty well but the pots get dirty with age and non-use. In Atari's arcade machines, the pots are much more reliable because they are wired in voltage mode rather than current mode.

I tried to write some "de-jitter" code for a project I am working on. It works, but has a bug. The paddle doesn't jitter, but occasionally the end of range checking is off by one pixel. Never did get it debugged, I should re-visit that.

#43 Bryan OFFLINE  

Bryan

    Quadrunner

  • 8,282 posts
  • Cruise Elroy = 4DB7
  • Location:Puriscal, Costa Rica

Posted Tue Jan 17, 2012 7:52 PM

Ok, thanks.
Do you know if is useful to sample the paddles many times in a frame and average the results?
I would like to know how many times can the value change in a frame.. but probably in the editor the behavior is different.


Well, you have to wait quite a while after POTGO before the results are ready so this isn't really an option (I don't think I've ever messed with fast pot scanning, though). You just have to leave it up the user to get good paddles. Turning them end to end a few dozen times can greatly improve their accuracy, and there are pot cleaning sprays.

#44 Bryan OFFLINE  

Bryan

    Quadrunner

  • 8,282 posts
  • Cruise Elroy = 4DB7
  • Location:Puriscal, Costa Rica

Posted Tue Jan 17, 2012 8:02 PM

Castle Crisis input code:

;Warlords XL Inputs code...
;2003 Bryan Edewaard
;Uses aux temps0,1

inputs

#IFDEF showdli
	lda #$58		;Light Purple
	sta COLBK
#ENDIF

#IFDEF tracking
	ldx #$84
	stx test
#ENDIF

	lda gamemode		;Not during pause
	cmp #07
	beq inputs2
	
	lda humans
	and gameon		;No human inputs if no game
	asl a
	asl a
	asl a
	asl a
	sta atemp1

;Update the Paddle Values
	ldx #$03		;Read 4 Pots
	
potloop
	asl atemp1
	bcs potcont

	lda padtmp,x		;If a computer player, padtmp is AI player
	bpl potplus

	cmp #$B0		;Clip negative values to B0 or higher
	bcs potsave
	lda #$B0
	bne potsave

potplus
	cmp #$51		;Clip positive values to 50 or less
	bcc potsave
	lda #$50

potsave
	sta shldpos0,x
	
	jmp nextpot

potcont

	lda POT0,x


	;Adjust for a Paddle offset value (adjust where the active
	;portion of the paddle is).

	sec
	sbc #POFFSET		;Subtract an offset value (26 or less)

	;Did this generate a less-than-zero result?

	bcs potskip1		;No, no adjustment needed
	lda #00			;Yes, <0 becomes 0
	bcc potskip2		;skip the next test
	
	;Did this generate a greater than 160 result?

potskip1
	cmp #161		;In range?
	bcc potskip2		;Yes, skip down
	lda #160		;No, adjust to 160	
	clc			;We got here because Carry was set

potskip2	
	sta atemp0		;Save the final value
	
	;Take the new value and modify it to +1 if the momentum is forward

	adc paddir0,x		;Get "resistance" direction (0 or 1)
	
	;Now subtract the old value
	
	sec
	sbc padtmp,x		;Subtact the old value
	
	;Carry is clear if the old value was bigger (we're going backwards)
	;Move the result to Y so we can use A

	tay			;Copy of the result in Y
	lda #0			;Clear A
	rol a			;A = 1 if new value is larger, 0 if not (Clears Carry!)

	;A contains the new "paddir"
	;Now see if the change is outside of the filter zone

	cpy #2			;Subtraction result greater than 3?
	bcc nextpot		;No, ignore this change

	;Okay, this change is valid. Save A as "paddir" and
	;save the new POT value
	
	sta paddir0,x

	lda atemp0
	sta padtmp,x

	lda #$50
	sec
	sbc atemp0
	sta shldpos0,x


nextpot
	dex
	bpl potloop		;Do all 4
	sta POTGO		;Restart Pots!


#IFDEF debug
	lda #$00		;Black
	sta COLBK
#ENDIF


inputs2

;Now check other inputs

;Read & Debounce the Fire buttons
	lda PORTA
	and #$CC		;Keep paddle fire buttons
	tax

	and oldporta		;Anything that was low before, stays low
	lsr a
	lsr a
	sta buttons
	lsr a
	lsr a
	ora buttons
	and #$0F
	sta buttons
	
	stx oldporta
	
;Read & Debounce the Console keys
	lda CONSOL
	and #$07		;Low 3 only
	sta atemp0

	lda contmp1
	and contmp2		;Debounce.. Will stay low if either of last 2 are low
	eor #$07		;Set non-pressed buttons low
	ora atemp0		;Only new presses stay low	
		
	asl a			;Prepare for key bit
	sta console		;Save it
	
	lda contmp1		;Set up vars for next time
	sta contmp2

	lda atemp0
	sta contmp1


;Read & Debounce the SPACE bar
	sec
	lda oldkey
	and #$40		;New key?
	beq in_keyskip		;No new keys	
	
	lda KBCODE
	and #$3F		;Remove CTRL/SHIFT
	sta atemp0		;keep it for later
	eor oldkey		;Do these keys match?
	and #$3F
	bne in_keyskip		;No.. exit

	;New key, and the same as the current key

	lda oldkey
	and #$BF		;Clear the "New key" bit
	sta oldkey
	clc			;Set the "read key" bit

in_keyskip
	ror console		;Console top bit means "read key"

;Do keyboard reads for next time
	lda SKSTAT
	and #$04
	bne in_nokey

	;A key is pressed
	lda oldkey
	and #$40
	ora atemp0		;Get the new keycode
	ora #$80		;Mark that a key is pressed

	ldx oldkey		;Was it low before?	
	bmi in_keycont		;Yes, save this state and exit
	
	;New keypress
	ora #$40		;Set b6 (meaning new key)
	jmp in_keycont

	;No press
in_nokey
	lda oldkey		;Remove "key pressed" bit
	and #$7F
	
in_keycont	
	sta oldkey

	rts



#45 Bryan OFFLINE  

Bryan

    Quadrunner

  • 8,282 posts
  • Cruise Elroy = 4DB7
  • Location:Puriscal, Costa Rica

Posted Tue Jan 17, 2012 10:21 PM

I deleted the 5200 references above, because I forgot I ended up with a completely different input routine on the 5200. When I first wrote this, I assumed a 2-port 5200 was the same as a 4-port with 2 sticks permanently unplugged. I later found out that some features of the first 2 controllers appear if you read the missing ports 3 and 4 because Atari removed the port decoding logic from the keypad scanning circuit as well. This caused me to produce a run of defective CC5200 carts which detected 2 players (1+3 or 2+4) on a 2-port 5200 when a button was pressed. No wonder all of Atari's cartridges make you specify the number of players in advance.

I'm not sure if this is useful, but here it is:

;Warlords 5200 Inputs code...
;2003 Bryan Edewaard
;Uses aux temps0,1

inputs

#IFDEF showdli
	lda #$58		;Light Purple
	sta COLBK
#ENDIF

#IFDEF tracking
	ldx #$84
	stx test
#ENDIF

	lda gamemode		;Not during pause
	cmp #07
	bne in_cont
	jmp inputs2

in_cont
	
	lda TRIG2		;Is button 3 pressed?
;	and TRIG3		;Cannot use port 4 - It's connected to port 2!! &@%#!!!
	
	;Make copies of the H-inputs (so they're consecutive)
	ldx POT0
	stx atemp4
	ldx POT2
	stx atemp5
	
	;4-port pots
	ldx POT4
	stx atemp6
	cpx #228
	rol a			;bring into A (C is set if no reading)

	ldx POT6
	stx atemp7
	cpx #228
	rol a			;bring into A (C is set if no reading)

	;Store the V-inputs for detection purposes
	ldx POT1
	stx vpot0
	ldx POT3
	stx vpot1
	
	;4-port pots
	ldx POT5
	stx vpot2
	cpx #228
	rol a			;bring into A (C is set if no reading)
	
	ldx POT7
	stx vpot3
	cpx #228
	rol a			;bring into A (C is set if no reading)
	
	;Check for 4-port console
	cmp #$1F		;Check for 4-port pot or TRIG activity
	beq in_portskip		;None, skip
	
	;Set 4-port mode
	lda #$03
	sta portmask

in_portskip

	lda humans
	and gameon		;No human inputs if no game
	asl a
	asl a
	asl a
	asl a
	sta atemp1

;1st set all positions to enemy positions (humans inputs will overwrite these)
	ldx #3
	
in_enloop
	lda bitmask,x
	and humans		;Is this a human quadrant?
	bne in_ennext
	
	lda enemypos,x		;enemypos is AI player
	bpl potplus

	cmp #$B0		;Clip negative values to B0 or higher
	bcs potsave
	lda #$B0
	bne potsave

potplus
	cmp #$51		;Clip positive values to 50 or less
	bcc potsave
	lda #$50

potsave
	sta shldpos0,x
in_ennext
	dex
	bpl in_enloop

;Update the Paddle Values
	ldx #$03		;Read 4 Pots
	
potloop
	lda newquad,x
	bpl potcont		;Continue if a player

	jmp nextpot		;Not a player input (yet)

potcont
	sta atemp2		;Destination quadrant

	lda atemp4,x
	clc
	adc #10
	sta atemp0		;10-238
	
	;Take the new value and modify it to +1 if the momentum is forward

	adc paddir0,x		;Get "resistance" direction (0 or 1)
	
	;Now subtract the old value
	
	sec
	sbc padtmp,x		;Subtact the old value
	
	;Carry is clear if the old value was bigger (we're going backwards)
	;Move the result to Y so we can use A

	tay			;Copy of the result in Y
	lda #0			;Clear A
	rol a			;A = 1 if new value is larger, 0 if not (Clears Carry!)

	;A contains the new "paddir"
	;Now see if the change is outside of the filter zone

	cpy #2			;Subtraction result greater than 3?
	bcs in_dopot
	jmp nextpot		;No, ignore this change
in_dopot
	;Okay, this change is valid. Save A as "paddir" and
	;save the new POT value
	
	sta paddir0,x

	lda atemp0
	sta padtmp,x
	
	lda atemp4,x
	sta atemp0

	;Input processing

	lda inp_mode,x
	bpl in_padmode		;If we haven't picked a mode, then paddle
	asl a
	beq in_padmode		;If we have and it's 0, then paddle

	;Joystick mode
	;Change range to 0-255
	lda atemp0
	cmp #228
	bcc in_jran1
	lda #227
	sta atemp0		;Limit to 227
in_jran1
	lsr a
	lsr a
	lsr a			;0-28
	clc
	adc atemp0		;0-255 range on sticks
	sta atemp0

	;Do a MID update every once in a while
in_jnocarry
	cpx readport		;Only re-center one joystick each time
	bne in_joy2		;Skip down
	lda hmin,x
	cmp atemp0
	bcc in_joymax	
	lda atemp0
	sta hmin,x		;New min
in_joymax
	lda hmax,x
	cmp atemp0
	bcs in_joymid
	lda atemp0
	sta hmax,x		;New max
in_joymid
	lda hmin,x
	lsr a
	sta atemp1
	lda hmax,x
	lsr a
	adc atemp1		;New center value

	cmp #82			;Not less than 80
	bcs in_joymidsk1
	lda #82
in_joymidsk1

	cmp #174		;Not more than 176
	bcc in_joymidsk2
	lda #173
in_joymidsk2
	sec
	sbc #80			;Difference between center and our value
	sta hcenter,x		;Offset correction.

	;Continue with joystick stuff
in_joy2
	lda atemp0		;Get position
	sec
	sbc hcenter,x		;Re-center
	bcs in_joyrange1	;No borrow, then skip
	lda #$00
in_joyrange1
	cmp #161
	bcc in_joyrange2
	lda #160
in_joyrange2
	sta atemp0
	
	lda atemp2
	and #$FE		;Is it in Q0 or Q1?
	bne in_final		;No skip
	
	sec
	lda #160
	sbc atemp0		;Invert range
	sta atemp0		;Save it
	jmp in_final

in_padmode
	;PADDLE
	lda #228
	sec
	sbc atemp0
	lsr a			;228/2
	sta atemp0
	lsr a			;228/4
	clc
	adc atemp0		;Add

	cmp #161
	bcc in_padrange
	lda #160
in_padrange
	sta atemp0

in_final

	lda #$50
	sec
	sbc atemp0

	ldy atemp2
	sta shldpos0,y		;Save the value


nextpot
	;Do joystick detection
	lda inp_mode,x			;Has this one been set (locked)?
	bmi in_vnochange		;Already done
	cpx readport			;Only do one per pass
	bne in_vnochange		;Not this one

	asl a
	sec
	sbc vpot,x			;Subtract the original value
	clc
	adc #5

in_vcompare
	cmp #10
	bcc in_vnochange
	;We moved in the V direction!
	lda #$81
	sta inp_mode,x		;Joy mode!

	lda #$79
	ldy ga_togpos,x		;Get screen position
	sta $0600,y		;Put the letter on the screen
	
	lda #16
	sta ltimer,x		;Set an erase timer

in_vnochange	

	dex
	bmi in_potsdone		;Do all 4
	jmp potloop

in_potsdone
	sta POTGO		;Restart Pots!


#IFDEF debug
	lda #$00		;Black
	sta COLBK
#ENDIF

;This handles all POKEY key inputs
;Start with top buttons

inputs2
	ldx readport
	inx
	txa
	and #$03
	sta readport
	tax

	and portmask		;Added for 2-port mode
	cmp readport
	beq in2_cont
	
	;2 port mode for controllers 3&4
	
	lda bitmask,x		;Raise top-button for this controller
	ora topbuttons
	sta topbuttons
	
	lda #$FF
	sta console
	jmp in_nokey2

in2_cont
	ldy #$03
	cpy gamemode		;Game in play?
	bcs in_nogame		;Before a game, we do not re-arrange buttons
	
	lda newquad,x		;What Quadrant does it belong to?
	bmi inputs3		;If none, then ignore presses
	tax			;X = quadrant	

in_nogame
	
;Read the top (shift) buttons

	lda SKSTAT
	and #$08		;Top Button?
	bne in_notop
	lda bitmask,x		;Get a bit in the correct position
	eor #$FF
	and topbuttons		;Clear the correct bit
	sta topbuttons
	jmp inputs3
in_notop
	lda bitmask,x		;Raise or lower a top-button each time
	ora topbuttons
	sta topbuttons

;Now read the lower (triggers) buttons
inputs3

	lda #$0F		;Start with buttons up
	ldy portmask		;#3
in3_lp	

	ldx TRIG0,y
	bne in3_next		;Reject if not pressed...&
	ldx newquad,y
	bpl in3_skip		;Skip down if assigned
	eor bitmask,y
	jmp in3_next
	
in3_skip
	eor bitmask,x		;Flip the correct bit
in3_next
	dey
	bpl in3_lp


;Combine with top buttons
in3cont

	and topbuttons
	tax
	and oldbuttons		;Anything that was low before, stays low

	sta buttons		;buttons is low for any top or bottom button.
	
	stx oldbuttons

;Read the keypad
;Done for all inputs - always.
;Not reassigned

	lda KBCODE
	lsr a			;Remove low bit
	and #$0F		;5200 codes only
	tax			;Index
	ldy in_codes,x		;Get an adjusted code
	ldx readport
	
in_nokey
	lda #$FF
	sta console

	lda IRQST
	and #$40
	bne in_nokey2
	
	lda #$03
	cmp gamemode		;Game in play?
	bcs in_nogame2		;Before a game, we read all controllers

	lda newquad,x		;Does this controller have a quadrant?
	bmi in_nokey2		;No, throw any presses away

in_nogame2	
	tya			;This will set flags
	bmi in_nokey2		;Exit if no key pressed

	cmp oldkeya,x		;Get the previous value
;	beq in_nokey2		;If its the same, then wait till next time
	beq in3_end

	sty oldkey		;Save the value
	lda #$FF

	cpy #$0C		;Start?
	bne in_skip1
	eor #$01
	
in_skip1
	cpy #$0B		;Select (#)
	bne in_skip2
	eor #$02

in_skip2
	cpy #$0E		;Reset (*)
	bne in_skip3

	;Force a reset
	lda #$00
	sta NMIEN		;Stop NMI's
	sta DMACTL
	jmp su_normal		;Reset

in_skip3

	sta console

	lda console
	and #$7F
	sta console

	tya
	sta oldkeya,x		;Save it for next comparison

	jmp in3_end

in_nokey2

	lda #$FF
	sta oldkeya,x		;Save it for next comparison
	

	;Set up for next cycle's reads
in3_end
	inx
	txa
	ora #$0C
	sta CONSOL

	sta SKREST
	ldx #$00
	lda #$40
	stx IRQEN
	sta IRQEN
	stx IRQEN
	sta IRQEN
	
	rts

;Scan codes
;Keep only 7,9,1,3,*,#,Reset,Pause,Start
in_codes
.db	$FF,$0B,$09,$0A,$0E,$01,$09,$00,$0D,$09,$09,$09,$0C,$03,$09,$02	



#46 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 4,970 posts
  • Recruiting players for the High Score Club
  • Location:High Score Club of course - JOIN IN!

Posted Wed Jan 18, 2012 6:57 AM


Ok, thanks.
Do you know if is useful to sample the paddles many times in a frame and average the results?
I would like to know how many times can the value change in a frame.. but probably in the editor the behavior is different.


Well, you have to wait quite a while after POTGO before the results are ready so this isn't really an option (I don't think I've ever messed with fast pot scanning, though). You just have to leave it up the user to get good paddles. Turning them end to end a few dozen times can greatly improve their accuracy, and there are pot cleaning sprays.

I think we established that the jittery issue is not with the paddles but with the 130XE (and other XEs?) ports (something hardwarey!) - I have sets that work fine on 800 & XL but not the XEs - I was thinking that some sort of sensitivity adjustment option might help to negate this :)

NRV - small bug when you change the difficulty level you cannot select arcade!
casual plays well, got a bit futher. Still not sure about penalising players scoring for using the D multi ball as this is the most skillfull part ;)
Some indication of your score beating the high would be nice in game (maybe a sound)?
You could add a sound as you leave/complete a screen (as your sound effects are so good) :)
To limit the power ball you could make this continually increase in speed - that way the player would catch another bonus to end it if it got too fast!

#47 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Fri Jan 20, 2012 4:57 PM

Thanks for the code Bryan.
For now I just implemented the straightforward method (just using POT0..3 and POTGO).

I think we established that the jittery issue is not with the paddles but with the 130XE (and other XEs?) ports (something hardwarey!) - I have sets that work fine on 800 & XL but not the XEs - I was thinking that some sort of sensitivity adjustment option might help to negate this :)

NRV - small bug when you change the difficulty level you cannot select arcade!
casual plays well, got a bit futher. Still not sure about penalising players scoring for using the D multi ball as this is the most skillfull part ;)
Some indication of your score beating the high would be nice in game (maybe a sound)?
You could add a sound as you leave/complete a screen (as your sound effects are so good) :)
To limit the power ball you could make this continually increase in speed - that way the player would catch another bonus to end it if it got too fast!


Here, version 1.81:

Attached File  pad_v6.zip   19.54KB   98 downloads

Changelog:

- first extra ball is at $20000 and then after every $100000
- added a small ball speed up when catching the "mega ball" powerup
- when pressing RESET we do a cold start now
- fixed: unable to select "arcade" after changing the difficulty
- fixed: giving unwanted score when opening the exits at the end of a level
- added paddle controllers from 1 to 4 (select with "C" option)
- added "Paddle angle" option: 50% or 100% (use half or full rotation to move)
- modified high score logic, so when you select easy, casual or arcade you see the score and level info for that difficulty only
- added "highlight" effect for all hard bricks at the start of a level

About the jitter issue, I suppose is both ways, maybe a problem with the 130xe, but also a problem (in time) with the paddles. I wait for any report about that, for people that play with real hardware.
I tested the paddles using the mouse with Altirra and I use the 100% rotation option, because the other is too fast for me, but maybe in real hardware is not like that.

The multiball not giving powerups for now is to clone the rule in Arkanoid 1, but also because I'm using all the players for the 3 balls :). I'm still thinking about what to do ingame when passing the high score.

In the next days I just want to add some "things" to the tittle screen and that new game mode that I was talking, and let this rest for some time :).

Regards!

#48 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 4,970 posts
  • Recruiting players for the High Score Club
  • Location:High Score Club of course - JOIN IN!

Posted Mon Jan 23, 2012 5:30 PM

Played I mean "tested" on 130XE and 800XL - looking very good. Even with jitteriest paddles (same on both computers!) it plays really well - the 100% (1/2 turn) was ok and and 50% (1/4 turn) was better, perhaps even less than 50% would work too?! The game is much more playable with paddles than mouse and this will allow more people to play the game. :thumpbsup:

Last year I ran a Paddles Games round in the HSC playing about half of the paddles games so this will make a perfect headliner game if we do the same again this season :)

This screen is a bit of a pain - as you can't get more power ups easily - the game would be improved if the gold bricks disappeared after a *lot* of hits ;)
GoldenPain.jpg

#49 NRV OFFLINE  

NRV

    Moonsweeper

  • Topic Starter
  • 289 posts

Posted Mon Jan 23, 2012 6:08 PM

Played I mean "tested" on 130XE and 800XL - looking very good. Even with jitteriest paddles (same on both computers!) it plays really well - the 100% (1/2 turn) was ok and and 50% (1/4 turn) was better, perhaps even less than 50% would work too?!


Is good to know that they work well.
Wow, for me 50% was already too fast :). But I tested it only in the emulator. The problem is that with 50% there is already a 1:1 relationship between the paddle values and the pixels moved in the screen, so to go faster I must jump over some pixels. The thing that I can try is adding some acceleration, like with the mouse, configurable in the options.

This screen is a bit of a pain - as you can't get more power ups easily - the game would be improved if the gold bricks disappeared after a *lot* of hits ;)
GoldenPain.jpg


I agree, that one is a pain, also in the arcade :). I don't want to change the rule that much, but I can do a special version of that level, a little easier. So if you see another levels that are too frustrating just send me the pictures (I normally avoid that screen :)).

Regards.

#50 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 4,970 posts
  • Recruiting players for the High Score Club
  • Location:High Score Club of course - JOIN IN!

Posted Tue Jan 24, 2012 5:18 AM

...
Wow, for me 50% was already too fast :). But I tested it only in the emulator. The problem is that with 50% there is already a 1:1 relationship between the paddle values and the pixels moved in the screen, so to go faster I must jump over some pixels. The thing that I can try is adding some acceleration, like with the mouse, configurable in the options.


It's fine as it is but if it's not much more work you could try adding an option for less and maybe add a 75% too !
I'm guessing this runs on XL/XE only?




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users