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

Autor Wątek: Meonlawel  (Przeczytany 17214 razy)

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

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #15 dnia: 27 Czerwca 2007, 20:58 »
 Niestety  nie  znam  się  na  tym  więc  nie  wiem  co  do  mnie  mówicie  :D  nigdy  nie  zgłębiałem  tajników  ASM.  Znalazłem  na  codebase64  listing:  
   
  http://www.codebase64.org/doku.php?id=base:simple_irq_music_player\' target=_blank>http://www.codebase64.org/doku.php?id=base:simple_irq_music_player
   
  ale  oczywiście  nadal  nic  nie  widzę  :D.  
  Myślałem  sobie  nawet,  że  fajnie  by  było  robić  muzykę  np:  pod  Future  Composer  II,  z  którym  miałem  styczność  dłuższą  a  potem  datę  wrzucać  właśnie  z  dyskietki  do  pamięci  i  odgrywać  przez  player  w  tle.  Czuję,  że  to  się  może  udać  i  postaram  się  zrobić  z  tego  dobrą  grę.  
   

Ramos

  • Gość
Meonlawel
« Odpowiedź #16 dnia: 27 Czerwca 2007, 22:57 »
 Jeśli  gra  ma  być  dobra  to  przydałaby  się  do  niej  skomponować  dobrą  muzykę.  Jak  zabardzo  ci  nie  wyjdzie  pisanie  muzyki  na  c64  to  mogę  pomóc,  załatiwć  muzykę  lub  pomóc  w  jej  skomponowaniu.  Kiedy  pisałem  muzykę  na  c64  i  obecnie  też  zabieram  się  za  komponowanie  muzy  na  c64.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #17 dnia: 27 Czerwca 2007, 23:12 »
 @Ramos  
  Sprawa  jest  tego  typu,  że  nie  ma  przeszkód,  żeby  zinkludować  kilka  swoich  i  nie  tylko  kawałków.  To  akurat  nie  problem,  fanx  za  odzew.  Kwestia  tylko  tego  typu  jak  dopisać  kawałek  kodu  odpowiedzialny  za  muzykę?  
   

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #18 dnia: 27 Czerwca 2007, 23:17 »
 @Ramos  
  Jeszcze  raz  bo  edycji  tu  nie  ma..  Chętnie  nawiązałbym  współpracę,  Ramos.  Zależy  mi  na  wypuszczeniu  dobrego  produktu  czyli  rozbudowanej  akcji  +  potężny  świat  gry.  To  się  da  zrobić.  Sama  gra  może  nie  jest  zbyt  dynamiczna  na  razie,  etc.  ale  chcę  to  nadrobić  grywalnością,  kilkoma  pomysłami,  które  wdrażam,  etc.  
  Jeżeli  jesteś  na  tak  to  daj  mi  znać,  jak  napisać  ten  listing.  
   

Gringo_w

  • Gość
Meonlawel
« Odpowiedź #19 dnia: 27 Czerwca 2007, 23:48 »
 Listing  który  podałeś  odtwarza  muzykę  za  pomocą  przerwań.Inczej  nie  jesteś  w  stanie  obsłużyć  muzyki.Odgrywanie  muzyki  przez  player  to  mniej  więcej  tak  jakbyś  w  ciągłej  pętli  wywoływał  ciągle  sys  $1003  (adres  w  hex)  co  kreśloną  ilość  czasu  (zdaje  się  że  chyba  co  tzw  ramkę  czyli  1/50  sekundy)  dlatego  basic  się  do  tego  nie  nadaje  za  to  przerwania  ,które  wywoływane  są  właśnie  co  ramkę  -  jak  najbardziej.Pozostaje  Ci  poznać  kilka  podstaw  asemblera  i  niezgłębiając  się  zbytnio  w  programowanie  wklepać  ten  kod  i  kod  wynikowy  wrzucić  poprzez  basicowe  \'DATA\'  do  odpowieniego  miejsca  w  pamieci.Potem  po  jednym  SYS  muza  będzie  grać,a  Ty  w  Basicu  już  możesz  się  martwić  tylko  o  całą  resztą.Bardzo  prawdopodobne  jednak  że  odtwarzanie  muzyki  spowoduje  zauważalne  wolniejsze  działanie  samej  gry.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #20 dnia: 28 Czerwca 2007, 00:07 »
 No  właśnie  o  to  chodzi,  żeby  muzyka  sobie  a  gra  sobie  :).  Oczywiście  aby  dało  się  sterować  tą  muzyką.  A  dane  wrzucane  by  były  do  pamięci  ale  nie  przez  zapisywanie  ich  w  silniku  za  pomocą  DATA  tylko  tak  jak  rozwiązałem  to  w  przypadku  grafiki  czyli  wczytywane  prosto  z  dyskietki.  W  przypadku  grafiki  pokuję  odpowiednie  wartości  wczytywane  z  dyskietki.  Działa  to  cudownie  :).  Kwestia  tylko  tego  typu,  że  nawet  tego  kodu  ASM  nie  potrafię  wklepać.  Jakiś  monitor?  Jak  to  zapisać,  gdzie  zalokować  miejsce  na  muzykę?  Jeżeli  ma  to  spowolnić  działanie  gry  to  szkoda.  
   
  Co  do  samej  gry  fantastycznie  mi  się  ją  pisze,  olśnienie  jakieś  czy  co?  
   
  Na  razie  serce  gry  czyli  silnik  zajmuje  25  bloków  a  potrafi  bardzo  wiele  już  :).  Co  najważniejsze  interpretuje  warunki  logiczne  w  przypadku  reakcji  na  przedmioty.  To  to  myśli  :D.  
   
  Pliki  z  lokacjami  zajmują  po  4  bloki,  zaś  sekwencje  historii  czyli  pojedyncze  obrazki  zajmują  około  16  bloków.  Z  tego  co  wiem  na  jednej  stronie  dyskietki  może  się  zmieścić  do  144  plików  więc  nie  grozi  mi  przejście  tego  limitu  :).  
   

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #21 dnia: 28 Czerwca 2007, 00:20 »
 tego  sie  w  ogole  nie  oplaca  pisac  w  basicu  ,  od  tego  wypadaloby  zaczac  ...  
   
  a  co  do  tej  routine...  po  prostu  musisz  wektor  przerwania  ustawic  na  routine  odgrywajaca  muzyke  ktora  skacze  potem  do  $ea31...  to  sa  proste  operacje  ,  sam  cos  takiego  robilem  jeszcze  w  ubieglym  wieku  :)
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Meonlawel
« Odpowiedź #22 dnia: 28 Czerwca 2007, 08:07 »
 rafał  przecież  kolega  napisał  ze  nie  kuma  co  mówisz  ;)
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Gringo_w

  • Gość
Meonlawel
« Odpowiedź #23 dnia: 28 Czerwca 2007, 10:37 »
 Nie  jestem  pewien  czy  Cię  dobrze  zrozumiałem  ale  wydaje  mi  się  że  to  co  chcesz  osiągnąć  w  ten  sposób  jest  raczej  nierealne.Musiałbyś  znać  dobrze  asma  żeby  tak  to  zrobić.Wg  mnie  w  silniku  gry  powineś  poświecić  kilkanaście  linijek  z  DATA  które  zawierałyby  kod  tego  playera  co  na  stronie.Program  główny  zacząłby  się  od  władowania  playera  w  jakiś  wolny  obszar  pamięci  (player  zajmnie  jej  malutko  więc  na  pewno  znajdziesz  jakąś  dziurę,  kiedyś  widziałem  wykorzystane  adresy  tuż  za  pamięcią  ekranu  a  przed  basiciem  czyli  $07xx  do  $0800  ale  lepiej  stosować  \'bezpieczniejsze\'  adresy)  a  potem  przeszedłby  do  daleszego  kodu  gry  w  basicu.Oczywiście  pod  warunkiem  że  oprócz  wgrywania  głównego  silnika  gry,  do  pamieci  ładowana  by  była  cała  muzyczka  do  dalekiego  adresu-  najlepiej  tuż  za  końcem  programu  w  basic.

Gringo_w

  • Gość
Meonlawel
« Odpowiedź #24 dnia: 28 Czerwca 2007, 10:43 »
 Możesz  zrobić  jeszcze  nawet  prościej  -  zamiast  przepisywać  DATAmi  możesz  po  prostu  umieśćić  player  bezpośrednio  w  pamięci  tuż  za  prg  w  basicu  i  tuż  przed  samą  muzyką.Potem  na  koniec  już  tylko  zegrać  cały  ten  obszar  pamięci  do  jednego  pliku  i  powinno  hulać  jak  trzeba  po  odpaleniu  gry.Przykład:  
  0800  7000    -  silnik  gry  itd.  
  7100  71xx    -  player  na  przerwaniach  
  7200  do  A000  -  muzyka.  
  Nie  jestem  pewien  tylko  gdzie  w  pamięci  umieszczane  są  zmienne  z  basica.Trzebaby  podrążyć  temat  żeby  sie  nie  okazało  że  zmienne  w  basic  zniszczyłyby  dane  z  muzyki.W  takim  układzie  muza  musiałaby  być  między  $c000  a  $d000.Albo  może  użycie  jakiegoś  kompilatora  Basic  rozwiązałoby  problem.

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #25 dnia: 29 Czerwca 2007, 00:38 »
 Hmm..  nikt  mnie  nie  czyta  co  piszę  :D.  Więc..  oczywiście  player  chcę  wczytywać  z  DATA,  ale  DATA  mogę  przecież  swobodnie  umieścić  w  pliku  i  wczytywać  stamtąd  dane.  Tak  zrobiłem  z  grafiką,  kody  ASCII  są  konwertowane  w  ten  sposób,  że  poszczególne  rekordy  DATA  są  zczytywane  z  pliku  i  pokowane.  No  i  $c000  jest  zajęte  bo  tam  jest  właśnie  ta  grafika.  No  i  w  ogóle  nawiązałem  współpracę  z  Ramosem  więc  cichosza,  zobaczycie  demówkę  to  ocenicie  czy  warto  czy  nie  pisać  takie  coś  i  czy  się  da  w  ogóle  :D.  
   

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #26 dnia: 29 Czerwca 2007, 08:04 »
 no  to  nie  zapomnij  wejsc  do  Samaru.  
   
  widze  tez  ze  lubisz  populizm  bo  nie  odezwales  sie  do  nikogo  kto  sugeorwal  jakies  konkretne  rozwiazania  a  jedynie  zaserwowal  jakies  ogolniki  ;-)  
   
  i  teraz  wiadomo  czemu  mamy  kaczym  haha  :P
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #27 dnia: 29 Czerwca 2007, 09:08 »
 Nie  bardzo  rozumiem  raf  o  co  Ci  chodzi  z  tym  populizmem?  
  Biorę  oczywiście  wszystkie  posty  pod  uwagę  i  szukam  najlepszego  rozwiązania,  zresztą  gra  chodzi  dobrze  pod  BASIC.  
   

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #28 dnia: 29 Czerwca 2007, 11:43 »
 popoulizm  to  byla  tylko  taka  lgupia  ironia  ,  nie  birze  tego  do  siebie.    
   
  niemniej  jednak:  nie  widzialem  kodu  gry  ale  na  mocno  prawdodpobne  jest  ze  za  jakis  okaze  sie  iz  albo  kod  je  za  duzo  ramu  albo  interpreter  jest  za  wolny  aby  Twoj  projekt  mogl  dzialac  akceptowalnie.  podejrzewam  tez  ze  czasy  ladownaia  danych  z  dysku  sa  dosc  dlugie  (no  chyba  ze  ktos  chce  tego  uzywac  pod  emulatorem  z  \'szybka  stacja\'  albo  ma  jiffydos  lub  cos  podobnego)  
   
  nie  chce  abys  to  odebral  jako  atak  na  wlasna  osobe  albo  wysmiewanie  sie.  
   
  mysle  ze  przydaloby  Ci  sie  tez  np  poczytac  bardziej  o  zaawansowanym  basicu  np  w  ksiazce  B.Frelka  (chociaz  pewnie  juz  czytales  skoro  potrafisz  przesunac  pamiec  ekranu  itd)  oraz  referencja  programisty  commodore  64  (pozycja  po  angielsku  ,  C64`s  programmer  reference  guide)  gdzie  jest  opisane  jak  wykorzystywac  systemowe  funkcje  zawarte  ROM  oraz  miedzy  innymi  jak  laczyc  programy  w  asemblerze  z  programami  w  basicu  (no  i  mnostwo  innych  pozytecznych  rzeczy).  
   
  nawet  jesli  praktycznie  cala  gra  ma  byc  w  basicu  to  i  tak  warto  sobie  kilka  prostych  pomocniczych  podprogramow  w  asemblerze  napisac  .  
   
  monitor  asemblera  masz  w  cartridge`ach  oraz  np  sam  emulatro  ma  sam  w  sobie  swbudowany  monitor  
  w  VICE  jest  on  bardzo  rozbudowany  ,  pozwala  miedzy  innymi  na  krokowe  wykonaywanie  programu  oraz  na  ustawianie  breakpoint`ow.  
   
  w  razie  czego  mozesz  tez  do  mnie  uderzyc  na  gg  czy  maila.  
   
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Meonlawel
« Odpowiedź #29 dnia: 01 Lipca 2007, 22:46 »
 Ten  listing  z  codebase64  nie  do  końca  Ci  się  jednak  przyda  jak  widzę.  Tak  Ci  będzie  działać  (jak  to  wpisać  mam  nadzieje  że  się  dowiesz):  
   
  start  sei  
              lda  #$7f  
              sta  $dc0d  
              lda  #$80  
              sta  $dc0e  
              lda  #$01  
              sta  $d01a  
              lda  #$ff  
              sta  $d012  
              lda  #<irq  
              ldx  #>irq  
              sta  $0314  
              sta  $0315  
              jsr  init_music  ;zazwyczaj  $1000  
              cli  
              rts  
   
  irq      jsr  play_music  ;zazwyczaj  $1003  
              inc  $d019  
              jmp  $ea31  
   
   
  ...i  to  ci  będzie  grało.  pzdr