Welcome, Guest. Please login or register.


Author Topic: BMP megjelenítése BASIC-ben (Read 7258 times)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
BMP megjelenítése BASIC-ben
« on: 2023.April.10. 18:22:13 »
Rajzoltam a Paintben egy 64x64 képpontos képet.
 Ezt elmentettem mint 16 színû kép (save as... és utána lent ki lehet választani a típust)

 Megvizsgáltam milyen adatok vannak a BMP kép fejlécében, és írtam egy BASIC programot, ami kirajzolja.
A BMP rôl azt kell tudni, hogy az adatmezô elsô bájtja a képen balra lent kezdôdik. Így a képet alulról felfelé rajzolja ki.

Mellékletben van a floppi fájl, amin a BMP kép és a basic program található.
A basic programot elindítva betölti a fájlt a lemezrôl.

 Ha valakinek van kedve rajzolgatni, akkor figyelembe kell venni, hogy maximum 720/8=90 magas lehet a BMP kép és 1200/8=150 széles. Ha lehet ezek az x/y méretek legyenek 2-vel oszthatóak. (nem tudom mi van, ha páratlan)

 A BMP képen megnyitva alul van a paletta amibôl lehet választani. A Paint enged mindenféle színt, de a mentés után (16 szín miatt) már rotnani fog, és nem úgy fog kinézni. Ezért az alsó sorból lehet "mintát venni".
Érdemes felnagyítani a képet és úgy rajzolni.

 Megjegyzés: Az emulátor amin dolgoztam fel van turbózva 80 MHZ-re ezért nálam gyorsan rajzol.
« Last Edit: 2023.April.10. 18:25:20 by Tuby128 »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BMP megjelenítése BASIC-ben
« Reply #1 on: 2023.April.10. 19:58:55 »
Nem rossz ötlet ez arra, hogy basic programokba is rakhassunk képeket. Még valami tömörítést kéne kitalálni hozzá.
« Last Edit: 2023.April.10. 20:09:24 by szipucsu, Reason: Translations added - Fordítások hozzáadása »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: BMP megjelenítése BASIC-ben
« Reply #2 on: 2023.April.10. 20:17:47 »
Ha kicserélem a töltő rutint gépi kódra, akkor nem lesz olyan lassú.
 Tömörítéssel nem vesződnék, mert akkor elvész az egyszerűsége a dolognak.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: BMP megjelenítése BASIC-ben
« Reply #3 on: 2023.April.11. 10:55:48 »
Érdekes dolgot vettem észre.
 Graphics 2-ben a pixelek soványak. 1:2 arányú szélesség:magasság méretnél.
 Graphics 4-ben a pixel pont arányosan négyzet.
 Graphics 16-ban pedig lapos 2:1 arányú.

 A Microsoft Paint csak arányos 1:1 pixelt támogat.
 Emiatt hogy a kép hasonló legyen, Graphics 2 ben minden pixel mellé kell tenni egy másikat. Graphics 16-ban pedig fölé.
 A Graphics 2-ben mellérakott pixel máris Graphics 4-et eredményez, akkor viszont már 4 színt is lehet használni.

 Vannak olyan rajzolóptogramok amik támogatják az aránytalan pixelméretet, de ennek a témának a mélyére nem akartam menni.

 Graphics 2 esetén interlace móddal lehetne arányos pixelt csinálni, de annyira körülményes az interlace, hogy ezzel nem foglakozom.

 Nagyon érdekes a dolog az is ha az EP nem monitorra hanem tv-re van kötve és PAL Composite jelátalakítás miatt bizonyos színeket összemos/összekever, a "dithering" (pöttyösítés) miatt akár új színnek jöhetnek létre. Ennek oka, hogy a színátvitel sávszélessége elég keskeny, a gyors színváltoztatást csak átmenettel tudja kijelezni.
 Az jutott eszembe, hogy az emulátorból pont ez a funkció hiányzik, amikor a képpontokat elkeni mint egy TV képernyő. Az elkenésnek köszönhetően lesz szebb a kép.


 

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14731
  • Country: hu
    • http://enterprise.iko.hu/
Re: BMP megjelenítése BASIC-ben
« Reply #4 on: 2023.April.11. 11:11:08 »
Az jutott eszembe, hogy az emulátorból pont ez a funkció hiányzik, amikor a képpontokat elkeni mint egy TV képernyő. Az elkenésnek köszönhetően lesz szebb a kép.
Szerintem az a kép nem szép, hanem borzalmasan homályos vacak, hál'Istennek, már vagy 30 éve sikerült megszabadulni tőle, amikor megvettük az első SCART-os tévét.
Amúgy meg ha képminőség rontással akarsz játszadozni, van az ep128emuban: Options/Display/Configure

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: BMP megjelenítése BASIC-ben
« Reply #5 on: 2023.April.11. 12:29:29 »
Majd megnézem, köszönöm a tippet.

 Akkor értettem meg az általad említett "homályos vacak" dolgot amikor valamelyik retro youtube tartalomkészítő kitért erre a témára, és összehasonlított játékokat kompozit ill. RGB bemeneteken. Mondta, hogy sok játéknak azért olyan furcsa a színválasztása, mert compozit jelre volt optimalizálva. Megmutatta a két képet összehasonlítva.
 Szerintem a Playstation 1-nél is azért volt, hogy TV-n szebb mint emulátoron, mert sok szűrést-simítást elvégzett a kompozit konverzió.

 Én az RF jelet tartom homályos vacaknak. A compozit jel hozzá képest nagyon szép.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BMP megjelenítése BASIC-ben
« Reply #6 on: 2023.April.11. 13:48:21 »
Tömörítéssel nem vesződnék, mert akkor elvész az egyszerűsége a dolognak.
Ha fel is akarjuk használni a képeket basic programokban, akkor szerintem kellene tömörítés. Például a képen, amelyet az első hozzászólásodban mellékeltél, elég lenne a nem fekete részek koordinátáit és színeit adni meg, sokkal kisebb lenne, mint ha pixelpontonként az egész képet tároljuk.
Bár lehet olyat is, hogy egyszer betölti fájlból a képet egy videolapra, és az a videolap úgy marad, nem változik. A játékok screen-je is ilyesmi, és talán tömörítés nélkül sem nagy, kb. 7 KB lehet.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: BMP megjelenítése BASIC-ben
« Reply #7 on: 2023.April.11. 14:02:12 »
15-20 évvel ezelőtt lehet hogy gondolkodtam volna tömörítésen. De manapság már amikor terrabájtokat tárolunk otthon, és az EP is bővíthető 3 Megabyte-ig gond nélkül, nem hiszem hogy a 10kb / 1kb probléma akkora gond lenne.
 Létezik EP-re SD-kártyás floppy emulátor is. Merevlemez is. Az emulátorban meg úgyis mindegy.

 Onnan indultam, hogy a legegyszerübb programmal (Microsoft Paint) összedobok valami grafikát, elmentem és amott betöltöm. A paint BMP-t nem tud úgy tömöríteni. Ha pedig egy harmadik programot kell használni, akkor az egész már túl bonyolult.

 Már Photoshoppal is beleestem a problémába, hogy nem nagyon támogatja a kevés színnel való munkát.

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2755
  • Country: hu
    • Enterprise Forever
Re: BMP megjelenítése BASIC-ben
« Reply #8 on: 2023.April.11. 15:19:42 »
Quote
Már Photoshoppal is beleestem a problémába, hogy nem nagyon támogatja a kevés színnel való munkát.
Vannak direkt pixelart-ra szánt grafikus programok is és böngészőből használható online eszközök is, pl. első találat: https://www.pixilart.com/
Vagy letölthető program mint pl az mtPaint. A magam részéről én szinte mindenre a GIMP-et használom.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BMP megjelenítése BASIC-ben
« Reply #9 on: 2023.April.11. 16:15:40 »
15-20 évvel ezelőtt lehet hogy gondolkodtam volna tömörítésen. De manapság már amikor terrabájtokat tárolunk otthon, és az EP is bővíthető 3 Megabyte-ig gond nélkül, nem hiszem hogy a 10kb / 1kb probléma akkora gond lenne.
 Létezik EP-re SD-kártyás floppy emulátor is. Merevlemez is. Az emulátorban meg úgyis mindegy.

De még mindig lehetnek olyanok, akik egy szál magnóval rendelkeznek csak, és nincs memóriabővítésük sem! Ne kelljen már egy basic programot két kazettáról tölteni be! :D
Az is kérdés, mi a cél. Ha csak rajzolsz valamit és utána EP-n megnézed, hogy milyen érdekes, arra jó így is. Csak arra gondoltam, akkor már a gyakorlatban is fel lehetne használni ezt, pl. új basic programokat (amiket Zzzippel is lefordítunk) fel lehetne dobni ilyen képekkel.
Meg hát nem is az emulátorra fejlesztünk, hanem igazi EP-re, az emulátor csak segédeszköz. A terabájtok a PC világára igazak, de az EP nem PC, ezt ne felejtsük.
A midi zenék is tömörítve vannak, hogy ha valaki esetleg magnóról töltené őket, vagy floppyra venné fel őket, akkor kevesebb gond legyen velük.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline SlashNet

  • EP addict
  • *
  • Posts: 1208
  • Country: ua
  • Enterprise 128K | Cubietruck
    • My old site about Enterprise
Re: BMP megjelenítése BASIC-ben
« Reply #10 on: 2023.April.11. 23:21:46 »
If the first color of the palette is black, you can skip drawing black pixels to speed up output process with these extra lines:
[ Guests cannot view attachments ]


Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1298
  • Country: hu
  • Stray cat from Commodore alley
Re: BMP megjelenítése BASIC-ben
« Reply #11 on: 2023.April.12. 08:34:18 »
IDK how IS-BASIC really works, so maybe I'm asking something stupid. Could you replace the GOTO in lines 545 and 565 with NEXT? That may add a bit to the speedup if syntax allows it.
Nem tudom hogyan működik igazából az IS-BASIC, szóval lehet hogy ostobaságot fogok kérdezni. Ki lehetne cserélni a GOTO-t NEXT-re a 545-ös és 565-ös sorokban? Ha a szintaxis engedi az még adhat egy keveset a gyorsításhoz.

Offline SlashNet

  • EP addict
  • *
  • Posts: 1208
  • Country: ua
  • Enterprise 128K | Cubietruck
    • My old site about Enterprise
Re: BMP megjelenítése BASIC-ben
« Reply #12 on: 2023.April.12. 09:51:44 »
Could you replace the GOTO in lines 545 and 565 with NEXT?
Ki lehetne cserélni a GOTO-t NEXT-re a 545-ös és 565-ös sorokban?

In this algorithm it only possible for the second line, but this should also speed up the program a bit (-1 line to interpret).

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: BMP megjelenítése BASIC-ben
« Reply #13 on: 2023.April.12. 12:05:55 »
Very interesting in other programming languages you cannot place the nesting-function-end (NEXT/LOOP etc) multiple places in a program code.
If you want to end the cycle in the middle, you have a special command for example "EXIT DO", "EXIT FOR", or in other language "break;".
Probably because the interpreter parsing algorithm must find easily the start and end of the nest, cannot be placed after an IF statement.

Hun:
 Nagyon érdekes, hogy más programnyelveknél nem teheti az ember akárhová a ciklus záró kulcsszavakat (NEXT/LOOP stb).
Ha arra van szükség, hogy a ciklus közepén kilépjen az ember, akkor erre van egy külön parancs "EXIT DO", "EXIT FOR" vagy más programnyelvben a "break;".
Ez valószínűleg azért van, mert a fordító kiértékelő algoritmusának biztosan tudnia kell, hogy hol kezdődik és végződik egy ciklus, nem lehet feltételhez kötni.
« Last Edit: 2023.April.12. 12:20:29 by Tuby128 »

Offline SlashNet

  • EP addict
  • *
  • Posts: 1208
  • Country: ua
  • Enterprise 128K | Cubietruck
    • My old site about Enterprise
Re: BMP megjelenítése BASIC-ben
« Reply #14 on: 2023.April.12. 12:21:17 »
[ Guests cannot view attachments ]