The Joypad routine doesn't check the buttons on Neo Geo (I believe it had 4 but I don't quite recall) and I wanted to see if I could add that functionality in. I decided to use something simple- have the background color change when you press A. Weird thing is, when the game boots, the background has already changed before pressing any buttons! If I comment out the part where the background changes when pressing A, the background appears as normal. To keep things brief, I will only include the original palette setup code and the input handler. I haven't done anything with Commodore 64 or GBA in a while but I seem to remember having the same problem on those systems as well (I've never had this happen on the NES and I think it's because its controller works differently)
Code: Select all
	;        -RGB			;Color Num:
	move.w #$000F,$401FFE	;0 - Background color
	move.w #$0FF0,$400022	;1
	move.w #$00FF,$400024	;2
	move.w #$0F00,$400026	;3
	move.w #$0FF0,$40003E	;15 - Font
	
...	
	btst #0,d3
	bne JoyNotUp		;Jump if UP not pressed
	subq.w #1,d1		;Move Y Up the screen
JoyNotUp: 	
	btst #1,d3
	bne JoyNotDown		;Jump if DOWN not pressed
	addq.w #1,d1		;Move Y DOWN the screen
JoyNotDown: 	
	btst #2,d3
	bne JoyNotLeft		;Jump if LEFT not pressed
	subq.w #1,d0		;Move X Left
JoyNotLeft: 	
	btst #3,d3
	bne JoyNotRight		;Jump if RIGHT not pressed
	addq.w #1,d0		;Move X Right
JoyNotRight: 	
	btst #4,d3			;Jump if A not pressed
	bne JoyNotA
	;        -RGB			;Color Num:
	move.w #$0006,$401FFE	;0 - Background color
	move.w #$0FF0,$400022	;1
	move.w #$00FF,$400024	;2
	move.w #$0F00,$400026	;3
	move.w #$0FF0,$40003E	;15 - Font
JoyNotA:
	btst #5,d3			;Jump if B not pressed
	bne JoyNotB
JoyNotB:
	btst #6,d3			;Jump if C not pressed
	bne JoyNotC
	
JoyNotC:
	btst #7,d3			;Jump if D not pressed
	bne JoyNotD
	
JoyNotD:
	move.w d1,(PlayerY)
	move.w d0,(PlayerX)
	
;X Boundary Check - if we go <0 we will end up back at &FF
	
	cmp.w #40,d0
	bcs PlayerPosXOk		
	jmp PlayerReset		;Player out of bounds - Reset!
PlayerPosXOk