Autor Wątek: Nagłówek MESCA w danych muzycznych  (Przeczytany 24511 razy)

pear

  • *****
  • Wiadomości: 5254
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #30 dnia: 2013.06.08, 11:11:19 »
Wpadłem na pomysł, że może pierwsza wartość to czas trwania nuty, 2. i 3. to dzielnik (0 może oznaczać ciszę, czyli pauzę), a 4. to numer generatora.
Nadal nie mam pomysłu jak powiązać wartość dzielnika z tonem.
ZX/Enterprise/CPC/Robotron/C128D

pear

  • *****
  • Wiadomości: 5254
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #31 dnia: 2013.06.08, 11:16:06 »
Jeśli udałoby się wyciąć kod odtwarzacza - który wie co z tymi danymi zrobić to byłoby OK a tak to chyba nic z tego dobrego nie wyjdzie :-(. Próbowałem zrobić tak ale podobno tak nie można bo program musi działać w pamięci od adresu #100
Programy w CP/M ładowane są do pamięci pod adres 0x100, więc pomysł masz dobry, tylko offset musisz sobie zmienić, np. +0x8000 i przeliczyć wszystkie adresy bezwzględne.
Program będziesz miał wtedy od adresu 0x8100 (33024 dziesiętnie).

Zauważyłem, że często mylisz adresy DEC i HEX - zwracaj na to uwagę, bo niepotrzebnie stracisz sporo czasu :)
ZX/Enterprise/CPC/Robotron/C128D

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #32 dnia: 2013.06.08, 12:13:48 »
Programy w CP/M ładowane są do pamięci pod adres 0x100, więc pomysł masz dobry, tylko offset musisz sobie zmienić, np. +0x8000 i przeliczyć wszystkie adresy bezwzględne.
Program będziesz miał wtedy od adresu 0x8100 (33024 dziesiętnie).
Tak właśnie zrobiłem tylko od adresu 40000 zamiast 33024. Czytałeś ten post? Na forum zx-pk.ru user jerri napisał mi:
Cytuj
here is a system absent
some function calls to Dxxx and #00xx

Czyli, że bez systemu CP/M nie da rady? Przecież próbuję uruchomić nie cały program WW.COM tylko jakiś podprogram z niego (SUBROUTINE)

P.S. Udało mi się uruchomić system CP/M 2.2 na ZX Spectrum 48 z rozszerzeniem LEC Memory Extension w emulatorze ZXMAK2 i wczytać plik WW.COM z taśmy ale niestety nie chce działać. Inne programy z dyskietki "Bajta-01" działają po części, np. menu programu SYS.COM. W załączniku SYS.COM na emulatorze + LEC i SYS.COM na prawdziwym "Bajcie-01" dla porównania :-)
« Ostatnia zmiana: 2013.06.08, 13:27:48 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1109
  • Miejsce pobytu:
    inode 42
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #33 dnia: 2013.06.08, 14:39:00 »
Odtwarzacz jak sądzę zaczyna się od adresu $1f96...
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #34 dnia: 2013.06.08, 15:25:21 »
Odtwarzacz jak sądzę zaczyna się od adresu $1f96...
Całkiem możliwe ale po wstawieniu WW.COM do pamięci RAM w adres 40000 i uruchomieniu RANDOMIZE USR 47830 (1F96 - 100 = 1E96h = 7830dec) w emulatorze Spectaculator ROM resetuje się, także po wcześniejszym wykonaniu CLEAR 47829

Działanie programu WW.COM:

1. Załadowanie obrazka wielkości 6912 bajtów z offsetu 0x2404 na ekran 256x192
2. Odtwarzanie muzyki
3. Po wciśnięciu dowolnego klawisza pokazuje się menu systemowe

Czy ten offset 1F96 to według Ciebie sam odtwarzacz czy podprogram ładowania obrazka na ekran?
« Ostatnia zmiana: 2013.06.08, 15:34:44 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1109
  • Miejsce pobytu:
    inode 42
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #35 dnia: 2013.06.08, 15:32:52 »
Przecież tak nie można.
Primo, kod nie jest relokowalny, musisz albo ręcznie pozmieniać w binarce adresy albo wyczyścić ASMa i skompilować od nowa,
secundo jak już ktoś mówił odwołuje się do funkcji CPM, co trzeba też jakoś uwzględnić...

IMO to wejście do procedury odtwarzającej (może wymagać jakiegoś parametru, nie wiem)
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #36 dnia: 2013.06.08, 15:45:16 »
Czyli tak jak wcześniej pisałem - bez CP/M nie da rady. No nic będę musiał poczekać w takim razie aż autor ZXMAK2 doda emulację "Byte-01" - obiecał, że doda, ale kiedy to nastąpi to nie wiadomo :-(. W tej chwili działa emulacja zwykłego "Bajta" ale bez VI53 (Intel 8253). Jedyny znany mi emulator który potrafi emulować po części "Bajta" i chip 8253 to EMU 1.01 (Башкирия-2М).

P.S. W ubiegłym roku rozmawiałem z autorem innego emulatora E3000 - i też obiecał dodać emulację "Bajta". Prusak przesłał mu nawet materiały do emulacji ale niestety do dziś nic nie wiadomo :-(
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #37 dnia: 2013.06.09, 08:35:48 »
Piszę ponieważ dosłownie przypadkiem znalazłem ciekawą rzecz. Otóż znalazłem dosłownie ten sam kawałek kodu z pliku WW.COM w pliku Art Studio.tzx - wersja z kasety zwykłego "Bajta" w którym na początku odgrywana jest melodia Lambada za pomocą VI53 :-). Ten kod jest właściwie dopiero dostępny po rozpakowaniu któregoś bloku w pamięci emulatora ponieważ nie mogę znaleźć go w żadnym bloku pliku Art Studio.TZX. Jak to zrobiłem. Ponieważ emulator EMU 1.01 nie obsługuje zabezpieczenia "Bajta" Cerikopik musiałem skorzystać z wersji Art Studio odbezpieczonej oraz usunąć blok w pliku TZX zawierający krótką rosyjską instrukcję obsługi. Tak przygotowany plik nazwałem: Art_no_cer.tzx
1. Wczytałem plik Art_no_cer.tzx w emulatorze EMU 1.01
2. W momencie pojawienia się pędzla i spray'a zapisałem szybko stan emulatora do pliku .emu zmieniając później nazwę na Lambada.emu
3. Otworzyłem sobie ten plik w WinHEX i przypadkiem znalazłem ciąg |Puşn i od razu skojarzyłem, że taki sam widziałem w kodzie WW.COM przed danymi muzycznymi - i bardzo dobrze skojarzyłem, ch....a dobrą mam pamięć wzrokową :-)
4. Otworzyłem w WinHEX również plik WW.COM i proszę bardzo, ten sam ciąg i jeszcze kilka bajtów wstecz identyczne. Po ciągu |Puşn są też jakieś dane - zapewne muzyczne ale jakoś nie podobne do tych z WW.COM :-(. Link do emulatora "Bajta". Po rozpakowaniu Byte EMU.rar można otworzyć po prostu plik Lambada.emu aby zobaczyć jak gra VI53.
« Ostatnia zmiana: 2013.06.09, 08:55:12 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #38 dnia: 2013.06.09, 09:28:39 »
Dane po ciągu |Puşn są na 100% danymi muzycznymi dla chipu VI53. Zrobiłem test z plikiem Lambada.emu i wstawiłem w WinHEX kilka zer i po otworzeniu pliku w emulatorze EMU 1.01 pojawia się cisza w pewnym momencie odgrywania melodii Lambada :-)
I tak np. w offsecie 359C jest prędkość odtwarzania domyślnie 19h, po zmianie na np. 05h muzyka odtwarzana jest za szybko. Patrz plik 359C.emu w załączniku.
« Ostatnia zmiana: 2013.06.09, 10:09:32 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 642
Odp: Nagłówek MESCA w danych muzycznych
« Odpowiedź #39 dnia: 2015.05.22, 22:14:07 »
Offset 359C - pozycja w pliku .emu w hex edytorze
Offset 6E5E - pozycja w debugerze w emulatorze EMU 1.0.1

Niższa wartość = szybsze odtwarzanie
Wyższa wartość = wolniejsze odtwarzanie

P.S. Po zmianie wartości w debugerze trzeba odczekać aż melodia zostanie odtworzona ponownie, dopiero wtedy zmiany odniosą skutek.
Wciskając i przytrzymując klawisz F9 w emulatorze można przyspieszyć prędkość emulacji procesora.
« Ostatnia zmiana: 2015.05.22, 22:36:39 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники