kategoria: Asembler
[#61] Re: ASM68k

@HOŁDYS, post #59

Biing angielski w wersji na AGA i ECS, gra używa tych samych danych tekstowych dla obu wersji, jedynie grafika jest inna. No i muszę jeszcze skonwertować grafikę na wersję angielską, bo tak to reszta tekstów jest już przetłumaczona.
[#62] Re: ASM68k

@alekc, post #57

Sachy zrobił nowe cracktro, jest dostępne na stronie WT, razem z crackiem.
[#63] Re: ASM68k

@Don_Adan, post #62

@Don Adan - Masz na myśli tą sronę http://wt.exotica.org.uk/ bo u mnie widać tylko napis aero.

[#64] Re: ASM68k

@Don_Adan, post #61

No to pieknie !!! na pewno duzo ludzi odpali ta gre bo niemiecki ograniczal miodnosc tych golych panienek :P

[#65] Re: ASM68k

@asman, post #63

Serwer Buzzowi wysiadł i teraz nie działa. Zdaje się, że informacja jest na stronie http://www.exotica.org.uk. Tak więc tylko kto był szybki ten zdążył zobaczyć to cracktro, jest niby prawie pełny mirror strony WT u znajomego Niemca, ale trzeba go poprawić bo u niego nazwy plików mają tylko małe litery. Co do cracktra to okazało się, że pierwsza wersja nie działa pod OS 3+, ale to raczej moja wina bo chciałem, żeby cracktro było w pełni system friendly, i tak ustawiłem struktury przerwań, że na jednych wersjach OS to działa, a na innych nie. Choć podejrzewam, że może to być też bug w OS-ie, ale czekam na potwierdzenie tego od znajomego Francuza.
[#66] Re: ASM68k

@Don_Adan, post #65

Dzięki za info. Teraz i tak u mnie bardzo krucho z czasem. Poczekam na wersję działającą pod 0S3+.

[#67] Re: ASM68k

@asman, post #66

Serwer już działa, cracktro poprawione, u mnie działało też pod OS 3.1.
[#68] Re: ASM68k

@Don_Adan, post #67

Witam,

Prześlij mi te cracktro na mejla, bo ja się zagubiłem na tej stronie ;).
Dzięki

Pozdrawiam

[#69] Re: ASM68k

@asman, post #26

Dopiero natrafiłem na ten wątek.

Parę miesięcy temu podesłałem MiniAT całe archiwum coderskie Ostera/SAF i DXP. Były tam źródłówki dema, intra (chyba tego):

http://aminet.net/search?query=safintro

i różnych efektów (część nie zdążyła być wkorzystana, przed porzuceniem sceny). Procedury c2p na 68000/020/040 (np. Dalthon/Joker korzystał w swoich późniejszych intrach z jego procki). Jakieś inne przykłady. Oster pisał systemowo. Jak ktoś chce to mogę to podesłać. Szkoda aby leżały i się kisiły jak są ludzie którzy chcą się uczyć asemblera na przykładach. Może ktoś jeszcze zrobi jakieś fajne intro na A500? Kto wie...

[#70] Re: ASM68k

@Deftronic/..., post #69

Deftronic, archiwum, które mi podesłałeś niestety przepadło wraz z reinstalacją windowsów, gdybyś był tak uprzejmy, to czy podesłałbyś mi to archiwum jeszcze raz na adres w profilu. Dzięki.

[#71] Re: ASM68k

@Minniat, post #70

Jasne, nie ma problemu. Jutro siądę do Amigi, zgram stuff i podeślę. :)

[#72] Re: ASM68k

@Deftronic/..., post #71

Witam

Ja też poproszę, jeśli to nie problem. Dziękuje.

Pozdrawiam

[#73] Re: ASM68k

@Deftronic/..., post #71

Deftronic jesli mozesz wyslij mi to LHA na Amiga1240@o2.pl

jesli kod jest dobrze komentowany wiele mozna sie poduczyc z niego

[#74] Re: ASM68k

@asman, post #68

A mi się wydawało, że nawigacja na stronie jest dość prosta, szukaj na podstronie Files Page, gra to Okręty, ale podeślę Tobie też cracktro mailem.
[#75] Re: ASM68k

@Don_Adan, post #74

Panowie, będzie mały poślizg z tym stuffem. Nie odpaliła mi dzisiaj moja A4000T. :( Po paru próbach, przerzuciłem się na A4000D. Muszę jeszcze przełożyć kartę Deneb, zainstalować i będzie git. Archiwum podeślę oczywiście wszystkim zainteresowanym. Jest to kompletne archiwum, czyli wystarczy zrobić przypisy do katalogów i można sobie kompilować intra, czy demo, czy też same efekty w różnych rozdziałkach (2x2, 1x1, 2x1 itp.), z różnymi teksturami, obiektami, procedurami C2P (68000/020/040), modułami - pełna zabawa. Jest parę zródłówek z opisem i komentarzem (były pisane jako przykłady dla innych koderów), jakieś utilki napisane przez Ostera. Reasumując - może dziś wieczorem dostaniecie archiwum, a jak nie to jutro.

[#76] Re: ASM68k

@Deftronic/..., post #75

Można też prosić w miarę możliwości później? ;)

[#77] Re: ASM68k

@Deftronic/..., post #75

Deftronic to naprawde moze byc skarbnica wiedzy dla programistow chcacych zostac koderami..ja sobie czytam "zrob wlasne demo" bardzo dobra kasiazka opisujaca od podszewki w ASMie architektore amigi i jej specyficzne uklady.
Jesli bys mial KEbaby tez bym byl chetny ..nie ukrywam ze lenistwo po robocie i brak czasu moje klepanie ogranicza do minimum.

[#78] Re: ASM68k

@HOŁDYS, post #77

Kebaby zarówno papierowe jak i dyskowe są na retroreaders.makii.pl

[#79] Re: ASM68k

@Shoonay, post #78

**********************
* INTERPOLATION BTWEEN 2 COORDINATES. *
* SHOWS HOW TO DISPLAY BOBS ON YOUR SCREEN. *
* CODED BY OSTER FOR R.G. *
***************************************************************

WAITBLIT MACRO ;
btst #14,2(a6) ;
bne.b *-6 ;
ENDM ;

SYSTEMOFF
move.l 4.w,a6 ;
jsr -132(a6) ;
lea $dff000,a6 ;
move.w $1c(a6),d0 ;
or.w #$8000,d0 ;
move.w d0,-(sp) ;
move.w #$7fff,$9a(a6) ;
move.w #$7fff,$96(a6) ;
clr.l $80(a6) ;
clr.l $100(a6) ;
move.w #$87c0,$96(a6) ;
bsr MAIN ;
move.w (sp)+,$9a(a6) ;
move.l 4.w,a6 ;
jsr -138(a6) ;
moveq #0,d0 ;
rts ;

MAIN lea cop(pc),a0 ;
move.l a0,$80(a6) ;
clr.w $88(a6) ;

;------------------------------------------------------------------
move.w #999,d7 ;1000 par liczb wsp. X i Y
lea points,a0 ;miejsce na powyzsze liczby
move.l #$563f3457,d0 ;seed
move.l #$63324626,d1 ;

RANDOM move.l d0,d2 ;
move.l d1,d3 ;
rol.l #7,d2 ;
rol.l #7,d3 ;
add.l d2,d0 ;
add.l d3,d1 ;
divu.w d2,d0 ;
divu.w d3,d1 ;
eor.l d2,d0 ;
eor.l d3,d1 ;

move.w d0,d2 ;x
move.w d1,d3 ;y
and.w #$1FF,d2 ;
and.w #$fF,d3 ;
cmp.w #303,d2 ;
ble.b RAN1 ;
sub.w #303,d2 ;
RAN1 cmp.w #238,d3 ;
ble.b RAN2 ;
sub.w #238,d3 ;
RAN2 move.w d2,(a0)+ ;wpisywanie wart. X do tablicy POINTS
move.w d3,(a0)+ ;wpisywanie wart. Y do tablicy POINTS
dbf d7,RANDOM ;
;------------------------------------------------------------------
moveq #64,d7 ;steps
move.l planes,a0 ;ekran1 ___ DOUBLE BUFFER
move.l planes+4,a1 ;ekran2 /

;--- Wyczyszczenie ekranu /256 linii/ ---
INTER waitblit ;
move.l a0,$54(a6) ;kanal D bliitera na ekran1
move.l #$01000000,$40(a6) ;???
clr.w $66(a6) ;modulo D
move.w #256*64+32,$58(a6) ;BLTSIZE ze wzoru: DY*64+DX,dy wys.dx szer
; w slowach
waitblit ;ciekawe po co?
;---
move.w #20,d6 ;ilosc bob'ow -1, bo liczymy od 0
lea points,a2 ;pobranie x
lea points+100,a3 ;pobranie y ???

PLOT move.w (a2)+,d0 ;x1
move.w (a2)+,d1 ;y1
move.w (a3)+,d2 ;x2
move.w (a3)+,d3 ;y2
sub.w d0,d2 ;x2=x1-x2
sub.w d1,d3 ;y2=y1-y2

muls.w d7,d2 ;x2=#64*x2
muls.w d7,d3 ;y2=#64*y2
asr.w #6,d2 ;
asr.w #6,d3 ;

add.w d0,d2 ;x2=x1+x2
add.w d1,d3 ;y2=y1+y2

;------- procedura kopiujaca BOBA na ekran o wsp. X(d2),y(d3) ------------

lsl.w #6,d3 ;pomnozenie wart.Y przez ilosc bajtow w lini (64)
move.w d2,d4 ;przechowanie X
lsr.w #3,d2 ;X/8, oblicznie bajtu w ktorym zawiera sie wsp.X
and.w #$fffe,d2 ;skasowanie najmlodszego bitu (parz.adresy)
add.w d2,d3 ;adres boba (offset na ekranie)

and.w #%1111,d4 ;pozostawienie 4 najmlodszych bitow
ror.w #4,d4 ;4 pierwsze bity jako ostatnie
or.w #$0dfc,d4 ;zmontowanie bltcon0, minterm FC + kanaly A,B i D

move.l a0,a4 ;adres bitplanu
add.w d3,a4 ;pelny offset boba na ekranie
lea bobmask1,a5 ;adres danych boba

btst #14,2(a6)
bne.b *-6

move.w d4, $40(a6) ;BLTCON0
move.w #0, $42(a6) ;BLTCON1
move.l #-1, $44(a6) ;maski w tym przypadku nie sa potrzebne
move.l a4, $4c(a6) ;adres dla zrodla B na ekranie
move.l a5, $50(a6) ;adres dla zrodla A danych w pamieci
move.l a4, $54(a6) ;adres dla celu D na ekranie.Tu trafi A OR B
move.w #64-4,$62(a6) ;modulo B, szer. ekranu w bajtach - szer boba
move.w #0, $64(a6) ;modulo A, 0 ciagle pobieranie danych
move.w #64-4,$66(a6) ;modulo D
move.w #25*64+2,$58(a6) ;bltsize ze wzoru: DY*64+DX,dy wys.dx szer
; w slowach
dbf d6,PLOT

; Bob ma w rzeczywistosci rozmiar 16 pixeli czyli 1 slowo.
; W BLTSIZE sa 2 slowa.Wynika to z faktu,ze 1 slowo po przerolowaniu moze
; zajmowac obszar 2 slow. ,np:
; %1111111111111111.0000000000000000
; po przerolowaniu w prawo o 5 miejsc:
; %0000011111111111.1111100000000000
; przy rolowaniu nalezy brac serokosc w slowach+1
; W danych boba po kazdej lini(w tym przypadku po kazdym slowie),wystepuje
; puste slowo aby szerokosc zgadzala sie z BLTSIZE.

;---------------------------------------------

WAITVBL move.l 4(a6),d0 ;
and.l #$0001ff00,d0 ;
lsr.l #8,d0 ;
cmp.w #311,d0 ;
bne.b waitvbl ;

exg.l a0,a1 ;
move.l a1,d0 ;

lea cop(pc),a2 ;wymiana ekranow
move.w d0,6(a2) ;tzn. podwojny bufor na ekran
swap d0 ;
move.w d0,2(a2) ;
move.l a2,$80(a6) ;
clr.w $88(a6) ;

dbf d7,INTER ;ok

wait btst #6,$bfe001
; bne wait
rts

COP dc.w $00e0,$0000 ;
dc.w $00e2,$0000 ;
dc.w $180,0 ;
dc.w $182,$fff ;
dc.w $8e,$2c81 ;
dc.w $90,$2cc1 ;
dc.w $92,$38 ;
dc.w $94,$d0 ;
dc.w $108,24 ;
dc.w $10a,24 ;
dc.w $1fc,0 ;
dc.w $100,$1200 ;
dc.w $102,0,$104,0 ;
dc.l $fffffffe ;

PLANE1 blk.b 64*256,0 ;
PLANE2 blk.b 64*256,0 ;
PLANES dc.l PLANE1,PLANE2 ;
POINTS blk.l 1000 ;

bobmask1
dc.w %0000000000000000,$0 ;1
dc.w %0000001111100000,$0 ;2
dc.w %0000111111111000,$0 ;3
dc.w %0001111111111100,$0 ;4
dc.w %0011111111111110,$0 ;5
dc.w %0011111000111110,$0 ;6
dc.w %0111110000011111,$0 ;7
dc.w %0111100000001111,$0 ;8
dc.w %0111100000001111,$0 ;9
dc.w %0111100000001111,$0 ;10
dc.w %0111110000001111,$0 ;11
dc.w %0011111000011110,$0 ;12
dc.w %0011111111111110,$0 ;13
dc.w %0001111111111100,$0 ;14
dc.w %0000111111111000,$0 ;15
dc.w %0000001111100000,$0 ;16
dc.w %0000001111100000,$0 ;17
dc.w %0000001111100000,$0 ;18
dc.w %0000001111100000,$0 ;19
dc.w %0000001111100000,$0 ;20
dc.w %0000001111100000,$0 ;21
dc.w %0000011111110000,$0 ;22
dc.w %0000111111111000,$0 ;23
dc.w %1111111111111111,$0 ;24
dc.w %1111111111111111,$0 ;25

[#80] Re: ASM68k

@Deftronic/..., post #79

Hi Dalton !!!

Timi mi mówiî, ţe zainteresowaîeő się tym ditheringiem
w intrze na The Party V (chyba wiesz o które mi chodzi).
Caîa sprawa jest bardzo prosta jak większoőç koderskich
sztuczek.
Dithering jaki tam wykorzystaîem jest znany w programach
graficznych jako ORDERED lub czasami CLUSTER DOT 2x2.
Na czym to polega ? To pozwala na rysowanie w 64 odcieniach
na 16-to kolorowym ekranie.
Na poczćtku trzeba sobie zbudowaç maîć tablicę:

| 3 2 |
T=| | (moţesz eksperymentowaç z tć tablicć, ale
| 0 1 | maksymalna wartoőç to 3)

Zakîadam, ţe chcesz postawiç pixel o wspóîrzędnych (x,y) i
kolorze c, w jednym z 64 odcieni szaroőci [c:<0,63>].
Caîa operacja polega na obliczeniu nowego koloru c2, który
będzie się zawieraî w 16 odcieniach szaroőci [c2:<0,15>].
Obliczenia sć bardzo proste . Jako t(m,n) rozumiemy zawartoőç
tablicy T w kulumnie (m) i wierszu (n).

c2=(c+t(x and 1,y and 1))/4
if c2>15 then c2=15
plot x,y,c2

Dla lepszego zrozumienia przedstawiam
programik który moţna wpisaç pod Amosem (mam nadzieję, ţe
posiadasz coő takiego):

screen open 0,320,256,16,0 : curs off : flash off : cls0
palette $000,$111,$222,$333,$444,$555,$666,$777,$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
dim t(2,2)
t(0,0)=3 : t(1,0)=2
t(0,1)=0 : t(1,1)=1

for x=0 to 319
for y=0 to 255

c=y/4

c2=(c+t(x and 1,y and 1))/4
if c2>15 then c2=15

plot x,y,c2

next y
nextx

To tylko idea.Teraz czas na asemblerowć optymalizację.
Powinno się ograniczyç zakres kolorów od 0 do 63, do zakresu
od 0 do 60 , ţeby dodawanie elementu z tablicy nie
powodowaîo przekroczenia zakresu.Znika wtedy ten (IF) który
sprawdza, czy nie przekroczono zakresu.
Dane wejőciowe do procedury to tablica zawierajćca caîy
ekran w postaci CHUNKY (to znaczy, ţe indeksy kolorów
unieszczone sć w pamięci bajt za bajtem, a nie w postaci
bitplanów).
Kaţdy kolor powinien naleţeç do zakresu od 0 do 60.
Będziemy przerabiaç po 4 pixele na raz.Dîugoőç jednej lini
obrazka to 320 bajtów.

lea obraz,a0
move.l a0,a1

move.l #$0f0f0f0f,d7
move.l #$03020302,d6 ;to jest górna poîówka
;tablicy T powtórzona w 2 razy
move.l #$00010001,d5 ;to jest dolna poîówka
;tablicy T powtórzona w 2 razy
moveq #127,d4
.loopy
rept 320/(4*4) ;linia parzysta (dodajemy d6)
movem.l (a0)+,d0/d1/d2/d3
add.l d6,d0
add.l d6,d1
add.l d6,d2
add.l d6,d3
lsr.l #2,d0
lsr.l #2,d1
lsr.l #2,d2
lsr.l #2,d3
and.l d7,d0
and.l d7,d1
and.l d7,d2
and.l d7,d3
move.l d0,(a1)+
move.l d1,(a1)+
move.l d2,(a1)+
move.l d3,(a1)+
endr

rept 320/(4*4) ;linia nieparzysta (dodajemy d5)
movem.l (a0)+,d0/d1/d2/d3
add.l d5,d0
add.l d5,d1
add.l d5,d2
add.l d5,d3
lsr.l #2,d0
lsr.l #2,d1
lsr.l #2,d2
lsr.l #2,d3
and.l d7,d0
and.l d7,d1
and.l d7,d2
and.l d7,d3
move.l d0,(a1)+
move.l d1,(a1)+
move.l d2,(a1)+
move.l d3,(a1)+
endr

dbf d5,.loopy
rts

Po potraktowaniu obrazka takć procedurkć otrzymujemy dane
16-to kolorowe a następnie zamieniamy obrazek na bitplany za
pomocć procedury CHUNKY TO PLANNAR.
Nie trzeba oczywiőcie ditherowaç obrazka osobno, ale
dithering powinien byç robiony podczas pobierania danych do
procedury CHUNKY TO PLANNAR.Na dysku znajdzesz
chunky to plannar z ditheringiem oraz procedurę gorauda z
praktycznym wykoţystaniem ditheringu.
Jedyna wada takiego rozwićzania to to,ţe dziaîa tylko na
danych w odcieniach jakiegoő koloru.Moţna napisaç procedurę,
która będzie ditherowaç z 256 odcieni na 16, wtedy tablica T
ma postaç,np:

| 15 14 13 12 |
| |
| 04 03 02 11 |
T=| | (tu teţ trzeba eksperymentowaç,
| 05 00 01 10 | ţeby îadnie wyglćdaîo)
| |
| 06 07 08 09 |

Wtedy w algorytmie zamienamy t=(x and 1,y and 1) na
t=(x and %1111,y and %1111), dzelimy przez 16 zamiast przez
4, zakres danych wejőciowy ograniczamy od 0 do 240.
To wszystko.Cieszę się, ţe mogîem Ci pomóc.To sć moje
oryginalne rozwićzania, więc lepiej, ţeby nikt inny oprócz
Ciebie z tego nie korzystaî.

OSTER

[#81] Re: ASM68k

@Deftronic/..., post #80

Sukces panowie! Udało mi się w końcu jedną Ami uruchomić :). Była zabawa na pół dnia, ale... fajna zabawa. :)

Wrzuciłem na szybko dwa przykłady a teraz zabieram się za wysyłanie całego archiwum. Z tego co zauważyłem są nawet zrobiony przypisy do katalogu asm.
W razie jakiś problemów z "uruchomieniem" archiwum walcie śmiało - w miarę możliwości postaram się pomóc.

Trzeba pamietać o tym, że to są procki z lat 1994-1996 (Oster miał wtedy 18 lat :) ). gotowe intra mogą być spakowane (i raczej są, bo nie pamiętam abym je przepakowywał) cruncherami, które mogą się wykładać na 060.

[#82] Re: ASM68k

@HOŁDYS, post #1

Na RetroReaders pojawiła się książka która na pewno zainteresuje programistów amisi klasycznej:
AMIGA Opis Bibliotek: graphics.library, layers.library

[#83] Re: ASM68k

@HOŁDYS, post #1

[#84] Re: ASM68k

@Shoonay, post #82

Jeszcze mam do zeskanowania zostało mi W. Czyż "Rodzina M680xx" i G. Miechowski "Wademekum programisty AMIGA" Resztę podręczników jakie mam dotyczy już zx spectrum i zagadnień ogólnie komputerowych.
Mam nadzieje że "Biblioteki ..." się komuś przydadzą.

[#85] Re: ASM68k

@Shoonay, post #83

Ups, dopiero co zauważyłem, link mi się coś nie wyświetla w powyższym poście...

O to mi chodziło:
http://www.youtube.com/user/Dave4Slash#g/c/24A96ADA54E75109



@jimiche: jasne, poprosimy, skanów nigdy za wiele ;)



Ostatnia modyfikacja: 11.03.2011 17:36:55
[#86] Re: ASM68k

@Shoonay, post #85

Jest ktos w stanie wymienic wszystkie tytuly polskojezyczne zwiazane z asm68k i amiga klasyczna?

Mozna by bylo sporzadzic taka podreczna biblioteke dla zainteresowanych kodowaniem pod klasyki.
Na EAB'ie maja tego tony, tylko wszystko po ang. rzecz jasna a nie ukrywam, ze czytanie literatury technicznej ze zrozumieniem po angielsku to juz masochizm.
[#87] Re: ASM68k

@HOŁDYS, post #1

Kolejne dwie ciekawe książki dla amigowego programisty klasycznego na RetroReaders:
Vademecum Programisty Amiga Tom 1
Vademecum Programisty Amiga Tom 2

[#88] Re: ASM68k

@Deftronic/..., post #81

Witam.

Jeśli to możliwe to też chciałbym dostać te źródła Ostera.

zdr0wko
at0m^Lamers
[#89] Re: ASM68k

@at0m, post #88

Shoonay ma na swojej .......www :P OK
[#90] Re: ASM68k

@at0m, post #88

Cześć Atom, kawał czasu. :)

Spoko, podeślę razem z jego utilkami.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem