A ceiling that pins rather than ends

Climbing made a sixteen bit height count down past nought and round to
65535, so a lander that kept going came back through the bottom and hit
the ground FROM ABOVE. Two thousand pixels of climb, which a full tank
reaches easily.

Pinned instead, and told so in the window. Leaving upward is RECOVERABLE -
gravity is always there and a lander with fuel can always come back - so
ending the run would punish a state the player can fly out of. What kills
you out here is running dry a long way from the ground, which is a death
somebody flew into rather than one a boundary handed them.

TWO DIFFERENT LINES, and both were got wrong before they were got right.
The warning covers being AT the ceiling or above it: compared against the
ceiling itself, a pinned lander read as back inside the world the next
frame and the warning was written and wiped sixty times a second, so it
never appeared at all. The pin covers being STRICTLY above it: including
the ceiling dragged the height back every frame and the lander could never
descend, which is a lid nobody can leave and worse than the wrap.

And only the climb is spent, never the fall. Zeroing the speed outright
pinned it there for ever - gravity adds once a tick and a clamp running
every frame wiped the pull nine times out of ten.

The orbit check is gone, and the reason is in video.sh. Every window where
the difference showed turned out to be a few frames wide: hold the
thruster and both landers are pinned with their climbs spent, ease off and
both land and freeze. A version of it passed against one disk and failed
against another, which is a check measuring the boot time rather than the
physics. Orbit is verified by measurement and said to be so, rather than
left looking tested.

cosmosLanderDry wants seventy million cycles now instead of forty: it
spends the whole tank at the ceiling before it falls the length of the
world.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
Anachronaut
2026-09-03 18:42:34 -04:00
co-authored by Claude Opus 5
parent d896c9d433
commit f5642f52b5
14 changed files with 151 additions and 45 deletions
+92 -1
View File
@@ -815,6 +815,88 @@ move:
SETD.0 DownLow
SETD.1 SpeedDown
CALL addWord
; ---- The world has no lid, but a sixteen bit height does ----
;
; Climbing makes the height count down past nought and round to 65535, and a lander that
; kept going came back through the bottom and hit the ground FROM ABOVE. Two thousand pixels
; of climb is a long way and entirely reachable with a full tank.
;
; Pinned rather than ended. Leaving upward is RECOVERABLE - gravity is always available and
; a lander with fuel can always come back - so stopping the run there would punish a state
; the player can fly out of. What kills you out here is running dry a long way from the
; ground, which is a death somebody flew into rather than one a boundary handed them.
;
; TWO DIFFERENT LINES, and they have to be. The warning covers being AT the ceiling or above
; it, or a pinned lander reads as back inside the world the next frame and the warning is
; written and wiped sixty times a second. The pin covers being STRICTLY above it, or the
; height is dragged back every frame and the lander can never descend at all.
SETD.0 DownHigh
LDA.0
INIB 0x80
AND
BRQ moveInside ; The height is positive, so it is somewhere below the top.
LDA.0 ; DP0 is still DownHigh, from the sign test.
INIB 0xFD
CCF
SUB
BRC moveAdrift ; Borrowed: at 0xFC00 or above it, which is 64 pixels over the top.
moveInside:
; Back under the ceiling, so the warning goes if there was one.
SETD.0 Adrift
LDA.0
BRA moveDone
RSTA
STA.0
SETD.0 EmptyText
CALL sayInWindow
moveDone:
RET
moveAdrift:
; Strictly above? Then the height is pinned and the climb is spent. Exactly at the ceiling
; is left alone, so gravity has somewhere to move it to.
SETD.0 DownHigh
LDA.0
INIB 0xFC
CCF
SUB
BNC moveAdriftSaid ; No borrow, so it is at the ceiling and not past it.
RSTA
SETD.0 DownLow
STA.0
INIA 0xFC
SETD.0 DownHigh
STA.0
; ---- Only the climb is spent, never the fall ----
;
; Zeroing the speed outright pinned the lander here for ever: gravity adds to it once a
; tick, and a clamp that ran every frame wiped the pull nine times out of ten before it
; could become downward motion. A ceiling nobody can leave is worse than the wrap it
; replaced.
SETD.0 SpeedDownHigh
LDA.0
INIB 0x80
AND
BRQ moveAdriftSaid ; Positive: already coming down, so leave it be.
RSTA
SETD.0 SpeedDown
STA.0
SETD.0 SpeedDownHigh
STA.0
moveAdriftSaid:
; Said once rather than sixty times a second.
SETD.0 Adrift
LDA.0
BNA moveDone
INIA 0x01
STA.0
SETD.0 AdriftText
CALL sayInWindow
RET
; ---- The view, which follows it ----
@@ -1585,7 +1667,9 @@ DownHigh:
SpeedAcross:
0x00 0x00
SpeedDown:
0x00 0x00
0x00
SpeedDownHigh:
0x00
; ---- The four numbers the feel lives in ----
;
@@ -1745,6 +1829,11 @@ Carrying:
Landed:
0x00
; Whether the lander is pinned against the ceiling, so the warning is said once rather than
; sixty times a second and taken away when it comes back down.
Adrift:
0x00
; ---- Forty cells is the row, so forty characters is the limit ----
LandedText:
"Nowhere in particular. Nothing here."
@@ -1754,6 +1843,8 @@ DeliveredText:
"Delivered. Eighty units of fuel."
WrongText:
"Not the base this cargo is for."
AdriftText:
"Leaving the moon. Nothing up here."
EmptyText:
0x00
CrashedText: