FUNTASTYCZNY ŚWIAT COMMODORE
Translate to:
Tagi: firmware | gra | sprzęt
 Artykuł 
data: 2025-02-05, autor: Redakcja

Codebreaker autorstwa Cezarego Rodziewicza


Z komputerem Commodore 64 pierwszy kontakt miałem w 2001 roku mając 14 lat. Podłapałem trochę Basica i zacząłem pisać proste programy użytkowe. Mój ojciec, widząc mój zapał do programowania, sprawił mi pół roku później peceta, a C64 odeszło do lamusa. 22 lata później, podczas sprzątania piwnicy, postanowiłem wyczyścić i odrestaurować swoją maszynę. Komputer był mocno zakurzony, ale na szczęście korozja nie uszkodziła płyty głównej. Najbardziej pracochłonnym zadaniem było odrestaurowanie plastikowych części, mocno nadgryzionych i zażółconych przez czas i promienie UV.









Mając już wyczyszczoną i uruchomioną maszynę, postanowiłem coś na nią napisać. Programowanie w Basicu czy Asemblerze nie było dla mnie. Znalazłem w sieci kompilator dla procesorów 6502 o nazwie CC65

Przez kilka tygodni szukałem pomysłu na swoją pracę. Założenie było takie, aby dało się wykorzystać któryś ze sprzętowych interfejsów komputera, co wymagałoby zaprojektowania również jakiejś elektroniki. W ramach przymiarek inżynierskich zacząłem eksperymentować z user portem. Po opanowaniu konfiguracji i sterowania, wpadłem na pomysł adaptacji gry CodeBreaker / Mastermind, w którą zdarzyło mi się kiedyś zagrać. Zamówiłem przez Internet egzemplarz gry, który miał mi posłużyć za obudowę dla elektroniki.




Sprzęt


Planowana zasada działania elektroniki miała polegać na pomiarze czasu ładowania kondensatora na każdym z czterech pinów wejściowych. Czas ładowania miał być różny, w zależności od włożonej małej płytki PCB, na której znajdował się rezystor oraz miejsce na oznaczenie kolorem.


User port w C64 posiada między innymi jeden 8-bitowy port GPIO (PB) oraz zasilanie 5V.

Aby zrealizować działanie gry potrzebowałem:

  • 4 piny ustawione jako wejścia, aby możliwa była detekcja wprowadzonych "kolorów".
  • 10 pinów ustawionych jako wyjścia, które odpowiedzialne byłyby za wywołanie pomiaru w kolejnym kroku. Cechą kluczową tych 10 wyjść jest to, że w danej chwili wysterowany musi być tylko jeden pin.
  • 1 opcjonalny pin ustawiony jako wejście, aby możliwe było zatwierdzenie przez użytkownika swojego wyboru (PA2), jednak można to rozwiązać za pomocą klawiatury komputera.

Aby uzyskać wymaganą ilość pinów wyjściowych użyłem demultipleksera 4HC4514PW,118 z 4 linii na 16, z czego wykorzystanych zostało 10 sygnałów. Połowa portu B była zatem skonfigurowana jako wejście, a druga połowa jako wyjście.



Część wykonawczą, realizującą załączanie zasilania i pomiar, wykonałem za pomocą małych przekaźników RSM957N-0111-85-S005 sterowanych przez tranzystory MMUN2214LT1G. W każdej sekcji odpowiednie diody jak D40 i D20 zastąpiłem rezystorami 0R, ze względu na zbyt wysokie napięcie przewodzenia diod KP-2012MGC, co uniemożliwiało ich świecenie w momencie wysterowania.



Ze względu na rozrzut technologiczny związany z technologią MOS, bezpośredni pomiar czasu ładowania kondensatora bezpośrednio na pinie user portu nie byłby praktyczny. Aby obejść ten problem, zastosowałem konstrukcję z użyciem tranzystora MMUN2214LT1G. Ten model przełącza się, gdy na jego wejściu (bazie) napięcie przekroczy 1V. Dzięki temu możliwe było wykonanie obwodu, który będzie działał w powtarzalny sposób.



Kolejnym aspektem pracy elektroniki było zapewnienie rozładowania kondensatorów pomiędzy pomiarami. W tym celu zastosowałem bocznikowanie za pomocą rezystorów o wartości 1M Ohm.



Dzięki wsparciu kolegi Ralpha w zakresie mechaniki i modelowania CAD, dostałem szczegółowy model 3D obudowy, abym mógł zaplanować w odpowiednich miejscach złącza na płytki PCB reprezentujące wybrany kolor.


Aby móc korzystać z userportu, konieczne jest użycie dedykowanego złącza:



Na potrzeby projektu zaprojektowałem płytkę PCB umożliwiającą krawędziowy montaż złącza user portu oraz montaż przewodu. Płytka posiada także dedykowany konektor, który zostanie użyty w przyszłości do innego projektu.






Oprogramowanie


Od początku założeniem gry nie były efekty graficzne. Gra została podzielona na 2 tryby:

  • Tryb Easy: Weryfikuje włożone kombinacje oraz przedstawia podpowiedzi w następujący sposób:
    • Biały – Kolor występuje w kombinacji, ale nie jest na swoim miejscu
    • Zielony – Kolor jest we właściwym miejscu
    • Czerwony – Kolor nie występuje w kombinacji


  • Tryb Normal: Weryfikuje obsadzone kombinacje i przedstawia podpowiedzi w formie liczbowej w dwóch kolumnach:
    • Kolumna +: Ilość poprawnie obsadzonych kolorów
    • Kolumna X: Ilość kolorów, które nie występują w kombinacji


Kluczowym fragmentem kodu jest procedura rozpoznająca obsadzone kolory:

Jako argument wejściowy przekazywany jest numer aktualnej rundy w celu odpowiedniego ustawienia multipleksera.

Na początku funkcji ustawiany jest port B w taki sposób, aby tylko górna część portu pracowała jako wyjście. Następnie zerowane są globalne tablice Ball oraz Ball_Lock w których przechowywane będą początkowo czasówki z odczytów, a później wartości konkretnych kolorów.
Wywołanie procedury SetDemux (0) powoduje brak wysterowania jakiegokolwiek przekaźnika wyzwalającego ładowanie kondensatorów.
Po rozładowaniu kondensatorów (np. z poprzedniej rundy) wywoływana jest funkcja SetDemux(RoundNumber), która załącza odpowiedni przekaźnik w celu wykonania pomiaru.
W pętli inkrementowana jest zmienna 16-bitowa Delay, której chwilowa wartość jest zatrzaskiwana w konkretnych polach tablicy Ball[]. Po wykonanym pomiarze, wartości ulegają konwersji na konkretne kody kolorów.












Autor projektu i artykułu: Cezary Rodziewicz


LINKI:


Schemat PDF
CodeBraker.prg

Tagi: firmware | gra | sprzęt
 Zapraszamy 
 Polskie Gry na C64 
autor: Rebok



dzięki CSDb!
 Wydarzenia 
zaktualizowano: 2026-09-05 06:00
Byterapers Inc. 40 Years (Finland)

- The Compiler is Watching
Typ: Demo Party
Kiedy: 3 - 6 Września 2026

Mysdata 2026 (Sweden)

Typ: Demo Party
Kiedy: 18 - 20 Września 2026

Deadline 2026 (Germany)

- Apocalypso
Typ: Demo Party
Kiedy: 2 - 4 Października 2026

Zoo 2026 (Finland)

- Hard Day's Ware
Typ: Demo Party
Kiedy: 30 Października - 1 Listopada 2026

Flashparty 2026 (Argentina)
Typ: Demo Party
Kiedy: 31 Października 2026

Transmission64 2026
- The C64 Online Demoparty
Typ: Demo Party
Kiedy: 28 Listopada 2026

Fioniadata 2027 (Denmark)
Typ: Demo Party, Meeting
Kiedy: 12 - 14 Marca 2027

FOReVER 2027 - 8-bit City (Slovakia)

Typ: Demo Party, 8 bit Party
Kiedy: 19 - 21 Marca 2027

Furulund 40-Years Anniversary Party (Sweden)
- Furulund - Where the Swedish Demo Party Scene was born.
Typ: Copy Party, Demo Party, Meeting
Kiedy: 2 - 4 Lipca 2027

 Muzeum komputerów 
autor: Johny
Znasz wszystkie retro komputery? Odwiedź nasze 8/16-bitowe muzeum!
 Chmura tagów 
Atari(3) | Boom!TV(18) | C16/PLUS 4(1) | crack(10) | demo(50) | diskmag(1) | emulatory(9) | firmware(2) | gra(35) | grafika(17) | IDE64(2) | koncert(11) | konkurs(21) | książka(5) | meeting(4) | muzeum komputerów(2) | muzyka(17) | nagrody(10) | party(83) | PETSCII(4) | prasa(14) | produkcje(83) | programowanie(3) | programy użytkowe(5) | scena(55) | sd2iec(1) | sprzęt(41) | trainer(1) | ultimate(5) | youtube(68)
 Polecamy kanały 
 Emulator C64 
Nie masz Commodore 64? Zobacz emulator online,

lub pobierz emulator na swój komputer PC:

 Przyjaciele 
Zobacz co u nich słychać!

Nie widzisz swojej strony? Napisz do nas! Dodamy!

Wymiana banerów:
Polityka prywatności ToDo