851

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

gdyby olać XBios, program ładować spod jakiegoś ATARI-DOS-a (MyDos, SDX etc.) i wykorzystać same procedurki transmisji XBios-a w swoim programie, bez całego interfejsu inicjalizera etc. co by wówczas powstało, najmniej uniwersalne rozwiązanie, bo ograniczające się tylko do jednego medium które z góry przewidział autor programu

wszystkie dotychczasowe produkcje Overmind, Energy, Total Daze, Joyride itp. dysponują swoimi własnymi procedurami transmisji, nie można ich modyfikować bez ingerencji w program

XBios zostawia otwarte drzwi dla innych protokołów transmisji, przy minimalistycznych założeniach wykorzystania pamięci, rezygnacji z ROM, przerwań itd. ale jest to projekt skierowany bardziej dla programistów, tak jak nakładki na MS-DOS pozwalające korzystać z trybu chronionego

jedyne co bym w nim zmienił to możliwość relokacji pod wskazany adres, co bardziej wymagałoby symboli SDX

852

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

jellonek napisał/a:

tebe: mi przeszkadza ze xBios nie dziala z side. miljonom userow side pewnie rownie mocno to przeszkadza. ale to nie autor side nie przewidzial xBiosa - to autor xBiosa nie przewidzial urzadzen innych niz dzialajacych na sio. tj. przewidzial ze mozna podgrac inna wersje biblioteki, np. taka ktora nie istnieje.

to jak to SIDE działa z takim np. Energy-zinem gdzie jest własna transmisja SIO, czy z demami Tight-ów albo Hard-ów

czy projektant tego urządzenia uznał że jest mało programów z takim typem transmisji i nie warto się tym przejmować ?

electron napisał/a:

Ale xbios to mutant. Ze specyfiki działania zachowuje się jak sztywny całodysk, a mieni się być programem uniwersalnym do obsługi plików. Zdanie xxl-a "xbios bazuje na standardowym filesystemie" świadczy dla mnie o tym, że niestety XXL lekceważy rzeczywistość, która nie pasuje się do Jego pomysłów.

przygotowujesz dyskietkę, formatujesz (Single-90Kb, Enhanced-130Kb, Double-180Kb), nagrywasz jakieś pliki w standardzie DOS (w sensie VTOC itp.) i XBIOS będzie to czytało, zgodnie z tym jak Atari DOS-y zapisują dyskietki S,E,D

jeśli mamy do wydania jakieś demo czy grę bardziej rozbudowane to w czym przeszkadza wydanie jej w formie takiej dyskietki

electron napisał/a:

Zastanawiam się, czy osoby, które chcą tego używać chcą to robić dlatego, że jest lepsze, czy dlatego, że łatwiej przeczytać opis kilku funkcji xbiosa niż przekopywać się przez opisy CIO z różnych źródeł. Czyli po prostu lenistwo.

XXL jest osobą która przenosi gry z innych platform, Spectrum, BBC Micro, czy programy z tych platform przejmują się architekturą pamięci XE/XL, bezczelnie ładują swój kod w obszar $c000... albo o zgrozo od $00

XBios ułatwia to z czym normalnie trzeba się gimnastykować, upraszcza projektowanie zarządzania pamięcią, trzymanie DOS-a w pamięci i przywoływanie ROM-u narzuca inne podejście i na pewno nie jest ono elastyczne

innym przykładem może być demo lub gra które będą korzystać tylko z pamięci podstawowej, a resztę danych, kolejne części będą doczytywane podobnie jak ma to często miejsce na C64, chyba możecie sobie wyobrazić że efekty w demach potrafią być bardzo zachłanne na pamięć i nie tolerują kompromisów w tym względzie

853

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

przepraszam że pytam, ale w czym Wam ten XBios przeszkadza, jakieś urządzenie z tym nie działa bo ktoś nie przewidział XBiosa ?

wyłączyć ROM i mieć cały RAM dla siebie, dodatkowo możliwość ładowania przez SIO pod "dowolny" adres, super

w podobny sposób pewnie działają loadery odtwarzające sample podczas transmisji, własne przerwanie IRQ czy inna synchronizacja

jeśli będziemy robić to z udziałem DOS-a, to przed każdą operacją I/O musimy włączyć ROM i wywołać odpowiednią prockę CIO, potem wyłączyć ROM i wrócić do tego co przerwaliśmy na czas transmisji, organizacja pamięci zupełnie inna, nasze procki NMI nie mogą być pod ROM bo go włączamy, pamięć dla ANTIC etc. poniżej $c000

XXL ułatwił sobie i innym życie, tym innym którzy są zachłanni na pamięć RAM :)

854

(11 odpowiedzi, napisanych Programowanie - 8 bit)

w Mario Bros (konwersja z 5200) detekcja kolizji polega na sprawdzeniu podczas odrysowania ducha programowego, czy tło jest <> 0, jeśli jest różne to kolizja i dalsze uściślanie z czym ta kolizja nastąpiła

http://madteam.atari8.info/gry/mario2007.7z

stawianie/kasowanie duchów realizuje jedna procedura, dzięki metodzie EOR (XOR), czyli aby skasować poprzednio postawionego ducha, stawiamy ostatni kształt ducha ale przez EOR, aby postawić nową klatkę ducha używamy OR

pewne dodatkowe operacje są wymagane aby wiedzieć czy wcześniej była postawiona jakaś klatka ducha czy zaczynamy od czystego ekranu

dzięki tej metodzie udało zmieścić się intro do Panga w 2KB, bez potrzeby używania dwóch buforów dla zachowania płynności animacji obiektów

855

(11 odpowiedzi, napisanych Programowanie - 8 bit)

szybka detekcja kolizji, interko Raster/CPU

w Pangu detekcja kolizji kuli z bohaterem, kolizji harpun-kula realizowane są przez w/w metodę nachodzących się prostokątów/kwadratów (kula opisana jest poprzez wpisany w nią kwadrat), natomiast detekcja kuli - otoczenie (murki etc.) realizowana jest na znakach, z tym że dla każdego przesunięcia X kuli (X=<0..3>) jest inna detekcja, uwzględniająca przesunięcie 1 pikslowe, tylko to gwarantuje dokładną detekcję

w większości przypadków stosuje się metodę z czworokątem (w załączniku), czyli albo prostokąt albo kwadrat, jeśli się uprzeć to jakiś inny kształt też da się opisać takimi czworokątami

jak widać na postawie programiku z załącznika detekcja może być szybka

tutaj wersje bardziej pierwotne metody detekcji zaprezentowanej przez Rastera, dział poświęcony duchom C64
http://codebase64.org/doku.php?id=base:sprites

tutaj dla różnych kształtów
http://en.wikipedia.org/wiki/Point_in_polygon

kolizje kul z przykładową animacją, zmianą kierunku po uderzeniu etc. gdyby ktoś chciał robić bilard albo pinball to koniecznie musi to obejrzeć
http://processing.org/learning/topics/c … ision.html

856

(22 odpowiedzi, napisanych Programowanie - 8 bit)

ustawianie odpowiedniego rozmiaru rejestrów realizowane jest poprzez makra, parametrem jest wartość 8 lub 16

857

(22 odpowiedzi, napisanych Programowanie - 8 bit)

w mads jest też możliwość śledzenia rozmiaru rejestrów OPT T+

    opt c+t+
    org $2000

    rep #$20

    lda #0

dla w/w przykładu wystąpi komunikat błędu
ERROR: Bad register size

w tym przypadku prawidłowo powinno być

 lda.w #0

OPT T+ sprawdza rozmiar tylko dla adresowania absolutnego #

858

(22 odpowiedzi, napisanych Programowanie - 8 bit)

w mads ORG-a można zaprojektować wg potrzeb

 opt h-f+
 ORG [a(start), a(over-1)],$2000

start
         nop
over

adres asemblacji po nawiasie kwadratowym jest wymagany, zadziała to tylko gdy OPT H-

dla wspomnianego nagłówka $FBFB, ORG może wyglądać tak:

    opt h-c+
    ORG [a($fbfb),t(prg_start,prg_end-1)],$FFFF80

prg_start
    nop

prg_end

adresy są 24 bitowe

p.s.
w załączniku mads po poprawce, akceptuje adresy ORG 24 bit gdy OPT C+

859

(22 odpowiedzi, napisanych Programowanie - 8 bit)

laoo/ng napisał/a:

Te fragmenty w dokumentacji znam, ale nie tłumaczą one np. jak otrzymać 16 młodszych bitów z adresu 24-bitowego.

pewnie przesuwają bity >> lub << lub AND-ując

możesz też stworzyć jakieś makro które będzie wycinać konkretnie

p.s.
ORG powyżej $FFFF mads nie obsłuży, bo nie miałby jak zapisać tego do wyjścia. ATARI DOS czy SDX nie obsługują adresów > $FFFF

860

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Możliwe jest użycie rozszerzenia mnemonika po znaku kropki '.' dla rozkazów typu LDA, LDX, LDY, STA, STX, STY:

   .b lub .z          BYTE
   .a lub .w lub .q   WORD
   .t lub .l          TRIPLE, LONG (24bit)

np.
   lda.w #$00   ; A9 00 00
   lda   #$80   ; A9 80

Wyjątki stanowią rozkazy n/w, którym nie można zmienić rozmiaru rejestru w adresowaniu absolutnym (niektóre assemblery nie wymagają dla tych rozkazów podania znaku '#', jednak MADS wymaga tego)
#$xx

   SEP   REP   COP

#$xxxx

   PEA

Innym wyjątkiem jest tryb adresowania pośredni długi, który reprezentowany jest przez nawiasy kwadratowe [ ]. Jak wiemy tego typu nawiasy wykorzystywane są też do obliczania wyrażeń, jednak jeśli asembler napotka pierwszy znak '[' uzna to za tryb adresowania pośredni długi i jeśli nie zasygnalizowaliśmy chęci używania 65816 wystąpi błąd z komunikatem Illegal adressing mode. Aby "oszukać" assembler wystarczy dać przed kwadratowym nawiasem otwierającym '[' znak '+'.

 lda [2+4]     ; lda [6]
 lda +[2+4]    ; lda 6

Unary operators:

+  Plus (does nothing)
-  Minus (changes sign)
~  Bitwise not (complements all bits)
!  Logical not (changes true to false and vice versa)
<  Low (extracts low byte)
>  High (extracts high byte)
^  High 24bit (extracts high byte)
=  Extracts memory bank
:  Extracts global variable value

861

(26 odpowiedzi, napisanych Programowanie - 8 bit)

w G2F można wyłączyć wiersze (z prawej strony ekranu ustawić wartości na 0) wtedy zostanie zapisany krótszy MIC

862

(12 odpowiedzi, napisanych Miejsca w sieci)

http://www.zabytkiinformatyki.edu.pl/in … ;Itemid=69

863

(259 odpowiedzi, napisanych Fabryka - 8bit)

a jak wygląda kwestia detekcji kolizji? jakoś wspomagana czy bez wspomagania?

864

(259 odpowiedzi, napisanych Fabryka - 8bit)

xxl napisał/a:

estowo funkcja blittera - zapisanie calego ekranu gr.8 czyli 320x192 pixele stala wartoscia to 193 cykle 6502...

pixele czy całe bajty ?

193 cykle 6502 zajmuje bliterrowi postawienie 320x192 = 61440 pikseli czy postawienie 7680 bajtów odpowiadających tym pikselom ?

865

(259 odpowiedzi, napisanych Fabryka - 8bit)

co w takim razie daje takie przyspieszenie, bo jak wkładam np. kart AtariMax to nie mam przyspieszenia

standardowy kart z nie standardową zawartością ?

konkretniej, bo jak ma być to zgaduj zgadula to równie dobrze może to być kogel mogel

866

(125 odpowiedzi, napisanych Fabryka - 8bit)

bloki co $400 bajtów

 opt h+
 org $4000

 .pages $40

  .align $400

  kod.............

 .align $400

  kod .............

 ...
 ...
 ...

 .endpg

własny nagłówek $ffff,start,end-1+3   (3 bajty napisu 'XXL'), można dać dowolne informacje, należy prawidłowo podać nagłówek w stylu Atari DOS jeśli ma być to ładowane przez Atari DOS, jeśli mamy własny loader możemy postąpić wg uznania

    opt h-
    org $4000

.local    block0
    org [a($ffff, block0, block0+.len(block0)-1+3), c'XXL'],*
    
    lda #0
.endl

    org $4400

.local    block1
    org [a($ffff, block1, block1+.len(block1)-1+3), c'XXL'],*

    nop

.endl

867

(11 odpowiedzi, napisanych Software, Gry - 8bit)

masz na myśli te gry dla dzieci we flashu itp. na onecie, ubieranki są ulubionym zajęciem poza oglądaniem bajek

868

(125 odpowiedzi, napisanych Fabryka - 8bit)

wystarczy usunąć znak #

  lda <(LINES-1)*40

i będzie OK, jest to zgodne z konwencją QA

869

(644 odpowiedzi, napisanych Programowanie - 8 bit)

nazwy nielegali podpatrywałem w Atari800Win, stąd Mads ich używa, można wstawić dodatkowe nazwy mnemoników jako alternatywę

870

(22 odpowiedzi, napisanych Zloty)

prezentacja prac będzie w 3d czy 2d ? bo teraz 3d jest w modzie, może Pinek dokona konwersji do 3d :D

871

(24 odpowiedzi, napisanych Software, Gry - 8bit)

Super Packer też może pomóc

872

(4 odpowiedzi, napisanych Miejsca w sieci)

ostatnio coś podobnego udało mi się uzyskać w Notepad++ który jest lżejszy aniżeli Visual Studio czy WUDSN

plugin Explorer z lewej i plugin FunctionList z prawej

plugin Explorer można zassać przy pomocy wbudowanego menadżera, FunctionList nie jest na tej liście z powodu problematyczności, w załączniku ZIP z plikami i instrukcją instalacji, osobno DLL który jest stabilny

dodatkowo FunctionListRules.xml dla MADS-a, pokazuje listę dla .PROC, .LOCAL, .MACRO, .ENUM, .STRUCT

873

(125 odpowiedzi, napisanych Fabryka - 8bit)

nowy mads 1.9.4 już jest http://mads.atari8.info

najważniejsza zmiana to możliwość nazywania parametrów makr, czyli większa przejrzystość kodu, łatwiej zrozumieć co makro wyczynia z parametrami

.macro SetColor val,reg
 lda :val
 sta :reg
.endm

.macro SetColor2 (arg1, arg2)
 lda #:arg1
 sta arg2
.endm

p.s.
w planach napisanie nowego kodu obsługującego pętle .REPT tak aby można było je zagnieżdżać, aktualnie aby to obejść trzeba posiłkować się makrami

874

(73 odpowiedzi, napisanych Fabryka - 8bit)

a dlaczego nie działa z komputerem Pinokia ?

875

(125 odpowiedzi, napisanych Fabryka - 8bit)

może dodam jeszcze dla Tych którzy są oburzeni potrzebą użycia znaku $ dla oznaczenia wartości Hex jest alternatywa, mogą użyć 0x, Candle z lubością tego używa

dla Tych którzy są oburzeni potrzebą kończenia bloku .LOCAL czy innego podobnego tworu odpowiednią dyrektywą .ENDL mogą użyć uniwersalnej wersji i o jeden znak krótszej .END

mogą także użyć klamr znanych z C { }, byle tylko te klamry były w osobnych wierszach

.local name
{
 nop 
 nop
}

czyli dla każdego coś miłego ;)