atarionline.pl ast multi cardridge - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthoratariki50
      • CommentTime15 Mar 2017 20:03
       
      xtrem007

      Korzystaj, pytaj. Bo to fachowiec jest :).
      • 2: CommentAuthorxtrem007
      • CommentTime15 Mar 2017 20:03 zmieniony
       
      Kompiluję bezpośrednio na rpi.

      cd atari800-a8cas-writeturbowav
      cd src
      sudo autoreconf -i
      sudo ./configure
      sudo make

      W załączniku pliki config.log dla kompilacji z parametrem --target=rpi oraz bez.

      /usr/local/lib:
      liba8cas.so.0 -> liba8cas.so.0.2.1
      • 3: CommentAuthorFUJI
      • CommentTime16 Mar 2017 00:03
       
      Czegoś brakuje w szablonach autotools. Ja się w tym zupełnie gubię, na szybko potrafię tylko zrobić obejście. Niestety nie mam jak sprawdzić, czy obejście zadziała.
      Załączony plik podmień w katalogu atari800-a8cas, uruchom autogen.sh i sprawdź czy configure pójdzie dalej. Wyłączyłem sprawdzanie obecności biblioteki liba8cas, jest zrobione założenie że jest OK. A nie znajduje liba8cas, bo przy teście kompilacji nie może znaleźć bibliotek egl, glesv2 i bcm_host, brakuje w wywołaniu gcc ścieżki do tych bibliotek. Nie wiem na razie, gdzie i jak to trzeba dopisać.
      • 4: CommentAuthorxtrem007
      • CommentTime16 Mar 2017 16:03
       
      Przetestowałem i efekt:
      pi@raspberrypi3:~/atari800-a8cas-writeturbowav/src $ sudo ./configure --target=rpi

      checking build system type... armv7l-unknown-linux-gnu
      checking host system type... armv7l-unknown-linux-gnu
      checking for gcc... arm-linux-gnueabihf-gcc
      checking whether the C compiler works... yes
      checking for C compiler default output file name... a.out
      checking for suffix of executables...
      checking whether we are cross compiling... no
      checking for suffix of object files... o
      checking whether we are using the GNU C compiler... yes
      checking whether arm-linux-gnueabihf-gcc accepts -g... yes
      checking for arm-linux-gnueabihf-gcc option to accept ISO C89... none needed
      checking for a BSD-compatible install... /usr/bin/install -c
      checking whether host is Java NestedVM... no
      checking how to run the C preprocessor... arm-linux-gnueabihf-gcc -E
      checking for X... libraries , headers
      checking for dirent.h that defines DIR... yes
      checking for library containing opendir... none required
      checking for grep that handles long lines and -e... /bin/grep
      checking for egrep... /bin/grep -E
      checking for ANSI C header files... yes
      checking whether time.h and sys/time.h may both be included... yes
      checking for sys/types.h... yes
      checking for sys/stat.h... yes
      checking for stdlib.h... yes
      checking for string.h... yes
      checking for memory.h... yes
      checking for strings.h... yes
      checking for inttypes.h... yes
      checking for stdint.h... yes
      checking for unistd.h... yes
      checking direct.h usability... no
      checking direct.h presence... no
      checking for direct.h... no
      checking errno.h usability... yes
      checking errno.h presence... yes
      checking for errno.h... yes
      checking file.h usability... no
      checking file.h presence... no
      checking for file.h... no
      checking signal.h usability... yes
      checking signal.h presence... yes
      checking for signal.h... yes
      checking sys/time.h usability... yes
      checking sys/time.h presence... yes
      checking for sys/time.h... yes
      checking time.h usability... yes
      checking time.h presence... yes
      checking for time.h... yes
      checking for unistd.h... (cached) yes
      checking unixio.h usability... no
      checking unixio.h presence... no
      checking for unixio.h... no
      checking fcntl.h usability... yes
      checking fcntl.h presence... yes
      checking for fcntl.h... yes
      checking sys/ioctl.h usability... yes
      checking sys/ioctl.h presence... yes
      checking for sys/ioctl.h... yes
      checking sys/soundcard.h usability... yes
      checking sys/soundcard.h presence... yes
      checking for sys/soundcard.h... yes
      checking arpa/inet.h usability... yes
      checking arpa/inet.h presence... yes
      checking for arpa/inet.h... yes
      checking netdb.h usability... yes
      checking netdb.h presence... yes
      checking for netdb.h... yes
      checking netinet/in.h usability... yes
      checking netinet/in.h presence... yes
      checking for netinet/in.h... yes
      checking sys/socket.h usability... yes
      checking sys/socket.h presence... yes
      checking for sys/socket.h... yes
      checking termios.h usability... yes
      checking termios.h presence... yes
      checking for termios.h... yes
      checking for gzopen in -lz... yes
      checking for png_get_libpng_ver in -lpng... yes
      checking for cos in -lm... yes
      checking for _oss_ioctl in -lossaudio... no
      checking for main in -lGLESv2... yes
      checking for main in -lEGL... yes
      checking for main in -lSDL... yes
      checking for main in -lbcm_host... yes
      checking whether byte ordering is bigendian... no
      checking for an ANSI C-conforming const... yes
      checking for inline... inline
      checking for working volatile... yes
      checking whether arm-linux-gnueabihf-gcc needs -traditional... no
      checking whether struct tm is in sys/time.h or time.h... time.h
      checking return type of signal handlers... void
      checking for size_t... yes
      checking whether closedir returns void... no
      checking for working memcmp... yes
      checking sys/select.h usability... yes
      checking sys/select.h presence... yes
      checking for sys/select.h... yes
      checking for sys/socket.h... (cached) yes
      checking types of arguments for select... int,fd_set *,struct timeval *
      checking whether lstat correctly handles trailing slash... yes
      checking whether stat accepts an empty string... no
      checking for vprintf... yes
      checking for _doprnt... no
      checking for atexit... yes
      checking for chmod... yes
      checking for clock... yes
      checking for fdopen... yes
      checking for fflush... yes
      checking for floor... yes
      checking for fstat... yes
      checking for getcwd... yes
      checking for gettimeofday... yes
      checking for localtime... yes
      checking for memmove... yes
      checking for memset... yes
      checking for mkstemp... yes
      checking for mktemp... yes
      checking for modf... yes
      checking for nanosleep... yes
      checking for opendir... yes
      checking for rename... yes
      checking for rewind... yes
      checking for rmdir... yes
      checking for signal... yes
      checking for snprintf... yes
      checking for stat... yes
      checking for strcasecmp... yes
      checking for strchr... yes
      checking for strdup... yes
      checking for strerror... yes
      checking for strrchr... yes
      checking for strstr... yes
      checking for strtol... yes
      checking for system... yes
      checking for time... yes
      checking for tmpfile... yes
      checking for tmpnam... yes
      checking for uclock... no
      checking for unlink... yes
      checking for vsnprintf... yes
      checking for mkdir... yes
      checking for _mkdir... no
      checking whether mkdir takes one argument... no
      checking for select... yes
      checking for usleep... yes
      checking for strncpy... yes
      checking for gethostbyaddr... yes
      checking for gethostbyname... yes
      checking for inet_ntoa... yes
      checking for socket... yes
      checking for adler32 in -lz... yes
      checking for main in -lwinmm... no
      checking for sdl-config... /usr/bin/sdl-config
      checking for SDL - version >= 1.2.0... yes
      checking for special C compiler options needed for large files... no
      checking for _FILE_OFFSET_BITS value needed for large files... 64
      checking for _LARGEFILE_SOURCE value needed for large files... no
      checking for library containing tgetent... -ltermcap
      checking for library containing readline... -lreadline
      checking readline/readline.h usability... yes
      checking readline/readline.h presence... yes
      checking for readline/readline.h... yes
      checking for A8CAS_LDFLAGS...
      checking for A8CAS_LIBS... -la8cas
      checking for A8CAS_CPPFLAGS...
      checking for liba8cas headers version >= 1.5.1... skipping because we are compiling for rpi, assuming OK.
      skipping lib test because we are compiling for rpi, assuming OK.
      configure: creating ./config.status
      config.status: creating Makefile
      config.status: creating config.h
      -------------------------------------------------------
      CONFIGURATION RESULTS:
      -------------------------------------------------------
      Host OS...............................: linux
      Target ...............................: rpi

      Using cycle exact?....................: yes
      Using the very slow computer support?.: no
      Using the crash menu?.................: yes
      Using the paged attribute array?......: no
      Using the buffered log?...............: no
      Using the monitor assembler?..........: yes
      Using code breakpoints and history?...: yes
      Using user-defined breakpoints?.......: no
      Using monitor hints?..................: yes
      Using 6502 opcode profiling?..........: no
      Using TRACE monitor command?..........: no
      Using readline support in monitor?....: yes
      Using event recording?................: yes
      Using MIO emulation?..................: yes
      Using Black Box emulation?............: yes
      Using IDE emulation?..................: yes
      Interface for sound...................: sdl
      Using nonlinear mixing?...........: yes
      Using synchronized sound?.........: yes
      Using sound interpolation?........: yes
      Using stereo sound?...............: yes
      Using volume only sound?..........:
      (Volume only sound sub-options disabled)
      Using 1400XL/1450XLD emulation?...: yes
      Using sound clipping?.............: no
      Using R: device?......................: no
      Using A8CAS?..........................: yes

      Main build variables:
      CC......: "arm-linux-gnueabihf-gcc"
      CFLAGS..: "-O2 -Wall -I/opt/vc/include -I/opt/vc/include/SDL -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads"
      CPPFLAGS: " -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT"
      LDFLAGS.: " -Wl,--unresolved-symbols=ignore-in-shared-libs -L/opt/vc/lib "
      OBJS....: "atari_rpi.o gles2/video.o sdl/main.o sdl/input.o input.o statesav.o ui_basic.o ui.o artifact.o colours.o colours_ntsc.o colours_pal.o colours_external.o screen.o cycle_map.o pbi_mio.o pbi_bb.o pbi_scsi.o sdl/init.o sdl/sound.o pokeysnd.o mzpokeysnd.o remez.o sndsave.o sound.o pbi_xld.o voicebox.o votrax.o votraxsnd.o syncsound.o ide.o img_tape_a8cas.o"
      LIBS....: "-lreadline -ltermcap -lbcm_host -lSDL -lEGL -lGLESv2 -lm -lpng -lz -la8cas -L/usr/lib/arm-linux-gnueabihf -lSDL"
      -------------------------------------------------------


      Niestety make się wysypało z błędami:

      -D_REENTRANT img_tape_a8cas.c
      img_tape_a8cas.c:117:13: error: conflicting types for ‘IMG_TAPE_Create’
      IMG_TAPE_t *IMG_TAPE_Create(char const *filename, IMG_TAPE_format_t format, char const *description, unsigned int samplerate)
      ^
      In file included from img_tape_a8cas.c:30:0:
      img_tape.h:68:14: note: previous declaration of ‘IMG_TAPE_Create’ was here
      IMG_TAPE_t *IMG_TAPE_Create(char const *filename, IMG_TAPE_format_t format, char const *description);
      ^
      img_tape_a8cas.c:152:5: error: conflicting types for ‘IMG_TAPE_Read’
      int IMG_TAPE_Read(IMG_TAPE_t *file, unsigned int *length, int *signal)
      ^
      In file included from img_tape_a8cas.c:30:0:
      img_tape.h:81:5: note: previous declaration of ‘IMG_TAPE_Read’ was here
      int IMG_TAPE_Read(IMG_TAPE_t *file, unsigned int *duration);
      ^
      Makefile:81: recipe for target 'img_tape_a8cas.o' failed
      make: *** [img_tape_a8cas.o] Error 1

      Ciekawe dlaczego przy ./configure bez parametru --target=rpi biblioteka liba8cas jest poprawnie odnajdywana? Dla mnie to niestety wyższa szkoła jazdy.
      • 5: CommentAuthorFUJI
      • CommentTime16 Mar 2017 18:03
       
      Mmmm...
      Zobacz czy w config.h są linijki (nie obok siebie):

      #define HAVE_LIBA8CAS 1
      #define SYNCHRONIZED_SOUND 1

      Jak którejś z nich nie ma, to dopisz i zrób make. Prawdopodobnie nie ma tej pierwszej.
      • 6: CommentAuthorxtrem007
      • CommentTime16 Mar 2017 21:03
       
      Bingo - emulator z obsługą A8CAS i GLES dla RaspberryPi działa.
      Faktycznie brakowało #define HAVE_LIBA8CAS 1
      @FUJI: bardzo dziękuję za poświęcony czas :)

      • 7: CommentAuthoratariki50
      • CommentTime17 Mar 2017 15:03
       
      Brawo panowie!:)
      • 8: CommentAuthoratariki50
      • CommentTime17 Mar 2017 21:03
       
      xtrem007

      Jestem pod wrażeniem że odpaliłeś to pod RaspberyPi.

      Oglądałem filmik.

      Dla mnie bajka :).

      Chwal się tym gdzie tylko morzesz, bo warto to rozpowszechnić!!!
      • 9: CommentAuthorFUJI
      • CommentTime6 Aug 2017 13:08 zmieniony
       
      Ponad 2 miesiące temu uaktualniłem pliki emulatora zlinkowane w tym wątku, ale jakoś tak zeszło i nie napisałem o tym fakcie, a prawdopodobnie nikt nie zauważył zmiany. Teraz jeszcze zrobiłem drobne poprawki i w obecnej wersji mamy:

      - poprawioną precyzję emulacji pustych linii na początku i na końcu ekranu (tzn. tych nie wyświetlanych w czasie vsync). Dzięki temu AST w wersji 1010 działa dobrze przy częstotliwości 48kHz. W związku z tym w menu turbo jest teraz jedno "AST", działające zarówno dla wariantu xc12 jak i 1010.

      - zapis turbo do plików cas i hex, z tym że tylko do bloków "pwml", czyli do serii stanów 0 i 1, których czasy trwania wyrażone są w samplach

      - możliwość ustawienia częstotliwości zapisu na "CPU clock", czyli pomiędzy samplami wav-a mieści się pojedynczy cykl zegara procesora. Przy takim ustawieniu w plikach hex ładnie widać, jakie naprawdę są szerokości impulsów generowanych przy zapisie wyrażone w cyklach zegara

      - zmieniony sposób wczytywania plików wav, bazowany na tym co jest w a8cas-util. Działa czasem nawet lepiej, niż a8cas-util. Domyślnym ustawieniem dla "Turbo error tolerance" jest teraz "Auto" - emulator automatycznie i dynamicznie dostosowuje się do amplitudy sygnału w zakresie nawet połowy impulsu, a także (w prymitywny sposób) rozróżnia łagodne i strome zbocza impulsów.

      - filtry sygnału dla plików wav zgrywanych z taśmy - wzmacniacz i fitr górnoprzepustowy. Wzmacniacz służy nie tyle do wzmacniania jako takiego, bo jak pisałem w poprzednim punkcie dopasowanie do amplitudy jest automatyczne, ale przede wszystkim do zamiany kształtu fali na bardziej prostokątną. Filtr górnoprzepustowy jest do "centrowania" sygnału względem osi czasu i pozwala na duże wzmocnienia bez utraty informacji. Na poniższym obrazku widać efekt działania filtrów:



      Na obrazku jest końcówka sygnału pilotującego i początek danych. Akurat w tym przypadku filtry nie były potrzebne żeby plik się wczytał, ale dość dobrze tu widać jak działają.

      Dzięki powyższym dodatkom np. bez problemu udało się odczytać całe nagranie Turbo 6000 z wątku Turbo Star 6000
      Jedynie program "Monitor test" nie chciał się wczytać "z marszu", ale po włączeniu wzmocnienia 20x i filtra górnoprzepustowego 2kHz też się załadował.

      Linki do plików te co wcześniej:
      żródła liba8cas
      źródła atari800-a8cas
      binaria dla Windows
      • 10: CommentAuthorxtrem007
      • CommentTime7 Aug 2017 22:08
       
      Skompilowałem nową wersję pod RaspberryPi.
      Przy kompilacji bibliotek liba8cas mogą pojawiać się błędy:
      error: 'for' loop initial declarations are only allowed in C99...

      Należy wtedy w plikach src/format_sndfile.c oraz src/format_hex.c
      odszukać linijkę:
      for (int i=0; i < sig->length; i++) {

      i zamienić na dwie linie:
      int i;
      for (i=0; i < sig->length; i++) {

      Podobnie w przypadku pliku src/format_cas.c odszukać:
      for (int i=0; i < rate_length; i++) {

      i zamienić na dwie linie:
      int i;
      for (i=0; i < rate_length; i++) {

      Po tych zmianach 'make' powinno przejść bez błędów.
      Przy kompilacji atari800-a8cas trzeba dopisać brakującą linię:
      #define HAVE_LIBA8CAS 1 do pliku config.h

      Jak będę miał trochę czasu to przetestuję filtry sygnału przy wczytywaniu plików wav słabej jakości.
      • 11: CommentAuthorFUJI
      • CommentTime8 Aug 2017 20:08
       
      Dziękuję. Poprawiłem deklaracje zmniennych, a po dwóch godzinach studiowania tutoriala GNU autotools ;) dopisałem w odpowiednim miejscu jedną linijkę i HAVE_LIBA8CAS już się powinno samo dopisywać.
      • 12: CommentAuthorxtrem007
      • CommentTime8 Aug 2017 21:08
       
      Chwilę testowałem filtry sygnału i faktycznie kiepskiej jakości wav'y wczytują się lepiej. Zauważyłem jednak inny niepokojący objaw. Widać to na kolorowym pasku w grze Henry's House. Pojawiają się tam jakieś śmieci i czarny pasek nad SCORE 0000. Na niezmodyfikowanym emulatorze tego nie ma. Sprawdzałem na emulatorze pod RaspberryPi oraz pod Windowsem i wszędzie jest to samo.
      • 13: CommentAuthorFUJI
      • CommentTime9 Aug 2017 08:08
       
      Masz rację. To przez to że dopasowałem timingi Antica do dokumentacji Altirry. Widocznie coś przeoczyłem przy dociekaniu, dlaczego wartość była taka jak była, a nie taka jak "powinna być". Poprawka jest prosta. W pliku cycle_map.c trzeba zmienić
      #define CHAR_C 10
      na
      #define CHAR_C 13

      Dzięki za testy. Wieczorkiem podmienię pliki.
      • 14: CommentAuthorxtrem007
      • CommentTime9 Aug 2017 19:08 zmieniony
       
      Zmieniłem na CHAR_C 13, przekompilowałem i obraz już jest dobry. Jest jeszcze jeden dziwny efekt w sumie mało istotny i dotyczy tylko wersji dla RaspberryPi. Chodzi o dźwięk przy wczytywaniu standardowego zapisu FSK600 który przy poprawnym wczytywaniu brzmi jak zmodulowany ton. W zmodyfikowanej wersji emulatora na Raspberry dźwięk ten nie jest zmodulowany (przykład w załączniku).
      • 15: CommentAuthorFUJI
      • CommentTime9 Aug 2017 21:08
       
      Poprawione pliki są już wrzucone.

      Dźwięk wczytywania jest taki, gdy się uruchomi configure bez opcji --enable-seriosound. W sound settings brakuje też wtedy opcji "Serial IO Sound". seriosound jest domyślnie wyłączone, gdy włączony jest synchronized_sound, więc trzeba dodać tę opcję, żeby mieć bardziej wierną emulację dźwięku przy wczytywaniu z magnetofonu.
      • 16: CommentAuthordigisoft
      • CommentTime9 Aug 2017 21:08
       
      FUJI

      Plików z źródłami nie da się sciągnąć , brak praw.

      Trzymam kciuki za rozwijanie projektu i dziękuję za obecną pracę.
      • 17: CommentAuthorFUJI
      • CommentTime9 Aug 2017 23:08
       
      Oops. Prawa poprawione.
      • 18: CommentAuthoratariki50
      • CommentTime11 Aug 2017 17:08
       
      Dzięki FUJI
      Kawał dobrej roboty.
      Opłacało się zacząć temat AST
      • 19: CommentAuthorQTZ
      • CommentTime12 Aug 2017 20:08 zmieniony
       
      Odkopałem moje kasety w Turbo K.S.O., zgrałem kawałek z Goonies-ami do wav-a i spróbowałem wczytać to w tej wersji emulatora. Niestety nic się nie dzieje... Z dyskietki próba uruchomienia Turbo kończy się crashem, a z plików cas (nie wiadomo czemu trzeba uruchamiać przy wyłączonym turbo) uruchamia się, ale mimo wybrania Turbo 2000 (joy) jest czarny ekran z ikonką [C]?

      W tym wątku moje pliki (niektóre domowym sposobem przerobione): ->link<-

      A co do AST to gdzie znajdę ROM, instrukcję, czy inny sposób na uruchomienie tego turbo? (nie szukałem) A mam kasetę z loaderem chyba AST dla turbo KSO - o czym kiedyś na tym forum rozmawiałem z Krótkim ->link<- . Jeszcze wiszą przykładowe pliki: ->link<- (jeden jest dobry).

      Edit: znalazłem jakiś AST ROM...
      • 20: CommentAuthorxtrem007
      • CommentTime12 Aug 2017 20:08
       
      Daj linka do pliku wav z tymi Gooniesami to przetestuję. Czy wyłączyłeś w menu "Emulator Configuration > SIO patch" ?
      • 21: CommentAuthorQTZ
      • CommentTime12 Aug 2017 20:08 zmieniony
       
      Z wyłączonym SIO patchem Turbo działa :). Ale po sprawdzeniu okazuje się, że mój plik ma błąd - w tym miejscu na taśmie jest wgniecenie i nie udaje mi się tego zgrać poprawnie.

      W powyższym pliku są:

      00:04 GOONIES.0 (LOADER 1 KSO)
      00:20 GOONIES.1
      00:34 GOONIES.2 (1:27 BŁĄD - wgniecenie)
      01:56 GOONIES.3 (BŁĄD NA POCZĄTKU, z kasety wchodzi)
      02:24 SCENA.1
      02:50 SCENA.2
      03:26 SCENA.3
      03:53 SCENA.4
      04:20 SCENA.5
      04:56 SCENA.6
      05:22 SCENA.7
      05:49 SCENA.8
      06:16 SCENA.9
      06:44 DRACONUS (LOADER 2 KSO - dalej dane bez nagłówka)
      09:46 ZYBEX2 (tu z kolei z kasety się nie wczytuje, a z kopii przez adapter kasetowy na Atari owszem)
      12:46 ARCHON2 (14:06 BŁĄD, z kasety OK)

      Jeżeli chodzi o Goonies to porównałem odczytane fragmenty i wygląda na to, że można te uszkodzone zastąpić z wersji cas z archiwum AOL (drugi mogę odczytać z taśmy, ale w tej chwili nie miałem go jak przenieść do sprawdzenia).

      Więcej w sąsiednim wątku: ->link<-
      • 22: CommentAuthorQTZ
      • CommentTime13 Aug 2017 13:08 zmieniony
       
      Teraz próbuję Blizzarda, niestety znalazłem tylko jeden ROM (reszta plików jest już niedostępna on-line) i niestety nie działa, nie jestem pewien czy dobrze wpisuję np. (R>T:NAZWA), ale również microloader, gdzie nic nie można wpisać nic nie wczytuje, pliki skonwertowałem TURGEN-em, obraz robi się brązowy, są pasy, ale nazwy nie znajduje...

      A są jeszcze jakieś pliki na AOL :) może z tych coś zadziała... No niestety podobnie, w ogóle paski są brązowe niezależnie czy wybiorę turbo, czy jego brak.
      • 23: CommentAuthorxtrem007
      • CommentTime13 Aug 2017 14:08
       
      Zamiast T:NAZWA wpisuj T:*
      Poza tym spróbuj zmienić w menu "Tape Management > Invert polarity during read" na YES.
      Obraz carta do Blizzarda dałem w załączniku. Zamontuj w emulatorze jako Phoenix 8kB. Pliki Blizzarda ładuj przez OPTION a potem R>T:*
      • 24: CommentAuthorQTZ
      • CommentTime13 Aug 2017 18:08 zmieniony
       
      Dzięki, jednak nadal to samo (sygnał wygenerowany Turgen-em w pliku cas). Spróbuję coś zapisać spod emulatora i zobaczę czy to się wczyta.

      Czy ten emulator ma zamienioną kolejność klawiszy konsoli, bo w Blizzardach zawsze F2 działa jak Option, a F4 jak start?

      Znalazłem info w pliku USAGE (Keyboard, joystick and other controllers), że tak, dziwne, zawsze mi się wydawało, że wszędzie jest tak samo...
      • 25: CommentAuthorxtrem007
      • CommentTime13 Aug 2017 19:08
       
      Trochę się już pogubiłem. W Turgenie wygenerowałeś blizardowy plik cas? Ja zawsze konwertuję pliki xex na wav. Później tego wav'a podpinam jako obraz kasety w emulatorze i wszytko działa. Dziesiątki gier tak uruchamiałem i nigdy nie było z blizzardem problemu. Przykład masz na filmie z mojego 6 postu w tym temacie.
      • 26: CommentAuthorQTZ
      • CommentTime14 Aug 2017 07:08
       
      Zgadza się. Dla KSO wygeneroeałem wav-y i casy działały obydwa rodzaje (plik, który zamieściłem jest zgrany z kasety). Więc dla Blizzarda, którego fizycznie nie mam i nie mam jak przetestować z Atari wygenerowałem tylko casy. Sprawdzę z wavami, jeżeli będzie działać to znaczy że gdzieś powstaje / jest problem z cas-ami. Sprawdzę też zapis ale myślę, że emulator zapisuje do cas-a. A jak będzie źle to robię coś nie tak..
      • 27: CommentAuthorbaktra
      • CommentTime14 Aug 2017 13:08 zmieniony
       
      I would have one remark to the .cas files with Turbo Blizzard.

      Turgen will generate .cas file with pwmX blocks for Turbo Blizzard. I know that there is at least one bug in the a8cas library that will prevent atari800-a8cas emulator from reading the .cas file correctly. Krotki is aware, but I believe the bug is still not fixed. The bug is related to processing of the pwml block (if I remember correctly)

      Therefore, I don't recommend using .cas files with pwmX blocks with atari800-a8cas emulator. Well, reading turbo from .CAS is not "officially" supported by a8cas anyway.

      There is also one cartridge image with Turbo Blizzard (4.0 I guess) that appears not to read any records).
      • 28: CommentAuthorxtrem007
      • CommentTime14 Aug 2017 16:08
       
      Pewnie chodzi o BLZ_40.rom pochodzący z cartridge-a "BIG 2.0 by KNS Corporation". Ten rom jest poprawny ale wymaga współpracy z elektronicznym układem na bramkach. Kiedyś go zrobiłem i działa. Była to chyba taka forma zabezpieczenia przed powielaniem carta o czym pisałem tutaj:
      ->link<-
      • 29: CommentAuthorQTZ
      • CommentTime14 Aug 2017 21:08 zmieniony
       
      Sprawdziłem, wav-y działają, Goonies skonwertowany (pomijamy Loader 1 KSO - plik GOONIES.0) z wersji KSO (loader gry - GOONIES.1 ma zmodyfikowane 2 Bajty) pod Blizzardem się wczytuje w Turbo (wersja bez modyfikacji i skonwertowane boot->exe czytają w normalu sceny lub całość), jednak z jednej wersji ROMu Blizzard-a wywala się na scenie 0 (intro), a w drugiej przy scenie.1. Wczytywać trzeba microloader-em. Czytałem, że istnieją wersje różniące się adresami, więc może z inną wersją by zadziałało?

      Zapisu spod emulatora jeszcze nie sprawdziłem.

      PS. Co do Turgen-a to zauważyłem, że przycisk automatycznego generowania nazwy Turbo KSO za bardzo ją skraca, gdyż nazwa w KSO może mieć 10 dowolnych znaków (bez rozróżnienia rozszerzenia) w tym w inverse np. D#:1234567890 (co w programie H.Cygerta powoduje, że takich plików na PC nie można zapisać; Chyba coś jeszcze związanego z turbo jest w tej paczce). Więcej szczegółów o sterowaniu KSO tu (patrz "Nazwy plików").

      Przy dekodowaniu KSO brakuje obsługi plików zapisanych z Loader-em 2 - czyli zapisanych za Loader-em 2 z pominięciem nagłówka (na Atari trzeba skorzystać z nagłówka z innej kasety). Nie ma też chyba możliwości dodania loader-ów przy generowaniu plików wave. Jak pisałem loader-y są dwa, ale jeden w dwu wersjach. Pierwszy wczytuje z nagłówkiem, drugi bez, może dałoby się automatycznie wykryć, czy i który loader należy użyć.
      • 30: CommentAuthorxtrem007
      • CommentTime14 Aug 2017 23:08
       
      Po konwersji Twoich plików Goonies do Blizzarda udało mi się je wczytać na sprzętowej atarynce przy użyciu "Microloadera 3.0 by KNS Corp." Każdy inny microloader powoduje zawieszenie się komputera przy wczytywaniu Sceny 1. Microloader 3.0 jest w BLZ_40.rom który działa tylko w sprzętowym cartridge. Może ktoś ma go w wersji plikowej?
      • 31: CommentAuthorQTZ
      • CommentTime15 Aug 2017 03:08 zmieniony
       
      Może Seban ma... znalazłem archiwum z kilkoma kasetami, sprawdziłem jedną i niestety pod emulatorem nic się nie wczytuje bezbłędnie... może gdzieś tam jest jakiś microloader...

      Znalazłem jeszcze ->link<- :) Tu na szybko na jednej z kaset wypatrzyłem (zerkając na okładkę) microloader... a na innej według okładki jest 3.0... Są też pliki rom i xex :)

      (Brakuje jednak katalogu "Turbo 2000 stuff" [K.S.O.], którego mam nadzieje całą zawartość kiedyś ściągnąłem, a teraz umieściłem tu: ->link<- )

      Co do emulatora to zauważyłem, że Shift+F5 działa inaczej niż Cold Start wybrane z menu, ten pierwszy jest niepełny, co widać przy podpiętym Blizzardzie.

      Mam też wrażenie, że przy wczytywaniu jest jakaś losowość, bo przy tej testowanej kasecie (maw_blizzard_skarbek.flac) czasami łapie nazwę (krzaczki), a czasami wale nie.

      W załączniku to co dotyczy Blizzarda i udąło mi się wyciągnąć TURGEN-em: KOS 2.0, SHORT KOS i coś dziwnego - chyba loader do ZYBEX-a, ale był zapisany jako jeden z plików Winter88. Niestety kaseta kończy się na 5WHO... i nie ma wymienionego na końcu ML 3.0 :(
      • 32: CommentAuthorbaktra
      • CommentTime15 Aug 2017 09:08
       
      [29]
      The "Auto set header" button ensures the file name is not longer than 10 characters. Of course, there is no way to specify inverse characters.

      Yes, Turbo Decoder does not support the L2 loader. I would need to know what is the file format used by this loader. If it is just 3-KB blocks without a header or something else.

      Prepending of the L2 loader would be possible if I have a .xex of that loader (At this forum, there are loaders from Seban, only for Atari 130XE). I can steal those.
      • 33: CommentAuthorQTZ
      • CommentTime15 Aug 2017 15:08 zmieniony
       
      @Baktra

      Wpisywanie znaków w inverse nie jest pierwszą potrzebą, ale możesz dodać wirtualną klawiaturę do ich wpisywania ;)
      Mi jednak chodzi o to, czy (bo nie sprawdzałem) Turgen obsługuje takie nazwy - tzn. czy będzie potrafił zapisać plik jeżeli w nazwie są nieprzewidziane w Windowsie znaki? Czyli zamieni inverse na nie inverse i inne na akceptowalne, bo program H. Cygerta zapisuje dziwne nazwy i czasami nie można ich skasować lub jest błąd.

      Przy okazji - przy sprawdzaniu wav-ów z Blizzarda zdarzyło się, że Turgen zapisał bardzo długą nazwę (plik był pusty) i przed skasowaniem musiałem tę nazwę zmienić na krótszą...

      Co do długości nazwy to kluczowe jest "bez rozróżnienia rozszerzenia" - patrząc na pliki zapisane przy kopiowaniu ze stacji dyskietek na Atari (prawdopodobnie Autocopy) rozszerzenia są ucinane np. DRACONUS.COM na Atari w Turbo KSO będzie DRACONUS.C, a Turgen utnie to na DRACON.COM w sumie lepiej byłoby całkowicie ucinać rozszerzenie, jeżeli to się nie mieści lub jest to xex, com, bin, obj. Ew. mogłoby to być opcjonalne.

      W Autocopy możesz zapisać Loader 1 lub 2 przed kopiowanym plikiem i pewnie nagłówek zostanie ucięty automatyczne. Na Atari robiłem tak, że jak się coś nie wczytywało testowałem, który Loader działa i kopiowałem odpowiednio - gdy Loader 1 to wiadomo Loader 1 i za nim program - np. umieszczone powyżej Goonies, a gdy Loader 2 to nagywałem Loader 2, a za nim program ale nazwę (pilot i nagłówek) przytrzymywałem na Pause, więc po Loaderze 2 są same dane pliku po prostu bez nazw - w załączonym powyżej pliku masz w ten sposób zapisanego Draconusa. Jak pisałem aby taki plik skopiować trzeba było użyć dowolnego nagłówka (nazwy) z innej kasety (w ten sposób można skopiować też bloki np. za uszkodzonym).

      Loadery i inne moje pliki (także nieudolnie modyfikowane przeze mnie) są w atr, który kiedyś przygotowałem w wątku o KSO. W pliku txt jest opis co jest co i skąd pochodzi. Jest tam też wersja KSO 1.0 nie wymagająca przeróbki magnetofonu :) Poniżej są te pliki od Sebana. O ile pamiętam programy do KSO są też w paczkach od H.Cygerta (linki powyżej). No i w Serious Magazynie 14 i 15 (link jest również w tamtym wątku).

      PS. W tym wątku ->link<- przesłałem Ci kiedyś info na priv.

      Pisałem tam m.in. o dwóch wersjach zapisu - z przerwami między blokami (gdy na taśmie była muzyka między blokami słychać fragmenty - tak jest na taśmie z której zgrałem fragment z Goonies-ami [fragmenty muzyki były na drugim kanale] - zapisywane starszą wersją kartridża - niestety mój uległ zniszczeniu i został wyrzucony...) i bez przerw (nowsze wersje z rozbudowanym menu). Chyba nieco dłuższy jest też pilot przy każdym bloku.
      • 34: CommentAuthorbaktra
      • CommentTime15 Aug 2017 16:08
       
      @QTZ
      Thank you for explanations and information.

      In general, when generating wave files, automatic file name creation can be adjusted to your needs. Please refer to the image attached. You can tell Turgen not to generate an extension (that's probably what you want)

      When decoding wave files, Turgen tries to create safe and reasonable file names compatible with various file management systems.

      Inverse is ignored and all characters that are not letters or numbers are converted to _xx, where xx is the code of the character. Therefore it can happen that the decoded file name is much longer than the original name - even beyond limitations of a particular turbo system. There is no good circumvention, because some ATASCII characters have no good PC equivalents.

      From what you write, L1 and L2 loaders do not use any special file format. The loader is in the natural KSO Turbo 2000 format - header and one 3KB block and then 3KB blocks follow. A new turbo decoder option: File Format [Natural|Without header (L1,L2)] can solve this. I take it the L1 and L2 loaders are used for binary load files and the only difference are the addresses of the loader and buffer.

      Loader for Atari 130XE in this thread (post 21)
      ->link<-
      • 35: CommentAuthorQTZ
      • CommentTime15 Aug 2017 16:08 zmieniony
       
      Jeszcze edytowałem tekst powyżej, więc może czegoś nie przeczytałeś... Ciekawy jest też loader AST, który w KSO wczytuje pliki AST :) Patrz mój post 19 w tym wątku.

      Znaki w inversie powinny być konwertowane do "normalnych", a potem filtrowane jak pozostałe. Mam sporo kaste gdzie całe nazwy są w inverse.

      Co do loaderów, to byłoby wygodnie gdyby Turgen sam "wiedział" który trzeba dodać i od razu taki loader dogrywał (proponował). Przy odczycie gdyby zauważył taki loader (szczególnie 2) żeby się spodziewał danych i je odczytywał.

      Tak pliki Sebana sam wczoraj dorzuciłem :)
      • 36: CommentAuthorbaktra
      • CommentTime15 Aug 2017 17:08
       
      @QTZ

      1. Co do loaderów, to byłoby wygodnie gdyby Turgen sam "wiedział" który trzeba dodać i od razu taki loader dogrywał (proponował).

      2. Przy odczycie gdyby zauważył taki loader (szczególnie 2) żeby się spodziewał danych i je odczytywał.


      1) Interesting idea. Implementation can be only partial, though.
      If we assume that the L1 and L2 loaders are embedded in Turgen, then Turgen knows what memory areas are occupied by these loaders. It also knows (to certain extent) what memory areas are occupied by the binary load file. What Turgen does not know is what memory areas are occupied by the user's default loader (one user can have K.S.O, other can have Turbo 2000F). The user would have to specify what is his default loader.

      Embedding of the L1 and L2 loaders will introduce one extra problem to solve - Input from joystick port or input from SIO DATA IN. The user will have to specify what his system is and appropriate version of the L1 or L2 loader will be prepended.


      2) Well, the decoder has no way of knowing whether the decoded file happens to be L1 or L2 loader. To complicate it, there are more versions of the L1 and L2 loaders around.
      • 37: CommentAuthorQTZ
      • CommentTime15 Aug 2017 17:08 zmieniony
       
      Przy KSO nie spotkałem innych wersji niż te dwie L1 i jedna L2. Co ciekawe na kasetach nie spotkałem wersji dołączonej do AutoCopy. Znane loadery można wykrywać.

      Edit: znalazłem microloadery... linka podał Seban na AA... a one są tu: ->link<- . Później sprawdzę.

      Dwa spośród tych plików to pliki binarne a nie cas. ML3.0 to plik bootowalny, skonwertowałem go na wav - normal i zadziałał, ale zawiesza się zaraz za nagłówkiem :(
      • 38: CommentAuthorFUJI
      • CommentTime16 Aug 2017 13:08
       

      QTZ:

      Mam też wrażenie, że przy wczytywaniu jest jakaś losowość, bo przy tej testowanej kasecie (maw_blizzard_skarbek.flac) czasami łapie nazwę (krzaczki), a czasami wale nie.

      Zgadza, się, tego konkretnego pliku, jak też pozostałych plików flac pobranych z tego samego katalogu proszę nie używać jako wzorca nagrań Blizzarda. Jest z nimi coś nie tak. Swego czasu przesiedziałem parę godzin próbując zmusić emulator do ich poprawnego wczytania. Nie udało się w żaden sposób. Zachowują się losowo. Tape Doctor pokazuje, że sporo pomaga duże wzmocnienie sygnału, ale losowości wczytywania nie udaje się całkiem wyeliminować. Co ciekawe a8cas-util prawie w ogóle nie ma problemów ze zdekodowaniem tych plików do cas, a potem po skonwertowaniu cas do wav już wszystko działa dobrze. Podejrzewam, że występują za duże fluktuacje szerokości impulsów. Procedura ładowania na podstawie szerokości impulsów długiego pilota na początku pliku oblicza, jakie powinny być szerokości imulsów zer i jedynek w blokach danych, więc jeżeli jedno z drugim nie jest dobrze zgrane to mogą występować takie efekty (ale to tylko teoria, nie robiłem aż takiej analizy audio tych nagrań).

      QTZ:

      Czy ten emulator ma zamienioną kolejność klawiszy konsoli, bo w Blizzardach zawsze F2 działa jak Option, a F4 jak start?
      (...)
      zawsze mi się wydawało, że wszędzie jest tak samo...


      W atari800 zawsze F2 działa jak Option, a F4 jak Start (a F3 jak Select). Tzn. myślałeś, że w atari800 jest tak samo jak w innych emulatorach ?

      QTZ:

      Co do emulatora to zauważyłem, że Shift+F5 działa inaczej niż Cold Start wybrane z menu, ten pierwszy jest niepełny, co widać przy podpiętym Blizzardzie.


      Też zauważyłem, że przy niektórych cartridżach trzeba przy Shift+F5 wcisnąć też Option (F2), żeby zadziałało jak przy uruchamianiu emulatora z wyłączonym basicem. Może być jakiś bug.

      QTZ:

      Może Seban ma... znalazłem archiwum z kilkoma kasetami, sprawdziłem jedną i niestety pod emulatorem nic się nie wczytuje bezbłędnie... może gdzieś tam jest jakiś microloader...


      O kasetach z archiwum uicr0bee zapomnij. Są w fatalnym stanie. Próbowałem kiedyś (na wyrywki) coś z nimi zrobić, ale po prostu szkoda na to czasu. Może warto by było nad nimi posiedzieć, gdyby zawierały jakieś unikalne programy, których nigdzie indziej nie ma...

      baktra:

      Turgen will generate .cas file with pwmX blocks for Turbo Blizzard. I know that there is at least one bug in the a8cas library that will prevent atari800-a8cas emulator from reading the .cas file correctly. Krotki is aware, but I believe the bug is still not fixed. The bug is related to processing of the pwml block (if I remember correctly)


      Wchich emulator are You talking about ? The one from Krotki's page or the one linked in this thread, they differ a bit from each other. And can You exactly specify what bug is it ?

      Actually, Turgen generates cas files incorrectly. Look, this is how data block looks like after converting to hex:

      pwmc 00300 24 302 ; count=1 this is OK
      pwml 00000 4 4 0 4 4 ; count=5 this is BAD
      pwmd 8 14 6b 65 79 73 74 6f 6e 65 20 20 .... OK


      The second block (pwml) is incorrect. Zero between two pulses causes polarity inversion after first sync pulse. It is NOT a bug in liba8cas. It should work exactly like this, the same way zero-length "fsk " signals work in normal format.
      Should be:
      pwml 00000 4 4 4 4

      Even better:
      pwmc 00000 8 2

      Even better - combine two first blocks into one:
      pwmc 00300 24 302 8 2


      BTW, I think that default pulses for Blizzard plugin in distributed "pulses.list" file are incorrect. I belive files generated by Turgen do work, because widths of pulses are still within tolerances range, but according to "ideal" pulses generated by emulator they should be more like:
      "T4410,4410,22,11, 7, 7, 0"
      or:
      "T4410,4410,22,11, 8, 8, 0"
      • 39: CommentAuthorbaktra
      • CommentTime16 Aug 2017 16:08
       
      @FUJI

      I should clarify what I have written. When speaking about the bug, I meant emulator available at a8cas.sourceforge.net, not yours.

      I am also not sure what could be wrong with the pwml chunks generated by Turgen.

      I have converted a .xex file to .cas format with the Turbo Blizzard plugin. Hexadecimal editor (PSPad) shows the following:

      70 77 6D 6C p w m l
      04 00 length of the chunk - 4 bytes
      00 00 silence before - 0 miliseconds
      04 00 duration of HI (4 samples)
      04 00 duration of LO (4 samples)


      It appears to be in-line with the pwml chunk specification available at a8cas.sourceforge.net
      • 40: CommentAuthorFUJI
      • CommentTime16 Aug 2017 17:08
       
      @baktra: I'm sorry, :[, my fault - conversion error. CAS file looks ok, but nevertheless it doesn't work in emulator, I'll search for possible resons later.
      • 41: CommentAuthorFUJI
      • CommentTime16 Aug 2017 20:08
       
      @baktra: You are right, It's bug in liba8cas (reading pwml chunks). It was introduced as a fix in year 2011 :/. I have fixed it back in my version. The one maintained by Krótki will have to wait, I don't know how long it will take.

      @wszyscy: poprawione pliki są wrzucone, można wczytywać turbo z plików cas wygenerowanych z Turgena (przynajmniej blizzarda). Dla wygody powtarzam linki.
      żródła liba8cas
      źródła atari800-a8cas
      binaria dla Windows
      • 42: CommentAuthorxtrem007
      • CommentTime16 Aug 2017 22:08
       
      Przetestowałem na RaspberryPi z plikami cas Blizzarda wygenerowanymi Turgenem i nie zauważyłem żadnych problemów.
      Dziękuję.
      • 43: CommentAuthorQTZ
      • CommentTime22 Aug 2017 18:08 zmieniony
       
      @FUJI
      Dziękuję za odpowiedzi i porawkę :) Ostatnio byłem off-line.

      @Xtrem007
      Ale tego MicroLoader-a 3.0 chyba nie testowałeś?
      Na poprzedniej wersji się zawieszał i tu nie powinno być zmian... być może tak jak pisał Baktra "Loader" powinien mieć specjalny format, a to jest plik binarny, a nie cas (błędne rozszerzenie). Może da się go poprawnie zapisać do pliku cas?

      Można też spróbować odkodować BLZ_40.rom - jeżeli masz ten plik i schemat to można by przetworzyć plik tak aby nie było potrzebne jego przepuszczenie przez bramki. Chyba nie jest to trudne i mógłbym spróbować. Skonwertować na "file" nie umiem, ale może przynajmniej z emulatorem by się dało uruchomić :)
      • 44:
         
        CommentAuthorKaz
      • CommentTime27 Feb 2020 21:02
       
      xtrem007 - czy ja mogę prosić Cię o kilka plików cas Blizzarda do testów?
      • 45: CommentAuthorxtrem007
      • CommentTime5 Mar 2020 19:03 zmieniony
       
      W tej chwili testuję na RaspberryPi emulatorek Atari800_4.2.0 z nowym patchem a8cas zrobionym przez @FUJI. Akurat kilka plików sobie przygotowałem:) Wszystkie *.cas posiadają loader Blizzard'a w normalu.
      • 46:
         
        CommentAuthorKaz
      • CommentTime5 Mar 2020 19:03
       
      Super! Dzięki.