Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Pytanie, basic  (Przeczytany 9390 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1056
    • http://www.commocore.com
Pytanie, basic
« Odpowiedź #15 dnia: 18 Grudnia 2011, 13:39 »
No właśnie. No jest to oczywiste, gdyż printujesz tekst w danym kolorze więc z automatu zostanie zmieniony ten kolor. Trzeba by w IRQ zrobić taki "usuwator" żeby w tle zmieniał ten kolor, ale raz, że to już assembler, to dwa, że mija się to naprawdę z celem.

Offline Mef

  • Level 3
  • ***
  • Wiadomości: 221
  • ~ Racing the Beam! ~
Pytanie, basic
« Odpowiedź #16 dnia: 19 Grudnia 2011, 13:23 »
Zgadza się, teraz to oczywiste, hehe.

Jest jednak na to metoda!

"Disable The INPUT Question Mark
POKE 19,64 - Disable, but you must INPUT data. An empty RETURN is ignored.
POKE 19, 0 - Enable
"

Prosto i skutecznie ale kosztem nowego kłopotu - w przypadku podania błędnego typu danych
(łańcuch kiedy żądana jest zmienna), zamiast "REDO FROM START" wywala się błąd danych
i kończy program. Można to obejść prosząc zawsze o $tring np.:
INPUT "PODAJ X";X$ a potem sprawdzić czy da się go zamienić na zwykłą zmienną:
IF VAL(X$)=0 THEN PRINT "POPRAW DANE": GOTO [numer linii z inputem], a w kolejnej linijce:
X=VAL(X$)
"Stand rigid for the next battle
Peace means reloading your guns
The love for life is all hatred in disguise
A carnival creation with masks undone"

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1056
    • http://www.commocore.com
Pytanie, basic
« Odpowiedź #17 dnia: 19 Grudnia 2011, 15:09 »
Hehe, a to mnie zaskoczyłeś. Uczyłem się basica w czasach, gdy nie było internetu a teraz korzystanie z basica byłoby dla mnie przysłowiowym "pain in the ass".

Pod 19 ($13) jest Current I/O Channel (CMD Logical File) Number

Nie znalazłem niestety dokładnego opisu jak działają bity pod tym adresem, ale wpisanie np: 32 daje ciekawy efekt.

Więcej informacji tutaj na przykład: http://www.unusedino.de/ec64/technical/project64/mapping_c64.html

Offline ruter

  • Level 3
  • ***
  • Wiadomości: 228
Pytanie, basic
« Odpowiedź #18 dnia: 27 Grudnia 2011, 15:51 »
A tutaj pytanie, ,które nie ma większego związku z tematem, otóż posiadam zacną polską grę p.t. 'Burmistrz 3', i czytałem, że jest ona napisana w BASICU, nawet po wciśnięciu RUN/STOP wywala ?BREAK IN nnnn, tylko, że to zawiesza komputer, lecz, gdy zrobię listing tej gry, to mam tylko: 1744 SYS2059 . Pytanie brzmi: Jak zrobić, by widoczny był normalny listing, jak przystało na program napisany w BASICu?

Offline Mikra_Lbn

  • Level 3
  • ***
  • Wiadomości: 222
    • http://www.lubus.info
Pytanie, basic
« Odpowiedź #19 dnia: 28 Grudnia 2011, 18:38 »
Może jest to podobne zabezpieczenie, jak w przypadku programu edukacyjnego "Prawo jazdy". Z tego co pamiętam, to pod normalnym adresem Basic-a ($0801) pojawiało się SYS 2059, ale po wpisaniu POKE 43,144 (albo jakiejś innej wartości), to pojawiał się listing.
Po zatrzymaniu programu i zresetowaniu komputera, włącz monitor asemblera (np. w Final 3) i poszukaj miejsca, gdzie zaczyna się program w Basic-u. Sama gra mogła być napisana w tym języku, ale nie jest wykluczone, że posiada wstawki asemblerowe.

zyga

  • Gość
Pytanie, basic
« Odpowiedź #20 dnia: 28 Grudnia 2011, 19:10 »
Albo został skompilowany czymś takim: http://noname.c64.org/csdb/release/?id=72927
spróbuj zdekompilować tym: http://noname.c64.org/csdb/release/?id=97092

Był też Austrocompiler i inne kompilatory Basica.
http://www.lemon64.com/forum/viewtopic.php?t=15678&sid=d5f1f7403a682352c2fb1d0fb09bc6 49

Offline ruter

  • Level 3
  • ***
  • Wiadomości: 228
Pytanie, basic
« Odpowiedź #21 dnia: 29 Grudnia 2011, 21:55 »
Próbowałem, ale nic to nie dało.
Najwięcej rezultatów dawało manipulowanie poke 43, i tu numer, ale to nie był listing, tylko banda znaczków.
Gra na pewno posiada assemblerowe wstawki, bo w tle leci muzyczka, i to nie jakieś pojedyncze dźwięki, tylko porządna 'Red Moon' \"\"

Offline Mikra_Lbn

  • Level 3
  • ***
  • Wiadomości: 222
    • http://www.lubus.info
Pytanie, basic
« Odpowiedź #22 dnia: 30 Grudnia 2011, 12:27 »
U mnie siedzi chyba pierwsza wersja burmistrza, bez muzyki. Po wciśnięciu Run/Stop i wpisaniu List bez oporów wykonuje polecenie "pokaż kotku, co masz w środku".\"\"
Także w Basic-u napisana została gra Kolony, przy czym autorzy również posilili się asemblerem.

Offline ruter

  • Level 3
  • ***
  • Wiadomości: 228
Pytanie, basic
« Odpowiedź #23 dnia: 30 Grudnia 2011, 12:45 »
A jak wytworzyć sprite? Korzystałem z książki, ale coś mi nie wychodzi, pojawia się tylko jakaś kwadratowa chmura.
Poza tym mam jeszcze jeden problem z Burmistrzem-W intrze jest napisane Press space to continue... naciskam owe space \"\", i nic się nie dzieje, jednak normalnie spacja działa.

Offline Mef

  • Level 3
  • ***
  • Wiadomości: 221
  • ~ Racing the Beam! ~
Pytanie, basic
« Odpowiedź #24 dnia: 30 Grudnia 2011, 23:53 »
Pojawia się kwadratowa chmura bo poprawnie włączyłeś sprite'a i ma jakieś sensowne współrzędne ale błędnie zaadresowałeś skąd pobrać dane o jego "wyglądzie" i pobiera "kształt" z innego obszaru pamięci gdzie są "śmieci".

Najlepiej jakbyś wrzucił listing.
"Stand rigid for the next battle
Peace means reloading your guns
The love for life is all hatred in disguise
A carnival creation with masks undone"

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Pytanie, basic
« Odpowiedź #25 dnia: 31 Grudnia 2011, 13:38 »
kwadratowa chmura \"\" dobre, ale to właśnie sprite

Offline ruter

  • Level 3
  • ***
  • Wiadomości: 228
Pytanie, basic
« Odpowiedź #26 dnia: 31 Grudnia 2011, 17:26 »
Niestety listingu mojego nie wrzucę, bo nie zapisałem go, za to wrzucę listing programu, z którego korzystałem przy opracowywaniu własnego sprita.
Listing pochodzi z Instrukcji C64, spritem ma być balon z C=

5 PRINT CHR$(147)
10 V=53248 : REM ADRES BAZOWY UKLADU VIC II
11 POKE V+21,4 : REM WLACZENIE SPRITE 2
12 POKE 2042,13 : REM DANE SPRITE 2 W BLOKU 13
20 FOR N=0 TO 62 : READ Q : POKE 832+N,Q : NEXT N
30 FOR X=0 TO 200
40 POKE V+4,X : REM WPISANIE POZYCJI X
50 POKE V+5,X : REM WPISANIE POZYCJI Y
60 NEXT X
70 GOTO 30
200 DATA 0,127,0,1,255,192,3,255,224,3,231,224
210 DATA 7,217,240,7,223,240,7,217,240,3,231,224
220 DATA 3,255,224,3,255,224,2,255,160,1,127,64
230 DATA 1,62,64,0,156,128,0,156,128,0,73,0,0,73,0
240 DATA 0,62,0,0,62,0,0,62,0,0,28,0

Kiedy pierwszy raz skopiowałem listing do VICE, to balon był prawidłowy, za to ostatnio pokazała się chmura.

Offline Mef

  • Level 3
  • ***
  • Wiadomości: 221
  • ~ Racing the Beam! ~
Pytanie, basic
« Odpowiedź #27 dnia: 31 Grudnia 2011, 17:52 »
ruter

Wszystko perfect działa.
Spróbuj wkleić w Vice, to tan sam listing tylko ze znakami zmienionymi na małe (w przeciwnym przypadku Vice czytał mi wszystko jako szlaczki "shift+znak") - chodzi jak złoto, więc pewnie się poprzednio rąbnąłeś w przepisywaniu.

5 print chr$(147)
10 v=53248 : rem adres bazowy ukladu vic ii
11 poke v+21,4 : rem wlaczenie sprite 2
12 poke 2042,13 : rem dane sprite 2 w bloku 13
20 for n=0 to 62 : read q : poke 832+n,q : next n
30 for x=0 to 200
40 poke v+4,x : rem wpisanie pozycji x
50 poke v+5,x : rem wpisanie pozycji y
60 next x
70 goto 30
200 data 0,127,0,1,255,192,3,255,224,3,231,224
210 data 7,217,240,7,223,240,7,217,240,3,231,224
220 data 3,255,224,3,255,224,2,255,160,1,127,64
230 data 1,62,64,0,156,128,0,156,128,0,73,0,0,73,0
240 data 0,62,0,0,62,0,0,62,0,0,28,0
"Stand rigid for the next battle
Peace means reloading your guns
The love for life is all hatred in disguise
A carnival creation with masks undone"

Offline ruter

  • Level 3
  • ***
  • Wiadomości: 228
Pytanie, basic
« Odpowiedź #28 dnia: 18 Stycznia 2012, 16:05 »
Wrócę jeszcze do sprawy z Burmistrzem 3
Udało mi się ujrzeć listing Burmistrza 3 i rozwiązać problem z niedziałającą spacją. Dokonałem tego ładując i uruchamiając grę, a następnie naciskając w black boxie 8 reset i C= i wpisując <-U, czyli przywracanie programu napisanego w basicu. Pierwszy rezultat był niezbyt interesujący, po wpisaniu LIST ukazało się:

0 REM BY MACIEK KOZICKI
?SYNTAX ERROR
READY.

Ale po usunięciu linii 0 i wpisaniu LIST moim oczom ukazał się listing programu od początku do końca. Uruchomiłem grę. Nie pokazało się 'MUZYKA Z RED MOON', i nie usłyszałem muzyki, ale po chwili zobaczyłem intro. Wciskam spację, jak przykazuje tekst pod poruszającymi się gwiazdkami, i zobaczyłem instrukcję, dalej wszystko już jak w wersji z muzyczką i bez listingu.
Dwie rzeczy w jednym, widocznie przyczyną niedziałającej spacji była muzyczka.
Teraz pytanie, co zrobić, by znów usłyszeć 'Red Moon'?

zyga

  • Gość
Pytanie, basic
« Odpowiedź #29 dnia: 18 Stycznia 2012, 17:35 »
Muzyczka pewnie jest powyżej Basica. Prawdopodobnie pod $c000. Zresztą sam poszukaj.
Ściągnij to: http://noname.c64.org/csdb/release/?id=4382 i odpal. Poszuka on muzyczki w całych 64kB, o ile oczywiście nie okaże się że searcher też leży pod $c000, nie chce mi się teraz sprawdzać.

A jeśli chodzi o playera muzyczki. Poszukaj w archiwum C&A - był taki cykl "Jak napisać własne demo". Chyba w trzecim odcinku było o muzyczkach i jak ich samodzielnie poszukać za pomocą monitora pamięci.

Acha. W BlackBoxie8 pod $c000 jest umieszczony scroll. Po resecie uruchomisz go SYS49152, więc pewnie on nadpisuje muzyczkę. Spróbuj z innym kartdridżem. Np. Final3, Action Replay i po resecie polecenie OLD.