Prev: FE7E Up: Map Next: FECD
FEA3: Input routine: Fuller
This is the Fuller joystick input routine. Reading port $7F yields a byte of format F---RLDU, where the bits are active low
This is unused by the game!
Output
A Input value (as per enum input).
inputroutine_fuller FEA3 LD BC,$007F Load BC with port number $7F
FEA6 IN A,(C) Read that port. We'll receive FxxxRLDU
FEA8 LD BC,$0000 Clear our variables
Commentary: This is odd. It's testing an unspecified bit to see whether to complement the read value. I don't see a reference for that behaviour anywhere.
FEAB BIT 4,A Test bit 4
FEAD JR Z,inputroutine_fuller_0 Jump forward if clear
FEAF CPL Complement the value
Up
inputroutine_fuller_0 FEB0 RRA Rotate 'U' out: UFxxxRLD
FEB1 JR NC,inputroutine_fuller_1 If carry was set then up was pressed, otherwise skip
FEB3 LD C,$01 up_down = input_UP
Down
inputroutine_fuller_1 FEB5 RRA Rotate 'D' out: DUFxxxRL
FEB6 JR NC,inputroutine_fuller_2 If carry was set then down was pressed, otherwise skip
FEB8 LD C,$02 up_down = input_DOWN
Left
inputroutine_fuller_2 FEBA RRA Rotate 'L' out: LDUFxxxR
FEBB JR NC,inputroutine_fuller_3 If carry was set then down was pressed, otherwise skip
FEBD LD B,$03 left_right = input_LEFT
Right
inputroutine_fuller_3 FEBF RRA Rotate 'R' out: RLDUFxxx
FEC0 JR NC,inputroutine_fuller_4 If carry was set then right was pressed, otherwise skip
FEC2 LD B,$06 left_right = input_RIGHT
Fire
inputroutine_fuller_4 FEC4 AND $08 Test fire bit (and set A to zero if not set)
FEC6 JR Z,inputroutine_fuller_5 If bit was set then fire was pressed, otherwise skip
FEC8 LD A,$09 fire = input_FIRE
inputroutine_fuller_5 FECA ADD A,B Combine the fire, up_down and left_right values
FECB ADD A,C
FECC RET Return
Prev: FE7E Up: Map Next: FECD