Powrót do strony głównej

ZX Spectrum zarządza lądowaniem na Księżycu w KSP

Scott Manley sterował lądowaniem księżycowym w Kerbal Space Program za pomocą ZX Spectrum przez emulator Fuse, Interface 1 i kRPC. System radził sobie z opóźnieniami 2 s, podobnie jak AGC Apollo. Dodatkowo stworzono emulator Z80 za pomocą AI Gemini 3 Pro.

Lądowanie księżycowe na ZX Spectrum w KSP: technologie retro
Advertisement 728x90

# Lądowanie na Księżycu w Kerbal Space Program za pomocą ZX Spectrum: szczegóły techniczne

Entuzjasta Scott Manley zaimplementował sterowanie modułem lądownika księżycowego w symulatorze Kerbal Space Program za pomocą ZX Spectrum z 1982 roku. 8-bitowy komputer z procesorem Z80A o taktowaniu 3,5 MHz i pamięcią do 128 KB poradził sobie z zadaniem, mimo dwusekundowych opóźnień. Do integracji użyto emulatora Fuse, Interface 1 i moda kRPC.

Ograniczenia sprzętowe ZX Spectrum i porównanie z AGC

ZX Spectrum był wyposażony w procesor Z80A (3,5 MHz), Sinclair BASIC i pamięć 16–128 KB. Przewyższało to komputer pokładowy Apollo Guidance Computer (AGC) misji Apollo 11: 2,048 MHz, architektura 15-bitowa, 2048 słów pamięci z 1-bitową parzystością. Programiści AGC optymalizowali kod pod kątem minimalnego zużycia zasobów, co wymagało wysokiej pomysłowości.

Manley zauważył, że współczesne ładowarki smartfonów są mocniejsze od ZX Spectrum, ale retro-maszyna i tak wymagała optymalizacji. Musiał umieścić zmienne do obliczania orientacji, przyspieszenia i trajektorii w ograniczonej pamięci, zapewniając manewry i lądowanie.

Google AdInline article slot

Integracja ZX Spectrum z Kerbal Space Program

Bezpośrednie podłączenie jest niemożliwe z powodu braku USB. Rozwiązanie:

  • Emulator Fuse dla ZX Spectrum.
  • Wirtualny Interface 1 z portem RS232.
  • Skrypt w Pythonie do wymiany danych przez interfejs szeregowy.
  • Mod Kerbal RPC (kRPC) do zewnętrznego sterowania KSP za pomocą Pythona lub innych języków.

Program w BASIC odczytywał telemetrię i wysyłał polecenia. Skrypt w Pythonie pośredniczył między RS232 a kRPC, przekazując dane do symulacji w czasie rzeczywistym.

10 REM Chtenie data with RS232
20 INPUT #1, a$,b$,c$
30 PRINT "Telemetry: ";a$;" ";b$
40 REM Sending komand
50 PRINT #1, "THROTTLE 0.5"
60 GOTO 10

Ten cykl zapewniał podstawowe sterowanie aparatem.

Google AdInline article slot

Proces lądowania i wydajność

Po starcie program zainicjował zejście modułu na Księżyc. System przetwarzał dane z opóźnieniem ~2 sekund — podobnie jak cykl AGC, który obliczał parametry nawigacji z tą samą okresowością i pomyślnie wylądował Apollo 11.

Manley wcześniej skonfigurował połączenie do monitorowania i sterowania. Pełny stos: Fuse + Interface 1 + Python + kRPC. Opóźnienia nie przeszkodziły w korekcie trajektorii i miękkim lądowaniu.

Dodatkowy projekt: emulator ZX Spectrum w C++

Manley wznowił porzucony emulator ZX Spectrum w C++. Projekt utknął z powodu 158 podstawowych instrukcji Z80, które rozszerzają się do ponad 800 opkodów z prefiksami i trybami adresowania. Ręczna implementacja była monotonna.

Google AdInline article slot

Dzięki Gemini 3 Pro i Google Antigravity IDE rozwój zakończył się w jeden wieczór. AI wygenerował obsługę opkodów, po czym emulator uruchomił gry.

  • Zalety AI: automatyzacja rutyny, precyzyjna emulacja Z80.
  • Wynik: działający emulator bez błędów w podstawowych scenariuszach.

Co ważne

  • ZX Spectrum (1982) jest mocniejszy od AGC (1969), ale wymaga optymalizacji pod kątem czasu rzeczywistego.
  • Stos Fuse + Interface 1 + kRPC pozwala integrować systemy 8-bitowe z nowoczesnymi symulatorami.
  • Dwusekundowy cykl jest analogiczny do AGC i wystarczający do lądowania.
  • AI (Gemini 3 Pro) przyspiesza emulację Z80, generując ponad 800 opkodów w kilka godzin.

— Editorial Team

Advertisement 728x90

Czytaj dalej