Manchmal will man verschiedene Fonts für diverse Gadgets verwenden, z.B. weil man in einem Listview lieber alles nett untereinander gelistet haben will und man sich mit Charakter-Spalten begnügt.
Dann hilft der einfache Trick, den IntuiFont zu wechseln während des Erstellens der Gadget-List:
ttext$=" Evil Midan, tyrant of the highest order, lies hidden deep within his underground lair. Allied security forces demand"
ttext$+" his reign to cease. one man is needed. that man is YOU. "
Repeat
ev=Event ;we don't wait...
Delay_1 ;...here we do!
Gosub winscroll
If ev=$2 Then Gosub refwin
Es scheint immer mal wieder die Frage aufzutauchen, wie man ein Interlace-Display aufbaut. Dabei steht es doch in der Anleitung.
Ok, die Anleitung ist nicht immer fehlerfrei und AGA macht gelegentlich einen Strich durch die Rechnung, aber was soll's.
Interlace erfordert normalerweise eine besondere Behandlung der Copperliste, aus der das Display aufgebaut ist.
Da das Display nur noch halb so schnell aufgebaut wird (immer erst ein Halbbild, gerade, dann das andere, ungerade), und der Vblank Interrupt dies auch bei jedem Wechsel anzeigt, können wir dies benutzen, um das jeweilige Halbbild anzuzeigen. Damit das funktioniert, muß aber das angezeigte Halbbild natürlich jede zweite Zeile überspringen.
Das erreichen wir, indem wir die Zeilenbreite (Modulo, was übersprungen wird, um die nächste Zeile anzusteuern), die das Display (Slice) erwartet, verdoppeln. Die unnütze nächste Zeile verschwindet quasi rechts von der aktuellen im Nichts.
Slice 0,44,`1,`2 / 2,$fff8,`3,8,32,`1+`1,`1+`1
Außerdem müssen wir das LACE Bit setzen in einem Spezialregister.
Dafür hat Blitz2 eine Abkürzung eingebaut: SetBplcon0.
Hier ist der Sourcecode im Beispiel. Macro benutzt, einfach mal so.
Code:
Macro laceblitz ;w, h, d
BitMap0,`1,`2,`3
VWait50
SetBPLCON0 4 ;set lace bit!
BLITZ
;$fff9 for HiRes
Slice0,44,`1,`2 / 2,$fff8,`3,8,32,`1+`1,`1+`1
SetInt5 ;VBI
;If Peek.w($dff004)<0 Show 0,0,0 Else Show 0,0,1 ;doesn't work on AGA??
lfr.b=1-lfr ;swap lace frame#
Show 0,0,lfr ;lace frame# becomes y offset to show
kann man amiblitz etwas abspecken, das es nur sagen wir mal 3-4 mb ram braucht
hintergrund ist der:
hab mir nen a500 geholt und nen ram-hack gemacht
hab nun 1mb chip und 1,5 slow
will nun etwas weiter aufpeppen, hab mich wohl für die terriblefire entschieden
dummerweise hat die tf nur 4mb fast
(die aka500+ hätte zwar 8, aber zu wenig leistung im speed,
den anderen kram brauch ich nich, nen kick3.1 hab ich eingebaut
und nen ide-adapter is an der tf auch drann)
mein endziel ist es, games zu coden die so ein system
auch benutzen, also trotz nur ecs/ocs aber 30/40 mhz
dafür hab ich ins purebasic amiga eine c2p engine eingebaut
die 6 bitplanes hat (auf echter hardware nicht getestet)
und hab noch eine für 4 bpl
unter amiblitz würd ich die normalen ecs-screen mit display-library
benutzen eventuell mit nen paar coppertrix
und das ganze blitting in 32 farben per cpu aus dem fastram
damit wäre so ne configuration auch mal benutzt
nun das problem:
im emu mit 2mb chip und 8mb fast nimmt amiblitz 7mb fast
das würde dann wohl auf meinem 1+5.5 mb nicht laufen
...hab auch irgendwie nicht so den drang des budget zu erhöhen
um mir ne tf mit 64mb ram zu holen, soll wohl dann auch
nen besseres netzteil brauchen und so weiter...
hab da mal ne allgemeine frage zu amiga grafikkarten
werden die auflösungen 320x256 oder eben 320x240 in 8 bit von allen
unterstützt?
und
was ist die kleineste auflösung, die alle gfx karten haben
zu 256 farben?
---------
die sache ist, habe schon einiges an grafiken und eben auch handgepixeltes
ist/war für amiga aga 320x256.
ein "hochrechnen" und /oder nochmal nachpixeln damits auf 640x480
toll aussieht ist nicht, dafür ists zu viel
würde halt gern die beschleunigung der grafikkarte nutzen und kann mir
das ewige hin und hergefrickel mit den farben und gemache, welche sachen mit in die sprites
müssen, was wird ab wo geblittet , nur um das halbwegs beste rauszuholen, alles sparen
Multiformat AHI Player (MP3, AIFF, WAV, MOD, MAUD, 8SVX) von Thilo Köhler
Dies ist ein sehr kleiner Player für Audiodateien.
Er ist so konzipiert, dass er sich in die Defizite der unterstützten Audioformate einfügt.
Er öffnet keine große und teure GUI, sondern spielt die Audiodatei nur schnell ab.
Er hört auf zu spielen, wenn Sie das kleine Fenster schließen, das den Titel und die laufende Zeit anzeigt.
Benötigt wird ein:
- Amiga mit 4MB Fast-RAM.
- OS3.0+
- AHI V4+
dummy.l = dos_settaskpri {2}
succ.l = True
If NumPars>0 Then filename.s = Par$(1)
If ahi_open{#ahi_unit} ; open ahi.device
If ahi_stream_open{filename.s,#buffersize}
While succ=True
succ = ahi_stream_do{}
signals.l = Wait_(-1)
If (signals & #SIGBREAKF_CTRL_C) Then succ=False
Wend
End If
Delay_ 2
ahi_close {}
End If
ffa_free{}
End
If dos_numpars{}>0 Then filename.s = dos_nextarg{};:Else error {"no cli args !"}
Repeat
option.s = UCase$(dos_nextarg{})
If Peek.b(&option.s) = @"-" Then option.s = Right$(option.s,Len(otpion.s)-1)
Select option.s
Case "NOGUI"
nogui.l = True
Case "SPEED"
speed.l = Vallong(dos_nextarg{})
Case "OFFSET"
msoffset.l = Vallong(dos_nextarg{})
If msoffset<0 Then msoffset=0
Case "INFO"
infos.l = True
Case "AHIUNIT"
ahiunit = Vallong(dos_nextarg{})
Case "BUFFERSIZE"
buffersize = Vallong(dos_nextarg{})
Case "PRI"
pri.l = Vallong(dos_nextarg{})
End Select
Until option.s = ""
If nogui=False Then infos=False
If buffersize<10 Then buffersize=10
If buffersize>10000 Then buffersize=10000
If speed<50 Then speed=50
If speed>200 Then speed=200
If ahiunit>3 OR ahiunit<0 Then ahiunit=0
If filename.s><"?" AND filename.s><"-h"
dos.l = ffa_read {filename.s}
If dos.l><-1
fil.s = file_name {dos} ; read file properties
channels.l = ffa_channels {dos} : If channels><1 AND channels><2 Then channels = 2
samplerate.l = ffa_samplerate {dos}
bits.l = ffa_bits {dos} : If bits><16 AND bits><8 Then bits = 16
todo.l = ffa_blength {dos}
frsize.l = ffa_framesize {dos}
filename.s = file_fullname {dos}
ahibuffersize.l = buffersize
buffersize.l = buffersize * samplerate / 1000
buffersize * channels * Int(bits/2)
If buffersize<256 Then buffersize=256
If nogui=False
*scr.Screen = Peek.l(Addr Screen(0))
titleheight.l = *scr\WBorTop + *scr\Font\ta_YSize + 1
pixwidth.l = Min(TextLength_ (*scr\RastPort,&b.s,Peek.l(&b.s-4)) +64,*scr\Width-32)
DefaultIDCMP #IDCMP_CLOSEWINDOW|#IDCMP_ACTIVEWINDOW
Window 0,(*scr\Width-pixwidth)/2,*scr\Height/2-6,pixwidth,titleheight,$E,b.s,1,0
End If
dummy.l = dos_settaskpri {pri}
If ahi_open{ahiunit} ; open ahi.device
If ahi_stream_open{filename.s,ahibuffersize,speed}
While succ=True
If succ Then succ = ahi_stream_do{}
sectime.l = ahi_stream_timeindex{} / samplerate
mintime.l = sectime / 60
sectime.l = sectime MOD 60
procent.l = ahi_stream_timeindex{} / samplerate * 100 / totaltime
a.s = Str$(mintime)+":"+Str$(sectime)+tim.s
If a.s >< b.s
If nogui=False
;If locklayer{0}
SetWindowTitles_ Peek.l(Addr Window(0)),&a.s,0
; unlocklayer{}
;End If
End If
If infos
Format ""
c.s = Str$(procent)+"% - "
Format "00"
c.s = Str$(mintime)+":"+Str$(sectime)
NPrint Chr$(11)+"playing ",c.s,tim.s
End If
b.s = a.s
End If
signals.l = Wait_(-1)
If (signals & #SIGBREAKF_CTRL_C) Then succ=False
Repeat ; check for closewindow event
idcmp.l=Event
If idcmp = #IDCMP_CLOSEWINDOW Then succ=False
Until idcmp = 0
Wend
End If
Delay_ 5
ahi_close {}
End If
ffa_close {dos}
End If
Else
NPrint "Usage: TKPlayer [?] [<filename>] [ahiunit ...] [buffersize ...] [info] [nogui] [speed ...] [offset ...] [pri ...]"
NPrint " "
NPrint "Parameters:"
NPrint " filename - valid DOS filename with path"
NPrint " ahiunit - 0..3, unit of ahi.device"
NPrint " buffersize - buffersize in milliseconds, default is 250"
NPrint " speed - playback speed in %, default is 100"
NPrint " offset - offset from where to start playback in ms, default is 0"
NPrint " info - display infos in shell"
NPrint " nogui - do not open playback window"
NPrint " pri - set task priority, default is 2"
NPrint " ? - display this help"
NPrint " "
NPrint "Example: TKPlayer Sys:Music/mymusic.mp3 ahiunit 1 buffersize 500 nogui speed 75 offset 1000"
NPrint "This will play the file \\22Sys:Music/mymusic.mp3\\22 on ahi unit 1 with a buffersize of 0,5 secs, at 75% speed, from 1sec after the beginning, showing no gui window"
NPrint " "
End If