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

Autor Wątek: Meonlawel  (Przeczytany 17215 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Meonlawel
« Odpowiedź #30 dnia: 01 Lipca 2007, 22:47 »
 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

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #31 dnia: 02 Lipca 2007, 13:25 »
 Dzięki  Skull.  A  muzykę  pisać  mogę  w  Goat  Trackerze?  Nie  zgłębiałem  jeszcze  tego,  bo  nie  miałem  czasu.  No  i  czy  to  będzie  spowalniało  grę?  Multitasking  czy  niebardzo  :DD??  
   

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Meonlawel
« Odpowiedź #32 dnia: 02 Lipca 2007, 13:30 »
 Tzn.  na  początku  sobie  wypróbuj  jakieś  gotowe  muzyczki  i  sprawdź  jak  Ci  chodzi  (z  csdb  sobie  coś  ściągnij).  Raczej  wiele  nie  spowolni,  ponieważ  playery  muzyczek  zajmują  od  kilku  do  kilkunastu  linijek  rastrowych  -  przy  interpreterze  Basic-a  to  \'kropla  w  morzu\'.    
  Komponować  na  C64  niestety  nie  umiem  (szkoda!),  a  więc  w  tym  Ci  nie  pomogę.  
  pzdr

Offline Skull

  • Level 6
  • ******
  • Wiadomości: 2034
Meonlawel
« Odpowiedź #33 dnia: 02 Lipca 2007, 13:39 »
 Co  do  Multitasking-u  to  ta  procedura  działa  w  tzw.  tle  (czyli  można  by  to  na  siłę  nazwać  jako  multitasking  :)    
   
  Ja  ją  uruchomisz  to  muzyczka  zacznie  grać  -  a  ty  robisz  \'swoje\'  wszystko  działa  po  staremu.

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #34 dnia: 02 Lipca 2007, 14:36 »
 wiecej  proca  w  jednej  ramce  zajmuje  sprawdzanie  stanu  klawiatury  via  kernal  niz  wywolywanie  przecietnej  muzyki  napisalnej  w  GT  ;-)  tyle  ze  klawisz  jest  sprawdzany  co  jakis  czas  a  muzyka  wywolywana  w  kazdej  klatce  (ramce)  :)  
   
  do  gt  jest  tez  dolacznych  troche  muzyk  przykladowych  ktore  mozna  sobie  wymeczyc  czy  to  jako  tutorial  tudziez  do  testowania  wydajnosci  :)  
   
  co  do  muzyki  i  tak  bedzie  ja  musial  umiescic  gdzies  indziej  niz  pod  $1000,  chyba  ze  zmienisz  konfiguracje  pamieci  i  program  w  basicu  zaczniesz  np  od  $3000  
  a  nizej  umiescisz  muzyke  i  ewentualnie  inne  programy  w  asemblerze  czy  cos  takiego  :)  
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #35 dnia: 02 Lipca 2007, 21:36 »
   
   
  Skull  ,  W  twoim  kodzie  byl  jeden  maly  burak  (ktorego  szukanie  zalelo  mi  (za)  duzo  czasu  ,  sam  go  teraz  znajdz  poprzez  porownianie  :P  )  no  i  bez  dopisania  wpisu  do  $d011  wysypywal  sie  komodorek  ,  wiec  ten  kod  ktory  widac  tutaj  jest  przetestowany  i  dziala  100%  m  jest  asemblowalny  pod  DASM  2.20  ale  w  sumie  takze  pod  kazdym  innym  -  dodalem  jedynie  dyrektywy  dolaczajace  pliki  do  projektu  ktore  sa  typowe  dla  DASMa  ,  dodalem  ze  strony  swojej  jesszcze  zerowanie  rejestrow  tak  aby  kazda  playroutine  inicjowala  sie  prawidlowo  
   
  .incprg  files\\demo.prg,$0801  
   
     *=  $7f00  
  start    
   
  sei    
  lda  #$7f    
  sta  $dc0d    
  lda  #$80    
  sta  $dc0e    
  lda  #$01    
  sta  $d01a    
  lda  #$ff    
  sta  $d012    
  lda  #<irq    
  ldx  #>irq    
  sta  $0314    
  stx  $0315    
  lda  #0  
  tay  
  tax  
  jsr  $8000  ;init_music  ;zazwyczaj  $1000    
  cli    
  rts    
   
  irq    
  inc  $d019    
  ;inc  $d020  
  jsr  $8003  ;play_music  ;zazwyczaj  $1003    
  ;dec  $d020  
   
  jmp  $ea31  
   
  .incprg  zrelokowany.prg,$8000  
   
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #36 dnia: 02 Lipca 2007, 22:10 »
 ups  zle  sie  przekopiowalo  :)  
  kod  ma  wygladac  tak:  
   
  start    
   
  sei    
  lda  #$7f    
  sta  $dc0d    
  lda  #$80    
  sta  $dc0e    
  lda  #$01    
  sta  $d01a    
   
  lda  #$1b  
  sta  $d011  
   
  lda  $d011  
  and  #127  
  sta  $d011  
   
   
   
  lda  #$ff    
  sta  $d012    
  lda  #<irq    
  ldx  #>irq    
  sta  $0314    
  stx  $0315    
  lda  #0  
  tay  
  tax  
  jsr  $8000  ;init_music  ;zazwyczaj  $1000    
  cli    
  rts    
   
  irq    
  inc  $d019    
  ;inc  $d020  
  jsr  $8003  ;play_music  ;zazwyczaj  $1003    
  dec  $d020  
  ;lda  #$ff    
  ;sta  $d012    
   
  jmp  $ea31  
   
"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ź #37 dnia: 03 Lipca 2007, 08:56 »
 Dzięki  Raf  za  testing  \'\'    
   
  Są  dwa  błędy  w  moim  listingu  -  pierwszy  to  zamiast:  sta  $0315  ->  powinno  być  stx  $0315.  Drugi  to  wywołanie  music_init,  powinno  być  poprzedzone  chociaż  lda  #$00  <-  to  zazwyczaj  numer  muzyczki  do  odtwarzania(no  ja  akurat  jak  testowałem,  miałem  takiego  playera  który  widocznie  nie  potrzebował  numeru  songa,  bo  działało  ),  co  do  $d011  to  nie  ma  znaczenia  (wysypywało  Ci  się  raczej  przez  te  lda#$00  przed  inicjacją),  ponieważ  warość  #$ff  przy  $d012  może  wystąpić  tylko  raz  na  \'ramkę\'  -  nie  ma  potrzeby  ustawiać  starszego  bitu  rastra.    
  Ok,  ale  idźmy  w  takim  razie  dalej    \'\'    :  
   
  Ponieważ  Basic  korzysta  z  pamięci  od  $0801  do  $a000  (potem  ma  już  swój  interpreter),  procedurkę  umieśćmy  tuź  przed  końcem  tego  obszarem  np.  $9fc0.  A  muzyczkę  przydałoby  się  przerelokować  pod  $A000  (Interpreter  Basic  jest  w  ROM-ie,  a  więc  go  i  tak  nie  skasujemy    \'\'  )  tyle  że  do  procedurek  trzeba  by  dodać  następujące  wpisy:  
  ...  
  lda  #$36  
  sta  $01  
  lda  #$00  
  txa  
  tay  
  jsr  music_init  
  lda  #$37  
  sta  $01  
  cli  
  rts  
   
  irq  lda  #$36  
  sta  $01  
  jsr  play_music  
  lda  #$37  
  sta  $01  
  inc  $d019  
  jmp  $ea31  
   
   
  aha,  trzeba  obgraniczyć  jeszcze  basic,  żeby  nie  \'wlazł\'  w  końcu  na  naszą  procedurkę  -  obeteniemy  te  $40  na  program  (myślę  że  to  nie  wpłynie  zbytnio  na  pamięć  gry    \'\'  )  czyli  
  w  komórkach  $0037-$0038  trzba  wstawić  wskaźnik  na  $9fc0  -  czyli  w  programie  dopisać    
  poke  55,192:  poke  56,159  
   
  Zostało  nam  teraz  przerelokować  muzyczkę  pod  $a000,  znacie  jakieć  dobre  (uniwersalne)  relokatory  ?  \'\'    
   
  pzdr

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #38 dnia: 03 Lipca 2007, 10:59 »
 irelokator  by  Nemezis
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7333
  • Wolność, własność, sprawiedliwość
Meonlawel
« Odpowiedź #39 dnia: 03 Lipca 2007, 11:07 »
 co  do  $d011  to  mi  sie  ta  routine  sypala  bez  tego:  
   
  lda  #$1b    
  sta  $d011  
   
   
  ogolnie  podmienilem  jeszcze  w  tym  kodzie  pare  rzeczy  ktore  znalazlem  w  swoich  playerach  itd  ;-)  ale  to  detale  ,  a  Twoj  pomysl  z  przesunieciem  muzyki  w  obszar  przeslaniany  ROMem  i  zmiana  konfiguracji  pamieci  w  IRQ  jest  calkiem  interesujacy  -  zostawia  wiecej  pamieci  dla  BASICa  :)
"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ź #40 dnia: 06 Lipca 2007, 21:10 »
 Dzięki  za  porady,  postaram  się  to  zaimplementować  w  odpowiednim  czasie.  Na  dzień  dzisiejszy  chciałem  się  jedynie  pochwalić  progresami  w  pracy.  Mianowicie  działa  już  system  walk  turowych  (jedynie  czysta  walka  bez  żadnego  używania  przedmiotów).  Screenshoty  znajdziecie  na  stronie.  Nie  są  może  zachwycające,  jednakże  zrekompensować  to  chciałem  grywalnością  oczywiście.  Na  razie  wszystkie  te  rzeczy  w  silniku  są  spójne,  ale  nie  do  końca,  więc  plik  do  pogrania  dla  chętnych  wystosuję  w  odpowiednim  czasie.  Myślałem  o  przykodowaniu  listingu,  tak,  by  bezpośrednio  po  wczytaniu  nie  był  dostępny.  Oczywiście  nie  jest  to  istotne  tak  naprawdę.  Kiedyś  bawiłem  się  w  różne  poke,  ale  działały  dopiero  po  uruchomieniu.  Nie  wiem  czy  z  poziomu  BASIC  jest  to  możliwe.  W  każdym  bądź  razie  silnik  na  dzień  dzisiejszy  zajmuje  40  bloków,  ta  liczba  zaczyna  mnie  nie  pokoić  :D.  
  Co  do  przeciwników  na  razie  dostępne  są  trzy  rodzaje  przeciwników  \'prostych\'  czyli  VAMPIRE,  VAMPIRE  CHILD  i  VAMPIRE  HOUND.  Oczywiście  w  grze  będą  występowały  także  niepowtarzający  się  przeciwnicy,  np:  potężny  szczur  :D.  
   
  Pozdrawiam!!

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #41 dnia: 08 Października 2010, 17:34 »
 Witam,  po  dłuższej  przerwie  powracam  do  projektu  gry  Meonlawel,  gdyż  co  tu  dużo  mówić  -  bardzo  mnie  nęci,  by  wydać  tę  grę  pod  c64.  
   
  Dziękuję  serdecznie  za  wszelkie  porady  odnośnie  rutynek  do  odtwarzania  muzyki!  Ostatnimi  czasy  łyknąłem  trochę  kodu  maszynowego  i  wiem  mniej  więcej  już  co  z  czym  się  je,  postaram  się  więc  w  najbliższym  czasie  zaimplementować  muzykę,  gdyż  jest  to  tak  naprawdę  ostatnie  duże  wyzwanie,  którego  brakuje  w  Meonlawel.  Część  kodu  postanowiłem  także  przepisać  pod  maszynowy  (relokacje  ekranów,  definiowanie  sprite)  by  usprawnić  wczytywanie/działanie.  O  przepisaniu  całości  pod  maszynowy  nie  ma  chyba  mowy,  gdyż  mój  poziom  znajomości  maszynówki  jest  podstawowy,  jednakże  pewne  \'snippety\'  planuję  wpisać.  Język  maszynowy  jest  dla  mnie  czymś  nowym,  jednak  już  w  początkowej  fazie  zaskoczył  mnie  pozytywnie  wieloma  aspektami.  
   
  Zapraszam  wszystkich  serdecznie  do  komentarzy!  Na  stronie  internetowej:  www.drakmo.ovh.org/meonlawel/  znajdziecie  postępy  odnośnie  tego  projektu  zaś  prawdopodobnie  w  kolejnym  C&A  Fan  zdradzę  kilka  tajemnic.  
   
  Pozdrawiam!  
   

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #42 dnia: 23 Października 2010, 19:25 »
 Witam,  chciałbym  podziękować  rafvte,  Skullowi,  zydze  (za  literaturę  online)  i  Ramosowi  za  garść  porad  odnośnie  dołączenia  muzyki.  
   
  Od  tygodnia  zgłębiam  ostro  tajniki  assemblera  i  co  się  okazuje:  sam  assembler  nie  jest  aż  taki  trudny  jak  mi  się  to  wydawało!  
   
  Nie  wiedziałem  tylko  jak  załączyć  linie  związane  z  #<irq  gdyż  korzystam  z  action  replaya,  lecz  pare  dni  wcześniej  obczaiłem  jak  przesunąć  SOV,  by  za  jednym  zamachem  zapisywać  program  basica  i  kodu  maszynowego,  który  np:  umieścić  sobie  mogę  zaraz  za  BASIC-iem,  i  analogicznie  tak  samo  zrobiłem  właśnie  z  tym  IRQ  czyli  po  prostu  wpisaniem  młodszego  i  starszego  bitu  do  rejestrów  przerwania  $0314  i  $0315.  
   
  Dzięki  za  wszystkie  sugestie,  projekt  gry  Meonlawel  może  więc  iść  dalej  do  przodu.  Część  rzeczy  zamierzam  także  przepisać  pod  ASM  na  zasadzie  wstawek  assemblerowych,  to  naprawdę  działa  szybciej  :).  
   
  THX!

Offline BagoZonde

  • Level 6
  • ******
  • Wiadomości: 1055
    • http://www.commocore.com
Meonlawel
« Odpowiedź #43 dnia: 07 Stycznia 2011, 10:08 »
 Witam  po  dłuższej  przerwie.  Jako,  że  przepisuję  pod  assembler  to  co  udało  mi  się  już  utworzyć  pod  bejzolem  odnośnie  tej  gry,  chciałem  Was  zapytać  jakie  rzeczy  chcielibyście  zobaczyć  w  tej  grze?  Jest  to  gra  typu  cRPG,  z  walkami  turowymi  i  nieliniową  fabułą  oraz  wątkami  przygodowymi,  w  których  zbieramy  jakieś  rzeczy,  które  mogą  nam  się  przydać  później.

O  tym  co  jest  w  grze  nie  będę  się  rozpisywał,  ciekawy  jestem  jakie  są  Wasze  sugestie.  Z  góry  dzięki  za  zainteresowanie  projektem.  Za  niedługo  ruszę  ze  stroną,  gdyż  w  starej  formie  nie  wygląda  już  atrakcyjnie,  nie  podaję  więc  na  razie  linku,  który  zresztą  jest  w  tym  temacie  nieraz  pewnie  przytoczony.
 

chateau

  • Gość
Meonlawel
« Odpowiedź #44 dnia: 07 Stycznia 2011, 12:16 »
 ciezko  stwierdzic  czego  oczekuje  sie  od  gry  ktorej  sie  nie  zna.  od  rpga  generalnie  oczekiwalbym  dobrych  dialogow,ciekawszych  i  mniej  standardowych  niz  \'zanies,przynies,pojdz  i  zabij\'  zadan,dobrej  interakcji  z  otoczeniem,ciekawych  i  *zroznicowanych*  lokacji,a  takze  smaczkow  typu  opcjonalne  zadania,ukryte  albo  ciezko  dostepne  lokacje.