1 Ostatnio edytowany przez x_angel (2026-10-02 10:23:40)

Chciałbym tu wrzucić, niech zostanie dla potomnych.
Poprosiłem Claude o edytor map do Montezumy.
Jest to edytor konkretnie do tej wersji, gdyż ma wybór nieśmiertelności.
Po edycji mapy generowany jest z powrotem spakowany plik xex.

Krótki opis:
# Montezuma XEX Editor - edytor komnat oryginalnej gry na Atari

`montezuma_xex_editor.html` to edytor komnat gry **Montezuma's Revenge** na Atari XL/XE w wersji z pliku *Montezumas Revenge 1983 Utopia Software (US) beta t 1 Seban.xex*. Otwierasz go w przeglądarce (Chrome, Firefox, Edge), wczytujesz plik `.xex`, zmieniasz komnaty i zapisujesz nowy plik `.xex`. Nowy plik ma ten sam program ładujący i rozpakowujący co oryginał, więc uruchamia się tak samo: w emulatorze (Altirra, atari800) i na prawdziwym Atari XL/XE z 64 KB pamięci.

Edytor jest zrobiony pod ten jeden plik. Inny plik z tą grą (inny crack, inna wersja) zostanie odrzucony z komunikatem, bo pamięć gry jest tam ułożona inaczej.

## Obsługa

1. **Wczytaj XEX** (albo przeciągnij plik na stronę). Edytor zapamiętuje plik i zmiany w przeglądarce, więc po ponownym otwarciu strony praca jest na miejscu.
2. **Karta "Piramida".** Pokazuje wszystkie 102 komnaty ułożone według przejść, piętra od góry. Najedź i kliknij komnatę, aby ją wybrać, kliknij dwukrotnie, aby ją edytować.
   - Żółta ramka oznacza komnatę startową. Przycisk **Ustaw jako startową** zmienia, gdzie gra się zaczyna (przydaje się też do testów).
   - Przyciemnione komnaty leżą na ciemnych piętrach: w grze widać w nich mury tylko z pochodnią.
   - Komnaty, które w grze zajmują to samo miejsce co inne (zamienniki w labiryncie), są na samym dole mapy.
   - Panel **Pamięć** pokazuje, ile miejsca zajmują dane komnat. Dane muszą się zmieścić w 2139 bajtach, tyle co w oryginale (jeden wróg albo przedmiot to 3 bajty). Żeby dodać coś w jednej komnacie, gdy miejsca brakuje, usuń coś w innej.
3. **Karta "Komnata"** ma trzy tryby:
   - **Układ (kafle).** Lewy przycisk maluje wybranym kaflem z palety, prawy pobiera kafel spod kursora. Opcja "kolor 4" daje kafel z ustawionym najstarszym bitem (inny kolor cegieł).
     - Uwaga: gra ma tylko 17 układów (rysunków 40×24 kafle), a komnat jest 102. Jednego układu używa wiele komnat, więc malowanie zmienia je wszystkie; edytor wypisuje, których to dotyczy.
     - Żeby zmienić tylko jedną komnatę, przełącz jej układ na inny z listy albo przerób komnaty tak, żeby dany układ miała tylko ona.
   - **Przedmioty i drzwi.** Lista przedmiotów komnaty: rodzaj, kolumna, wiersz, od którego poziomu się pojawia. Przedmiot przesuwasz przeciągając go na rysunku albo klikając puste miejsce, gdy jest zaznaczony.
   - **Wrogowie.** Lista wrogów: rodzaj (typ szesnastkowo albo z listy typów występujących w grze), pozycja startowa x/y, od którego poziomu.
     - Każda komnata ma co najmniej jeden wpis wroga; niepotrzebnego ustaw na "od poziomu 4".
     - Zmiana rodzaju zwykle działa (np. czaszka na węża), ale nie zawsze. Nowy układ wrogów sprawdź w emulatorze.
4. **Ustawienia komnaty** (prawy panel karty "Komnata"):
   - **numer układu**;
   - **odbicie lewo↔prawo**: gra rysuje układ odwrócony w poziomie od 5. wiersza w dół;
   - **drabina do góry / drabina w dół**: drabina na środku komnaty, którą gra dorysowuje na układzie;
   - **4 przejścia**: komnata po lewej, po prawej, wyżej i niżej. Opcja "zmieniaj przejście w obie strony" od razu poprawia przejście powrotne w sąsiedniej komnacie.
5. **Karta "Zapis i informacje".**
   - **Zapisz XEX** tworzy plik `<nazwa>_edit.xex`. Przed zapisem edytor rozpakowuje nowy plik jeszcze raz i porównuje go z tym, co miało w nim być.
   - **Kopia zmian (.json)** zapisuje tylko Twoje komnaty i układy, żeby przenieść pracę na inny komputer albo do innej przeglądarki.
   - **Cofnij wszystkie zmiany** wraca do oryginału.

**Ctrl+Z** albo przycisk **Cofnij** cofa ostatnią zmianę na karcie "Komnata".

## Jak zbudowana jest gra (dla ciekawych)

### Plik XEX

| Segment | Zawartość |
|---|---|
| `$8000-$B7FF` | koniec spakowanych danych; kod INIT z `$2400` kopiuje go pod ROM systemu (`$C000-$CFFF`, `$D800-$FFFF`) |
| `$ACA7-$BFFF` | początek spakowanych danych |
| `$00D0-$00D5` | adres początku danych, koniec etapu 1, adres startu (`$0480`) |
| `$2400-$25E1`, `$2600-$261D` | depacker (przenoszony do `$0700`) i jego start |

Packer ma dwa etapy:

1. **Etap 1, LZ w strumieniu bitów** (bity od najstarszego). Bajt nagłówka mówi, ile dodatkowych bitów ma przesunięcie (tu 3, czyli przesunięcie do 2047). Potem idą na zmianę:
   - literał: bit 0 i 8 bitów;
   - kopia: bit 1, długość (`0` = 2; `1` + 2 bity = 3-5, kolejne pary bitów `11` dodają po 3, po trzech `11` jest pełny bajt długości), 8 bitów przesunięcia i 3 bity starszej części przesunięcia.

   Wynik ląduje od `$0A00`, a potem jest przenoszony na koniec pamięci.
2. **Etap 2, RLE.** Bajt sterujący:
   - `1-127`: tyle powtórzeń następnego bajtu;
   - `$81-$FE`: tyle bajtów przepisanych;
   - `$00` / `$FF`: to samo z 16-bitową długością.

   Wynik ląduje od `$0480` z pominięciem stron `$07-$08` (depacker) i `$D0-$D7` (układy I/O). Na koniec całość jest przesuwana o stronę w górę.

Po rozpakowaniu intro cracka (`$C000`) pyta o nieskończone życia, przenosi `$1E00-$BFFF` do `$0E00-$AFFF` i uruchamia grę od `$0E00`. Wszystkie adresy poniżej to adresy gry po tym przeniesieniu (w pliku są o `$1000` wyżej).

### Komnaty

- **Lista komnat:** `$3CE8-$4542`, 102 rekordy jeden po drugim, w kolejności pięter.
- **Układy:** 17 × 1 KB od `$6C00` (ekran 40×24 w trybie ANTIC 4).
- **Zestaw znaków:** `$56C6` (kopiowany do `$0400`).
- **Kolory pięter:** `$1ACA`.

Rekord komnaty (k = liczba wrogów − 1, n = liczba przedmiotów):

| Bajty | Znaczenie |
|---|---|
| 0 | bity 0-4 numer układu; bit 5 drabina w dół; bit 6 drabina do góry; bit 7 odbicie lewo↔prawo |
| 1-8 | adresy komnat obok: lewo, prawo, góra, dół (0 = brak) |
| 9 | k |
| 10 ... 10+k | x wrogów (w punktach 0-159) |
| 11+k ... 11+2k | y wrogów (linie obrazu) + bity 0-1: od którego poziomu |
| 12+2k ... 12+3k | typ wrogów (bit 0 aktywny, bity 2-3 ruch, bit 4/5/7 wygląd) |
| 13+3k | n |
| dalej n × 3 | przedmiot: x (kolumna × 4), y (`$28` + wiersz × 8 + poziom), typ |

Typy przedmiotów:

| Typ | Przedmiot |
|---|---|
| `0`-`6` | amulet, klucz czerwony, niebieski, biały, pochodnia, miecz, klejnot (2×2 kafle) |
| `$80` | migający łańcuch (bariera, kolumna 4 kafli) |
| `$81`-`$83` | drzwi czerwone, niebieskie, białe (kolumna 4 kafli; otwiera je klucz w tym samym kolorze) |
| `$84`, `$85` | pusta kolumna (przejście) |
| `$10` | dziura 16×5 kafli |
| `$08` | znacznik specjalny |

Bity `$40`/`$20` typu gra ustawia sama w trakcie gry (zebrany przedmiot, otwarte drzwi).

Adresy w kodzie, które edytor poprawia po zmianie rozmiaru komnat:

| Adres | Co wskazuje |
|---|---|
| `$1135/$1139` i `$1455/$1459` | komnata startowa |
| `$1C32/$1C38` | ostatni rekord |
| `$1982/$198A` | pierwsza ciemna komnata |
| `$1AB8` | pierwsze komnaty pięter i koniec listy |

Post's attachments

Montezuma's Revenge (1983)(Utopia Software)(US)(beta)[t +1 Seban].xex 19.45 kb, liczba pobrań: 10 (od 2026-10-02) 

montezuma_xex_editor.zip 28.32 kb, liczba pobrań: 10 (od 2026-10-02) 

Tylko zalogowani mogą pobierać załączniki.

2

@x_angel, ale z Ciebie się zrobił hakier pełną gębą :-)
Nieźle, nieźle, chociaż dziwię się, że wybrałeś tą wersję, a nie tzw. Preliminary Monty 16K, która ma przynajmniej zakończenie, więc większy sens jest tej gry. Pewnie do tej masz jakiś sentyment z dzieciństwa zgaduję?

3

WoW!

No faktycznie - jak Mq pisze - hakier na całego :D
Będę musiał z Tobą pogadać na temat Claude i tego co na nim dajesz radę zrobić, hehe.
Zapewne Arduino potrafi też oprogramować śpiewająco skoro na Atari śmiga jak "stary wyjadacz"

Pozdr
tOri

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
https://reversing.pl Atari - Power without price and necessary elements with some sh*t onboard
http://atari.myftp.org - backup address

4 Ostatnio edytowany przez x_angel (2026-10-02 20:32:07)

Mq: tak, lubię tę wersję, bo można długo pograć i zawsze mnie zastanawiało, co ja mam zrobić przy tym posągu. A także jako dzieciak odkryłem, że po drzwiach da się wejść do "skarbca" czyli pola na itemki i pomnożyć miecze. Przynajmniej tak sobie wtedy wyobrażałem ten skarbiec, o którym mówił opis w jakiejś gazecie.

tOri: możemy pogadać, ale ja tego używam dopiero miesiąc, nie mam pojęcia nic o agentach, skilach itp.
Claude na pewno ogarnia Arduino- nie wiem czy znacie taką "konsolę" Uzebox - jedna Atmega644 i nic więcej.
W tej chwili zrobiłem już konwersję Montezumy, River Raid, Moon Patrol a także demo Bad Apple :)
A dziś skończyłem Crystal Raider i wyszło rewelacyjnie.
https://uzebox.org/forums/viewforum.php ... 39510a2014

Wskażcie mi "dobrą" wersję Montezuma 16k (może z wyborem nieśmiertelności), a przepalę parę tokenów i będzie edytor :)
Wrzuci się do jednego wątku i będzie komplet.

5

Może by sztuczniak naprawił zakończenie Montezumy ;)

grzybson/SSG^NG

6

O właśnie, tym bardziej, że można podejrzeć u Jaegera współczesną wersję z jakiejś konsoli czy PC jak rozwiązał zakończenie.

7

Ja jeszcze nie widziałem zakończenia - jest gdzieś na YT?

8

jest zakonczenie, walka z bosem, pozniej jak w preliminary, oprocz tego kupe nowych rzeczy (no i w koncu normalna muzyka ;)

http://atari.pl/hsc/ad.php?i=1.

9

@xxl
A Ty zdaje się pisałeś ostateczną wersję na Atari, będzie coś z tego jeszcze?

10

XXL wydaje do szuflady ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

11

ja przeszedłem... na kilku poziomach ;-)


https://www.youtube.com/watch?v=7TyaSR0JRxo

http://atari.pl/hsc/ad.php?i=1.

12

@xxl
No fajnie, a nie za szczelną masz tę szufladę? ;-)