z zooms too, so a keyboard is not shut out of it

B was the only way to swap the view, and the game is meant to be flyable
without a controller - the arrows fly it when there is no pad. Somebody
without one had no way to zoom at all.

Tested ABOVE the pad test rather than beside the arrows, and that is the
distinction: which way the lander is flown is a question a controller
answers better, so the arrows stand aside for one. How much of the moon
is on the screen is not that kind of question, and a player with a pad
may still have a keyboard in front of them.

No edge to remember here either. The console delivers a key ONCE, which
is the whole difference between a key and a held button.

The check puts the z forty bytes into the keyboard file, because the
console hands over one key a frame: a z two hundred bytes in is a z two
hundred frames away, which is past the end of the capture and reads
exactly like a key that does nothing. It cost a wrong answer first time.
This commit is contained in:
Anachronaut
2026-09-03 21:54:12 -04:00
parent a02d701efe
commit 437ddf8ebe
13 changed files with 51 additions and 11 deletions
+20
View File
@@ -588,6 +588,10 @@ readPad:
; controller, where one press is one burn and that is the best that can be done - it reads as
; pumping the engine, which is a thing this machine makes true rather than a thing this
; program chose.
zoomKeyed:
CALL toggleView
RET
readControls:
INA 0x01
INIB 0x01 ; READY
@@ -603,6 +607,22 @@ readControls:
SUB
BRQ quit
; ---- And z swaps the zoom, pad or no pad ----
;
; ABOVE the test for a controller, unlike the arrows. Which way the lander is flown is a
; question the arrows have to ask, because a pad answers it better; how much of the moon is
; on the screen is not - somebody flying on a controller may still have a keyboard in front
; of them, and somebody without one would otherwise have no way to zoom at all.
;
; No edge to worry about here. The console delivers a key ONCE, which is the difference
; between a key and a button and the reason the pad below needs remembering and this does
; not.
LDA.1
INIB 0x7A ; z.
CCF
SUB
BRQ zoomKeyed
SETD.0 HasPad
LDA.0
BNA noKey ; There is a pad, so the arrows are its business and not this.