Kung-Fu Master EX

Dwóch graczy naraz, w trybie co-op
Atari XL/XE 64 KB z VBXE

O grzeco to jest i kto to zrobił

Kung-Fu Master EX to jedyna wersja Kung-Fu Mastera, w której dwóch graczy walczy jednocześnie, w trybie co-op. Thomas i Chuck Norris razem, ramię w ramię, idą na szczyt świątyni. Automat i wszystkie wersje domowe pozwalają walczyć tylko jednemu graczowi naraz. Co-op dodaliśmy, bo we dwóch po prostu gra się lepiej: osłaniacie sobie plecy, razem czyścicie piętra i razem pokonujecie bossów. Nie ma z kim zagrać? Partnerem może być komputer.

Thomas i Chuck Norris, ekran ładowania

Ekran ładowania nawiązuje do filmu Droga smoka (1972), w którym Bruce Lee i Chuck Norris walczyli ze sobą w Koloseum. U nas walczą ramię w ramię. Sam Kung-Fu Master też coś zawdzięcza Bruce'owi Lee, a dokładnie jego Grze śmierci: piętro za piętrem, na każdym boss.

Oryginalny Kung-Fu Master to gra na automaty wydana przez Irem w 1984 roku, zaprojektowana przez Takashiego Nishiyamę. Tę wersję na Atari XL/XE z VBXE zrobiła grupa New Generation w 2026 roku. Gra ma wszystkie pięć pięter świątyni, bossów, intro i tryb demonstracyjny. Fale przeciwników i zachowanie bossów odwzorowaliśmy na podstawie kodu automatu.

Można też grać samemu albo oglądać, jak grają dwaj gracze komputerowi.

Gra była na naszej liście od 2020 roku. W 2023 była zrobiona w mniej więcej dwóch trzecich, potem odłożyliśmy ją, żeby zrobić dema Rewind 2 i Unbound oraz kilka mniejszych produkcji. Cele były te same od początku: 50 klatek na sekundę, klimat oryginału, dodatkowe tryby gry, dwa poziomy trudności, wygodne sterowanie joystickiem z jednym albo dwoma przyciskami i sample, jeśli się zmieszczą.

Twórcy

Kod

SoloJarosław PadulaLaooWaldemar Pawlaszek

Asembler NGA

LaooWaldemar Pawlaszek

Muzyka, efekty

MikerMichał Szpilowski

Dodatkowa grafika

SoloJarosław Padula

Player RMT

Raster/C.P.U.Radek Štěrba

Testy na prawdziwym sprzęcie

Jacques, Pin, SuN, tebe, Piguła, Piesiu, Larek, woj

Co-op we dwóch

Dwóch graczy naraz na ekranie: Thomas i Chuck Norris. Grasz z kolegą albo z komputerem jako partnerem. Więcej w części Tryby gry.

Blisko automatu

Wejścia wrogów, nożownicy, pięciu bossów, trudniejsze obiegi i licznik smoków działają jak w automacie. Czasy wzięliśmy z kodu automatu, klatka po klatce.

ANTIC + VBXE

Gra działa hybrydowo. Piętro rysuje ANTIC, a na nim jest przewijana mapa kolorów VBXE. Sprite'y rysuje blitter VBXE, do 24 w klatce, z podwójnym buforem, 50 klatek na sekundę.

Dźwięk

Muzyka i efekty: Miker. W trakcie gry słychać sample głosów z automatu. Z drugim POKEY-em dźwięk jest stereo, z krótkim pogłosem na drugim układzie.

Tryby gryto wszystko jest nowe, żadna inna wersja gry tego nie ma

Menu trybów gry
Menu, po naciśnięciu przycisku na ekranie tytułowym
Pauza
Spacja włącza pauzę

Opcje

Zmienia się je w menu, wychylając joystick w lewo i w prawo; strzałki pokazują, w którą stronę da się jeszcze zmienić wartość. Zostają, dopóki ich nie zmienisz.

Difficulty (trudność)

ARCADE to gra jak na automacie. NORMAL jest łatwiejszy: wrogowie wchodzą łagodniej, bossowie rzadziej atakują i masz jedno życie więcej. Obrażenia są takie same. CHILLED to NORMAL na spokojny wieczór: każde trafienie zabiera połowę energii, chwytacze wysysają ją dwa razy wolniej i zaczynasz z pięcioma życiami. INSANE zaczyna się z dwoma smokami, czyli od trzeciego obiegu automatu już od piętra 1: więcej wrogów, szybsze noże, trudniejsi bossowie.

Play as (postać)

THOMAS albo CHUCK na joysticku 1, w każdym trybie. Przy dwóch graczach (albo partnerze CPU) drugi dostaje drugą postać.

CPU skill (umiejętności komputera)

Jak dobrze gra komputer, w każdym trybie z graczem komputerowym: NORMAL albo PRO.

Buttons (przyciski)

1: dla joysticka z jednym przyciskiem. Przycisk z wychyleniem w lewo albo w prawo to cios w tę stronę, sam przycisk to kopnięcie, dół z przyciskiem to kopnięcie nisko.
2: dla joysticka z dwoma przyciskami. Pierwszy przycisk kopie, drugi uderza.

Pauza

Spacja włącza pauzę. Z pauzy można grać dalej albo wrócić do tytułu. START albo SELECT też wracają do tytułu.

Tryby

Start

Klasyczna gra dla jednego gracza.

2 players (dwóch graczy)

Thomas na joysticku 1 i Chuck Norris na joysticku 2 (albo odwrotnie, przez PLAY AS), jednocześnie. Obaj są na jednym ekranie i razem wchodzą po schodach. Gdy jeden straci wszystkie życia, drugi gra dalej.

1 player + CPU

Ty grasz postacią wybraną w PLAY AS, komputer gra drugą jako Twój partner.

CPU + CPU

Komputer gra oboma. Siadasz i oglądasz.

CPU

Komputer gra samym Thomasem.

Training (trening)

Wybrane piętro w kółko, bez tracenia żyć.

Boss training (trening bossa)

Start tuż przed bossem wybranego piętra, bez innych wrogów.

Więcej informacji i technikajak powstała gra i co jest w środku

Zajęta pamięć VBXE

99,97%

524 128 B z 524 288 B (całe 512 KB)

Wolna pamięć VBXE

160 B

z 512 KB

Wolny RAM Atari

287 B

z 46 592 B na kod i dane, w kilku miejscach

Strona zerowa

249 B

zajęte, 7 B wolne

Klatki sprite'ów

256

z 256, tyle mieści jednobajtowy numer klatki

.xex

174,2 KB

178 352 B po kompresji

Liczby dla wydanego pliku kfmex.xex.

Asembler NGA

Gra jest napisana w asemblerze 6502 dla NGA, nowego asemblera autorstwa Laoo. NGA sam rozmieszcza kod i dane w pamięci, także w bankach i w pamięci VBXE, i już przy budowaniu sprawdza przełączanie banków.

Rytm klatki

Pętla gry nie startuje w przerwaniu pionowym (VBL). Rusza w linii 156, gdy dół ekranu jest jeszcze rysowany. Odczyt joysticka, logika gry i nowa pozycja przewijania są gotowe przed VBL w linii 248. W linii 224 blitter zaczyna rysować sprite'y do drugiego, niewidocznego bufora, a VBL przełącza na niego dopiero, gdy blitter skończy. Kiedy plamka zaczyna kolejną klatkę od góry, wszystko jest już na swoim miejscu, więc sprite'y nie migają i nie rwą się.

Sprite Maker NG

Sprite'y wycinaliśmy z arkuszy grafiki w Sprite Maker NG, naszym własnym narzędziu: klatki, punkty zaczepienia, hitboxy i eksport do gry.

Emulator i bridge

Testy szły w AltirraSDL autorstwa ilmenita, forku Altirry, którą napisał phaeron (Avery Lee). Bridge w AltirraSDL pozwala sterować emulatorem ze skryptu bez okna: wczytać grę, ruszać joystickiem, czytać pamięć, robić zrzuty ekranu. Na nasze potrzeby zrobiliśmy kilka kolejnych forków AltirraSDL, na przykład do nagrywania dźwięku bez okna i do zapisu, kiedy blitter VBXE jest zajęty.

Profilowanie

Profilowanie i testy wydajności prowadził LLM (Claude) przez ten bridge. Gra gra sama w trybach CPU, a każda klatka jest mierzona: ile czasu 6502 spędza na każdej części gry i jak długo pracuje blitter. Ostatnie szlify wydajności zrobiliśmy na podstawie tych pomiarów.

Sprite Maker NG
Sprite Maker NG z arkuszem Thomasa i bossów

Dwóch graczy komputerowych, 3. obieg, aż do końca gry. Po prawej: jaką część każdej klatki 6502 spędza na poszczególnych częściach gry i jak długo pracuje blitter VBXE (opisy po angielsku).

Pobierzgra i co jest potrzebne, żeby ją uruchomić

Gra - v1.06

kfmex.xex
Spakowany, 175 KB. Na dyskietkę, SIO2PC i inne loadery przez SIO. Rozpakowanie trwa ok. 30 sekund.

kfmex-raw.xex
Bez kompresji, 480 KB. Na SIDE, dyski twarde i szybkie loadery.

kfmex.atr
Obraz dyskietki, podwójna gęstość 180 KB, startuje sam (bez DOS-u). Na SIO2PC, SDrive, FujiNet, emulatory i stacje z podwójną gęstością. Wczytywanie przy zwykłej prędkości SIO trwa ok. 3 minut.

Wymagania

  • Atari XL/XE, 64 KB
  • VBXE z rdzeniem FX 1.26 lub nowszym, pod $D640 albo $D740
  • PAL albo NTSC (na NTSC gra jest szybsza, dopracowanie pod NTSC jeszcze trwa)
  • Joystick z jednym albo dwoma przyciskami
  • Opcjonalnie: drugi POKEY dla stereo
  • Emulator: Altirra 4.40 lub nowsza, z włączonym VBXE

Sterowanie

  • Góra: skok, dół: kucnięcie
  • Jeden przycisk: przycisk z wychyleniem w lewo albo w prawo = cios, sam przycisk = kopnięcie
  • Dwa przyciski: pierwszy = kopnięcie, drugi = cios
  • Spacja: pauza
  • START albo SELECT: powrót do tytułu

Historia wersji

Wersja 1.06 (31.10.2026): nowy poziom trudności CHILLED (pół obrażeń, chwytacze wysysają energię dwa razy wolniej, pięć żyć). Mr. X między atakami czeka w tej samej pozie co na automacie, więc jego kopnięcia dołem już nie migają. Przejścia między ekranami nie pokazują już klatki śmieci na rdzeniu VBXE FX 1.27. Menu pokazuje głowę postaci wybranej w PLAY AS, a Chuck ma niższy okrzyk na ekranie LET'S GO.

Wersja 1.05 (31.10.2026): nowy poziom trudności INSANE (start z dwoma smokami, trzeci obieg automatu od piętra 1). PLAY AS: THOMAS / CHUCK w każdym trybie; przy dwóch graczach albo partnerze CPU drugi dostaje drugą postać. Strzałki w menu pokazują, w którą stronę da się zmienić wartość. Nowość: gra jako startujący sam obraz dyskietki (kfmex.atr).

Wersja 1.04 (wewnętrzna): bossowie pięter 4 i 5 jak w automacie (ciosy z bliska znowu wchodzą, Mr. X nie da się ominąć), motyle na piętrze 4 odlatują za ekran, bez dziur w planszy po utracie życia, drugi przycisk Joy 2B+ działa od pierwszej gry.

Wersja 1.03 (29.10.2026): poprawione glitche tła na prawdziwym sprzęcie i MiSTerze (pojedyncze klatki ze złą grafiką tła, najczęściej na podłodze). Przyczyną była cecha procesora 6502: przerwanie od obrazu mogło zginąć, gdy zbiegło się z przerwaniem odtwarzania sampli. Dziękujemy wszystkim testerom za zgłoszenia i filmy!

Wersja 1.02 (29.10.2026): poprawione migotanie na rdzeniu VBXE FX 1.27 (najbardziej na komputerach NTSC) i pewniejsze rysowanie sprite'ów na prawdziwym sprzęcie (resztki okienka pauzy, pojedyncze klatki z błędem przy zmianie ekranu).

Wersja 1.01 (29.10.2026): poprawiony drugi przycisk w joystickach Joy 2B+. Gra sama rozpoznaje podłączenie przycisku; jeśli kopnięcie na początku nie działa, wystarczy raz przytrzymać cios przez ok. 3 sekundy. Numer wersji widać na ekranie ładowania.

KontaktNew Generation

Pouet - nasze produkcje
Demozoo - nasze produkcje
Time Pilot na Atari XL/XE