Scusate, ho sbagliato a postare il messaggio, qusto riguardava la
discussione precedente
> Ho scaricato la libreria Ukeyb, e adesso va alla perfezione, anche se a
> volte non mi funziona più la tastiera...
ahhaha brillante :-) succede che librerie simili lascino le cose a metà,
e tu rimani senza interrupt della tastiera. Controlla bene di chiamare il
codice per disattivare la gestione della tastiera da parte della libreria
(dovrebbe esserci, o almeno spero), e che questo venga chiamato in ogni
punto in cui il programma può terminare (dovrebbe essercene solo uno, ma
non si sa mai)
Ora non ricordo esattamente, ma c'è qualcosa tipo ExitProcedure che ti
permette di settare una funzione che viene richiamata automaticamente
quando chiudi il programma. Potresti ripristinare li l'interrupt
originale, ed essere sicuro che la tastiera torni com'era prima.
--
Dreadnaut - http://dreadnaut.altervista.org/
(Life would be easier if I had the source code)
Una domanda banale. Usi funzioni del pascal ( della unit Graph ) o
scrivi direttamente in momoria?
> E' possibile aumentare la velocità di un programma in pascal, o esiste
> qualche librearia grafica più leggera?
Beh puoi scriverti una piccola unit che accede direttamente in memoria.
Ma dipende tutto da quello che devi fare. Per esempio dipende se devi
visualizare delle imagini da file.
> Inoltre vorrei sapere se è possibile mettere una musica di sottofondo, e
> quindi riprodurre un file audio.
>
Ovvio! Esiste una unit che si interfaccia direttamente con la scheda
sonora. Si chiamava SB qualcosa...
Ti consiglio di cercare su internet Arkanoid fatto in pascal. E'
spettacolare è la riproduzione di Arkanoid in pascal con tanto di
sorgenti. Si imparano tante cose.
--
Il Razziatore,
"Lo sviluppo di una nazione si misura anche dallo stato della sua rete
ferroviaria". Camillo Benso Conte di Cavour
"Per tutto quanto non previsto nel presente regolamento il capostazione
deve usare senno e ponderatezza." Regolamento d'esercizio FS
-----------------------------------------------
MSN : IlRazz...@netscape.net
ICQ : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com
http://www.geocities.com/SiliconValley/Bay/6512/arkanoid.zip
Eccolo qui, buono studio ;)
Ti serve sia la unit FM che SND
No, esiste una procedura che si chiama restorekeybhandler, e che rimette le
cose a posto, solo che a volte non funziona, quindi per risistemare la
tastiera devo far partire un'altro programma in pascal vuoto, e allora
ritorna a funzionare.
Cosa significa "che accede direttamente in memoria" io non conosco il
linguaggio assembly, quindi uso per forza la unit graph.
Sono riuscito a velocizzare alcuni processi, però richiede del tempo la
lettura di un pixel sullo schermo, il disegno di figure circolari piene, e
l'utilizzo del comando putimage.
Colgo l'occasione per un'altra domanda: Come si può caricare un immagine da
file bmp e viceversa?
> No, esiste una procedura che si chiama restorekeybhandler, e che
> rimette le cose a posto, solo che a volte non funziona, quindi per
> risistemare la tastiera devo far partire un'altro programma in pascal
> vuoto, e allora ritorna a funzionare.
Allora ti conviene farlo tu a mano: salvi l'indirizzo della procedura di
interrupt prima di attivare la libreria, e lo ripristini alla fine :)
Non c'è bisogno di conosce l'assemply per accende alla memoria. La
memoria grafica è un array dove ogni elemento è un pixel contenente il
colore. In pratica ti basta fare
MemoriaGrafica[X,Y] := Rosso;
Per assegare al pixel X, Y il colore Rosso.
la memoria iniza dalla coordinata (0, 0) e continua, basta che usi
l'istruzione Mem[] utilizando SegA000 per accedere alla memoria grafica:
Mem[ SegA000, Y * W + X ] := ColorePixel;
per calcolare l'offset dipende dalla risoluzione ( il paramento W ).
> Sono riuscito a velocizzare alcuni processi, però richiede del tempo la
> lettura di un pixel sullo schermo.
Usando l'accesso diretto in memoria risparmi parecchio tempo.
> il disegno di figure circolari piene, e
> l'utilizzo del comando putimage.
> Colgo l'occasione per un'altra domanda: Come si può caricare un immagine da
> file bmp e viceversa?
devi farti un loader che legga il formato bitmap ( è molto semplice ;) )
> e' molto semplice ;)
dopo che sai come si fa, si, e' molto semplice. Mi ci è voluta una
settimana al tempo a capire come diavolo erano fatti quei file, quando
anche non trovavi il formato (o il loader) bello pronto su internet :-p
devi gestire la palette, devi gestire i bit-per-pixel, devi gestire la
compressione se c'è. Tutto, ma non semplice :)
a questo punto la cosa più saggia è cercare un simpatica libreria già
pronta.
Le bmp non sono compresse. Cioè supportano la compressione OLE ma
smanettando un po' non ho mai bmp compresse. Non so se le BMP abbiamo la
palette già inclusa oppure usano quella di sistema.
The Programmer's File and Data Resource ( http://www.wotsit.org/ ) puo'
essere mooooolto utile in queste ricerche. Comunque il mio "semplice"
era riferito ad altri formati, come ad esempio il JPG, che sono mooolto
più complessi. Il BMP non è poi tutto sto complicato, Se c'è una palette
è semplicemente una sfilsa di indici della palette, e se si usa la
stessa palette anche nel gioco basta fare un becero copia e incolla il
nemoria. Un ciclo for e via :)
Infondo il BMP è un formato elementare HEADER + DATI RAW...
> a questo punto la cosa più saggia è cercare un simpatica libreria già
> pronta.
>
--
Un buon resource per le BMP è:
http://www.fortunecity.com/skyscraper/windows/364/bmpffrmt.html
C'è tutto ( compresa la palette :D )
> Infondo il BMP e' un formato elementare HEADER + DATI RAW...
smettila, ti stai scavando la fossa mostrando ignoranza :p
I file .bmp sono contenitori, quindi possono contenere un buon numero di
compressioni diverse: RLE, bit field, e persino png o jpeg. E visto che si
possono avere da 2 a 32 bpp, ti tocca tenere in cosiderazioni tutti i
possibili formati della palette (o del true-color, senza palette), il che
non è semplice quanto sembri - senza contare che in qualche modo devi
anche mostrarle queste immagini.
Se lui si salva tutti i file in un formato particolare, bene, altrimenti
non mi dire che aprire bmp in generale sia facile, perché vuol dire
semplicemente che non hai idea di cosa ci sia dentro un .bmp :|
e se hai bisogno di informazioni precise, qua:
- http://en.wikipedia.org/wiki/BMP_file_format
E perché mai? Io ho detto semplicemente che normalmente. Nel 99% dei
casi una BMP è un file semplice da leggere e interpreatre, quasi lineare.
> I file .bmp sono contenitori, quindi possono contenere un buon numero di
> compressioni diverse: RLE, bit field, e persino png o jpeg. E visto che si
> possono avere da 2 a 32 bpp, ti tocca tenere in cosiderazioni tutti i
> possibili formati della palette (o del true-color, senza palette), il che
> non è semplice quanto sembri - senza contare che in qualche modo devi
> anche mostrarle queste immagini.
Vero il BMP è un formato contenitore, puoi anche implementare una
compressione tua, nessuno te lo vieta. Puo' anche implementare una
animazione. Ma fino a qualche anno fa la compressione era solo RLE. Non
mi dirai che se scarichi da internet una libreria BMP per TP ci trovi
dentro la compressione JPG/PNG perché non ci credo.
Tanto è vero che paint all'origine suportava solo BMP senza le JPEG e
solo da windows XP ha suportato anche le PNG. Se Paint suportava la
compressione PNG per le BMP perché non suportarle nativamente? Le BMP
sono un formato contenitore ma sei tu a decidere quale "codec" ( per
così dire ) implementare.
Ma se tu prendi i file salvati con paint quanti di questi saranno
compressi? Io non ho mai visto file bmp compressi... non mi sono mai
capitati a te si?
( PS: perché il mio link non ti piaceva? )
> Vero il BMP e' un formato contenitore, puoi anche implementare una
> compressione tua, nessuno te lo vieta.
A parte il fatto che nessun programma leggerą il tuo file, puoi fare
quello che vuoi con qualsiasi formato. Nonsense di nuovo :-p
> Puo' anche implementare una animazione.
No, non puņ. L'unico modo (finto) é quello di mettere i frame uno accanto
all'altro in una singola immagine, e poi tagliarla e animarla quando la
carichi. Non hai nemmeno letto la pagina che tu stesso hai linkato, quando
dice "It [...] is (by itself) not capable of storing animation" :)
Si che l'ho letto :) e mettere un frame accanto all'altro ( a dire il
vero, uno sotto l'altro ) è pur sempre un modo di implementarlo.
Vero nessuno ( tranne tu ) lo leggerà. Ma credi che all'inzio quelcuno
leggeva i PNG?
Comunque questa discussione ( sterile ) non mi ha fatto cambiare idea.I
BMP sono nati ( e sono tutt'ora ) un formato semplice. Elementare. Che
nel 99% sono non compressi. Nel caso di BMP a 24bit poi...
Se vuoi vivere nel tuo mondo di terminologie imprecise e concetti fumosi,
orgoglioso del tuo ruolo di difensore del Vero (tm) contro gli infami
attacchi di chi ti vuole "far cambiare idea", fai pure :|
Non mi son spulciato gli internals
di bmp, ma può essere che intenda per esempio che se c' è una sfilza di
270 pixel color nero
anzichè un array di 0,0,0,0,0,0,0,ecc c' è un costrutto:
"270 caselle da qui in poi son "0" il che occupa meno spazio dell' array??