# 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.
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.
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.
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
Brak komentarzy.