Up N Down¶
Registry name: upndown. Parity status in games_covered.md: 🥉.
Description¶
Drive a Baja Bugger along branching hillside roads, collect eight colored flags, pick up prizes, and avoid or jump onto other cars. Jump with FIRE; UP/DOWN change speed (no LEFT/RIGHT — lane changes are jumps between roads).
This Jaxtari port implements three looping track layouts (LEVEL_COUNT=3)
with hazard water on layout 3. The Atari 2600 cartridge progresses through
rounds 1–9 with escalating difficulty; rounds beyond the three baked
geometries and remaining gameplay gaps are summarized below (from the
Sega / Bally Midway 2600 manual
and ALE / OCAtari play).
Actions¶
Discrete set: NOOP, FIRE, UP, DOWN, UPFIRE, DOWNFIRE.
Unsupported stick directions map to NOOP in the comparison / record scripts.
Observations¶
Screen-space ObjectObservation entities plus HUD:
player— car (state= jumping,orientation= lean/facing)enemies(n=8;visual_id= type,state= speed)flags(n=8;visual_id= color; active only while on-screen and uncollected)collectibles(n=4;visual_id= type,state= color)flags_collected_mask— top HUD blackoutsscore,lives,level
Reward¶
Scoring aims at ALE RAM behavior, which often differs from the printed
manual table (see gaps below). Flags currently award FLAG_COLLECTION_SCORE
(100). Collectibles use ~10× the manual table. Late-jump enemy destroys use a
flat LATE_JUMP_ENEMY_SCORE (400), not per-type manual values.
Modifications¶
Registered via UpNDownEnvMod:
allow_jump_backwardsremove_step_roadshigher_player_speedspawn_more_collectiblesminimum_car_spawn_gapsingle_lane_car_spawnprogressive_car_spawn_ratecollectible_value_time_decay
Implemented (core loop)¶
Two-lane zig-zag tracks with intersections; jump between roads or along a road.
Eight colored flags per round; HUD check-off; all-flags bonus then level advance.
Enemy pool (pickup / flag carrier / Camaro / truck types) with spawn, despawn, rare direction reverses, ground crash, and late-jump destroy + flash.
Collectibles: cherry, balloon, lollypop, ice cream.
Lives HUD, round digit, crash / destroy blink, auto-start after ~64 frozen frames.
Layout 3 water hazard zones (grounded contact loses a life).
Missing / incomplete vs cartridge manual¶
Rounds
Rounds 4–9 — Manual: courses escalate through road nine. JAX cycles three corner tables via
level % 3. Distinct round-4+ layouts, denser opponents, and “flag carrier you must jump” chase rounds are not fully modeled.
Enemies and scoring
Per-type jump-on scores — Manual: pickup 100, flag carrier 125, Camaro 150, truck 175. JAX awards a flat 400 on late-jump destroy (closer to some ALE observations than the manual, but not type-split).
Manual collectible / flag table — Printed: flag 75, cherry 50, balloon 65, lollypop 70, ice cream 75. JAX/ALE path uses flag 100 and collectibles 600/600/700/750 (~10× manual). Documented intentionally for ALE parity; not manual-table parity.
Flag-carrying opponents — Manual / AtariProtos: later rounds require jumping cars that carry needed flags. Types exist in constants, but dedicated “must destroy to clear flag” chase logic is incomplete.
Enemy density / AI — Tuned toward ALE’s ~2–3 on-screen trucks (
ENEMY_MAX_VISIBLE_COUNT=3, rareENEMY_DIRECTION_SWITCH_PROB). Still a procedural approximation of ROM spawn tables, not a cycle-accurate AI dump.
Controls
Jump while reversing — Manual: jump only while moving forward; pull-back mid-jump reverses after the jump completes. Mid-air UP/DOWN accel matches ground (ALE); reverse-jump edge cases may still diverge.
Presentation
Audio / music — Not in scope for Jaxtari RGB envs.
Exact sprite / color / scroll parity — Ongoing; see
docs/issue-reports/upndown-parity/.
Reference: AtariAge Up n’ Down manual.
Known issues¶
Only three track geometries; cartridge rounds 4–9 not distinct.
Jump-on-enemy and collectible scores follow ALE-oriented constants, not the printed manual table; per-type jump scores missing.
Full ALE-diff writeup still in progress; record with
scripts/oc_parity/record_upndown.sh.