Autor Wątek: Tricki na Amstradzie  (Przeczytany 55919 razy)

ZbyniuR

  • *****
  • Wiadomości: 3215
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tricki na Amstradzie
« Odpowiedź #120 dnia: 2021.10.09, 00:12:21 »
Działa rewelacyjnie! :)

Teraz by trzeba wyodrębnić z całego ROMu te procedury które rzeczywiście zostały zmodyfikowane i w jednej binarce umieścić powiedzmy pod &8000, aby 16K od &4000 zostawić do dyspozycji na przełączane ekrany czy coś. I zmodyfikować tylko te poprawiane wektory.

W pośpiechu by wypróbować jak działają co niektóre programy na tak zmienionym ekranie przypadkiem nagrałem na dysku z moimi ostatnimi bajziczkami obraz twojego dsk z tym poprawionym poke. I mam teraz żałobę po utraconych pliczkach. :(
Coś być musi do cholery za zakrętem.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #121 dnia: 2021.10.09, 21:03:40 »
overscan8.bas

i relokacja niecałych 8kb do banku 2.

Teraz wgrywamy plik RAM8-ROM.bin.

ustawiłem też symbol after 0 i zmieściło się na styk.

wywołania z B992 są liczone czy mają iść do dolnej czy górnej części LowRom.

do górnego 8k lecą do ROMu (&2000-3FFF), do dolnego 8k (&0000-&1EEF) lecą do RAMu (&8000-7EEF).

oczywiście BASIC i przerwania korzystają z tego co chcą.

Tablica skoków ASCII i Tablica skoków Firmware Indirection poprawiona na adresy od &8000.

ps. łącze się w bólu po stracie dyskietki. I pasem po d... powinieneś dostać, że nie robisz backupu chociażby zipa całego katalogu.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #122 dnia: 2021.10.11, 10:30:03 »
CLS i CLG działa źle.

zrobiłem wersje 16k w banku 1 gdzie działa copiowanie i shiftcursor.

problem jest taki, że działa to na codzie między 8 a 12 kb LowRom które jest wycięte w wersji 8kB.

ZbyniuR

  • *****
  • Wiadomości: 3215
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tricki na Amstradzie
« Odpowiedź #123 dnia: 2021.10.11, 14:34:45 »
Po tym jak wiele widziałem skrolaków i sprajtów latających po szerokich ekranach, nie wierzę żeby nikt wcześniej nie myślał aby przygotować takiego działającego gotowca. A że o tym nie słyszałem mogę tłumaczyć tylko tym o czym mówisz, że tych procedur które korzystają z grafy jest aż tyle i są rozsiane po tylu miejscach że sie odechciewa. I prościej jest napisać np kilobajt kodu który przesuwa po tych giętych ekranach coś ruchomego a przy tym wyższego niż linijka tekstu, niż modyfikować wszystkie odwołania które korzystają ze standardowych ustawień. No cóż gdyby to było łatwiejsze to już wcześniej ktoś by to zmienił.

Powiedz czy musiałeś gdzieś ingerować w same procedury czy tylko zmieniałeś w nich parametry co by dostosować ich działanie do innej szerokości/wysokości ekranu?
Zaczynasz mieć tego dość czy się dobrze bawisz rozkminiając jak to zrobić? :)
Coś być musi do cholery za zakrętem.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #124 dnia: 2021.10.11, 17:12:25 »
Zabawa z relokacją jest niebanalna. Trzeba przypilnować które wartości w rejestrach są przyszłymi adresami skoku a które nie.
Wiadomo że wszystkie wywołania prowadzą do romu a nie ramu więc trzeba wyczekać moment gdzie procedury przechodzą przez ram żeby cokolwiek móc zmodyfikować. Znalazłem dwie takie luki. Procedura licząca adresy wejścia do romu, leci przed adresem &b999. Tamtejsze RET nie wraca z procedury tylko jest skokiem do LowRom z policzonego adresu położonego na stosie. Druga luka to procedury &bdcd i &bdd0 zapalające i gaszące kursor. Myk jest taki że one nie używają rejestru DE a Rom skacze do nich akurat trzymając w DE adres przyszłego skoku do rom. Na stosie leży też adres skoku z rom do procedury kursorów. Jak sie napisze procedure modyfikującą ten adres to wtedy wraca do ramu a nie do romu.
Zabawa jest niezła. Ale rozkładu procedur w pamięci nie zmieniam, bo zawsze jakaś inna procedur może w nią wtedy nie trafić. Życia zabraknie na rozkminienie całych 16kB. :)

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #125 dnia: 2021.10.25, 23:24:12 »
działa Shift Copy na 8kb.

Nie działa dobrze przewijanie w WINDOW softowym. źle się zamazuje. i źle działa CLS.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #126 dnia: 2021.11.12, 23:08:54 »
Działa Shift Copy

Działa Window

Działa CLS

Działa pisanie programu. linie są przyjmowane.

dokładnie podzieliłem Rom na adresie 1FE9 (pierwszy rozkaz użwany w LowRom)

Fragmenty Kodu oryginalnego, które na pewno są niepotrzebne wyzerowałem (może być ich więcej) . Wyzerowane też są tablice np KeyUser, tablica klawiszy. Teksty standardowe wyzerowałem również.

ZbyniuR zapraszam do testów.

ps. źle działa CLG.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #127 dnia: 2021.12.03, 22:33:15 »
6381 bajtów rekompilowanego i relokowanego LowRom

do wyboru rozdzielczości textu w mode 2

62x33 źle działa CLS ze względu na przekroczenie rozdzielczości pionowej 256 (a jest 264)
64x32 źle działa przewijanie ze względu na brak reszty z 2048-(64*32)=0
66x31 śmiesznie działa mode 0 ze względu na nie podzielność bez reszty liczby 66 na 4. (zawija się ostatni znak)
68x30 pierwszy pełnowartościowy tryb
80x25
84x24
96x21

tryby wybiera się przez run (lub goto) i liczba znaków w wierszu.

wrzuciłem materiał na Youtuba jak to działa... https://youtu.be/_Msqr9RCSRE (do obejrzenia jak sie załaduje)

konkurs, w którym można wygrać nowy tryb.

Pytanie brzmi jak zrobić nowy tryb?  :D ;D :o 8) :P

« Ostatnia zmiana: 2021.12.03, 23:09:39 wysłana przez McArti0 »

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #128 dnia: 2021.12.11, 23:37:12 »
Kolejny przełom, działa grafika!

11 trybów w tym 5 nowych obsługujących poprawnie grafikę.

Załączam plik ASM można sobie popatrzeć co i gdzie się pozmieniało.

DSK można sobie używać. i JPG można sobie pooglądać.

Można by teraz zacząć optymalizować prędkość. Ale mi się już nie chce.  ;D

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #129 dnia: 2021.12.12, 11:14:14 »
Na youtubie prezentacja  8) https://youtu.be/K_3XLb6vaf4

ZbyniuR

  • *****
  • Wiadomości: 3215
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tricki na Amstradzie
« Odpowiedź #130 dnia: 2021.12.27, 12:32:24 »
Czy próbowałeś sie już reklamować na zagranicznym forum albo amstradowej grupie na FB?
Coś być musi do cholery za zakrętem.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #131 dnia: 2022.01.01, 01:01:24 »
nie. nie mam czasu. :o 8) rozkminiałem AY. efekty samplowe są rachityczne.

ZbyniuR

  • *****
  • Wiadomości: 3215
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tricki na Amstradzie
« Odpowiedź #132 dnia: 2022.01.05, 12:53:26 »
A w ilu bitach próbujesz sample?
Coś być musi do cholery za zakrętem.

McArti0

  • **
  • Wiadomości: 69
Odp: Tricki na Amstradzie
« Odpowiedź #133 dnia: 2022.01.07, 11:10:31 »
Docelowo chciałem na niepełnych 6bitach. mieszając wszystkie 3 kanały. Ale utknąłem na CZYSTYM odtworzeniu fali prostokątnej niskich częstotliwości. Mam jakieś artefakty i harmoniczne. Nie wiem też, który emulator robi najlepszego AY.

;*********************** SAMPLER ********************
org #a050

di

ld b,#f4
out (c),e

ld bc,#f6c0
out (c),c

ld bc,#f600
out (c),c

xor a
DL equ $+1
ld hl,23000 ; dlugosc sampla
ld b,#f4
exx
push hl
start equ $+1
ld hl, #2000 ; start
ld a,(hl)
push bc
ld bc,#f680
push de
wait_time equ $+1
ld e,10 ; opoznienie

exx

nop
nop
nop
.petla

out (c),a  ;----- Dana -------
exx ;ld bc,#f680

out (c),c
;--------------------
ld b,e
.wait2
djnz wait2
;--------------------
ld b,#f6
ld a,(hl)
inc hl
exx  ;ld b,#f4

dec l

jp NZ,petla-3
dec h

jp NZ,petla

ld bc,#f600
out (c),c

exx
pop de
pop bc
pop hl
exx

ret

ZbyniuR

  • *****
  • Wiadomości: 3215
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tricki na Amstradzie
« Odpowiedź #134 dnia: 2022.01.07, 12:10:24 »
Z tego co wiem to sampla w AY odtwarza się manipulując rejestrem głośności który jest 4bitowy (starsze bity wysłane tam są ignorowane). W CPC dzięki temu że ma wyjście stereo da sie na upartego 5bit puścić w ten sposób że ze sampla 8bit starsze 4 puszcza sie jednocześnie w kanale lewym i prawym, a 5bit (ten nieco młodszy) puszcza sie jako 1 najmłodszy bit w kanale środkowym. Dzięki temu że środkowy kanał jest słyszalny w obu głośnikach ale o połowę ciszej niż kanały lewy+prawy puszczone razem. Czyli sporo roboty z tym 5ym bitem a niewielka różnica w jakości dźwięku. Większy wpływ na jakość ma częstotliwość próbkowania, choć tą nie można za bardzo szastać bo mamy mało pamięci. 4bitowy sampel upchniesz po 2ie wartości w bajcie, a 5go tak łatwo nie wciśniesz, chyba że trzymasz próbkę jako 8bit. Choć skoro już mamy taką próbkę to można to puścić przez port drukarki. Jest 7bitowy ale 8bit puszczamy na pinie sygnału strobe. Tylko nie jestem pewien czy to bit najstarszy czy najmłodszy. Z jednej strony normalnie te 7bit są młodsze, ale jak źle zesynchronizujesz ten starszy 8bit to wyjdzie kicha. A z drugiej strony jeśli w tych 7bit puścisz starsze bity to trzeba każdą wartość przesuwać, co zużywa moc procka, ale ewentualne nieprecyzyjne zesynchronizowanie 8go tym razem najmłodszego bitu nie będzie aż tak zniekształcało dźwięku. Takie puszczanie przez port drukarki wymaga podłączonego Digiblaster-a (to taki Covox do CPC który sobie bierze ten 8bit ze strobe). Z emulatorów na pewno dobrze go emuluje JavaCPC, jego autor lubił sie tym bawić, co do pozostałych to nie mam pojęcia czy jakiś ma taką opcję. Bo jeśli chodzi o emulacje AY-ka to nie sądzę aby był skomplikowany i pewnie każdy emulator robi to równie dobrze.

Z obu tych metod tzn tej 5bit na AY-ku oraz tej 8bit na drukarce korzystają programy DigiTracker oraz Protracker. Drugim sie mało bawiłem i nie pamiętam, ale 1szy ma dodany programik do konwertowania Amigowych modułków, byle sie mieściły w 64K ramdysku.

Skąd bierzesz sampelki?
Coś być musi do cholery za zakrętem.