An orbit that comes back round, out of gravity minus the swing
The relief version could never make one. It only ever SUBTRACTED from gravity, so a lander a little too slow sank for ever and one a little too fast rose for ever - nothing in it could turn a fall around, because nothing in it ever pushed up. There was no periapse to have. Gravity minus the swing outwards has a sign change in it, and that is the whole mechanic. Below orbital speed the pull wins and the lander falls; above it the swing wins and the lander climbs; at 64 sixteenths they cancel and it circles. Falling buys sideways speed and climbing spends it, so a fall carries the lander past orbital and turns into a climb, and the climb pays it back and turns into a fall. The trade is the quarter square multiply, because the rate has to be the PRODUCT of the two speeds. Set by the vertical speed alone it drained a climb to nothing, and any minimum to stop that became a trap the climb spent its way into - measured freezing at 23 with a gate of 24 and at 3 with a gate of 4. With the product in it there is no gate: as the sideways speed goes to nothing the trade stops by itself. Half the product rather than a quarter or the high half. The high half alone is nought below a product of 256, which is a dead patch exactly where the turn begins, and a quarter still ran the lander into the roof before it came round - the whole sky is about 145 pixels. Measured, placed at 80 sideways and left alone: apoapse at -1024 with 59 sideways, periapse at -124 with 71, and round again at 165, 241, 299 and 369 ticks with no sign of decay. A period of about 22 seconds. The ceiling also spends one sideways when it wipes a climb. Without that it was a trap with no way out: the pin wipes the climb, so the trade sees neither fall nor climb and never touches the speed that is pushing the lander up. Measured pinned at the top with 117 sideways, unmoving, for the whole of a four minute flight. Tests/makedisks.sh needed the library path, since Lander now includes math.asm, and the app went from 2,924 bytes to 4,651 - mostly the 1,022 byte table - which is what the listing expectations move for.
This commit is contained in:
@@ -25,7 +25,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -15,7 +15,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -32,7 +32,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -22,7 +22,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -22,7 +22,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -108,7 +108,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -27,7 +27,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -15,7 +15,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -13,7 +13,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
@@ -22,7 +22,7 @@ Mode.sbx 48
|
||||
Flip.sbx 173
|
||||
Sprite.sbx 442
|
||||
Depth.sbx 672
|
||||
Lander.sbx 2924
|
||||
Lander.sbx 4651
|
||||
Pad.sbx 264
|
||||
Crash.sbx 632
|
||||
vars.script 50
|
||||
|
||||
+1
-1
@@ -146,7 +146,7 @@ for i in 1 2 3 4 5 6 7 8; do "$TOOL" put "$DISKS/sbfs.img" "filler$i.txt" >/dev/
|
||||
"$TOOL" put "$DISKS/cosmos.img" "$WORK/Depth.sbx" >/dev/null
|
||||
# Lander.sbx is Lunar Porter, and the biggest program on the disk. It takes the screen, the
|
||||
# mode and the map, so it is also the one that says a program can have all three back.
|
||||
"$ROOT/Assembler" -I "$ROOT/Programs/CosmOS/Source" \
|
||||
"$ROOT/Assembler" -I "$ROOT/Programs/Libraries" -I "$ROOT/Programs/CosmOS/Source" \
|
||||
"$ROOT/Programs/CosmOS/Apps/Lander.asm" -o "$WORK/Lander.sbx" >/dev/null
|
||||
"$TOOL" put "$DISKS/cosmos.img" "$WORK/Lander.sbx" >/dev/null
|
||||
# Pad.sbx says what the controllers are doing, which is the only way to tell a pad nobody
|
||||
|
||||
+25
-13
@@ -1790,21 +1790,33 @@ HOME="$(countColour "$BUILD/ceiling22000000.ppm" f0f0f0)"
|
||||
|
||||
# ---- Orbit, which is measured and not checked here ----
|
||||
#
|
||||
# Going sideways lifts the moon off you: four times the lateral speed goes into a byte every
|
||||
# tick and the tick's gravity is skipped when it carries. It works, and it was measured
|
||||
# working - climbing at 13, 26, 39 sixteenths without lateral speed and 14, 31, 50 with it,
|
||||
# the gap widening as the speed builds.
|
||||
# Gravity minus the swing outwards. Below orbital speed the pull wins and the lander falls;
|
||||
# above it the swing wins and the lander climbs; and falling buys sideways speed while
|
||||
# climbing spends it. That is what makes a closed orbit rather than a one way trip, and it
|
||||
# was measured doing it. Placed at 80 sideways and left alone, turning points at:
|
||||
#
|
||||
# THERE IS NO CHECK FOR IT, and that is deliberate rather than forgotten. Every window in
|
||||
# which the difference is visible turned out to be a few frames wide: hold the thruster and
|
||||
# both landers are pinned against the ceiling with their climbs spent; ease off and both land
|
||||
# and freeze; and either way the comparison becomes two nothings. A version of this check did
|
||||
# exist and passed against one disk and failed against another, which is a check that is
|
||||
# measuring the boot time rather than the physics.
|
||||
# tick 44 height -1024 sideways 59 apoapse, and it falls away
|
||||
# tick 123 height -124 sideways 71 periapse, and it climbs again
|
||||
# tick 165 height -1024 sideways 59
|
||||
# tick 241 height -124 sideways 70
|
||||
# tick 299 height -1024 sideways 59
|
||||
# tick 369 height -114 sideways 70
|
||||
#
|
||||
# What would make it checkable is a way to put the lander somewhere with a velocity, without
|
||||
# flying it there - the same thing the delivery below wants. Until then this is verified by
|
||||
# somebody measuring it, and said so here rather than left looking tested.
|
||||
# Four hundred and eighty ticks with no sign of the amplitude decaying, a period of about a
|
||||
# hundred and thirty ticks, which is twenty two seconds of play.
|
||||
#
|
||||
# THERE IS STILL NO CHECK FOR IT, and it is still deliberate. The measurement above was taken
|
||||
# with a build that PLACED the lander at eighty sideways, because reaching orbital speed
|
||||
# through the controls takes a sustained burn while holding height, and the phase of that burn
|
||||
# against the gravity tick - one frame in ten - decides whether the thruster is seen at all.
|
||||
# Two pad files a frame apart fly differently. That is a fine thing for a game and a poor one
|
||||
# for a check.
|
||||
#
|
||||
# What would make it checkable is still the same thing: a way to put the lander somewhere with
|
||||
# a velocity, without flying it there, which is now wanted by four separate untested paths.
|
||||
# The other candidate is a hand flown recording of an orbit, the way the delivery below is a
|
||||
# hand flown delivery. Until one of those exists this is verified by somebody measuring it,
|
||||
# and said so here rather than left looking tested.
|
||||
|
||||
# ---- A delivery, flown by hand, and what it cost ----
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user