Toon posts:

[C++] 256 kleuren in borlandc

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoe krijg ik 256 leuren in borlandc :?
kep al heel wat voorbeelden ed doorgespit, maar krijg het maar niet voor elkaar.

ik gebruik borland 3.11

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:43

Creepy

Tactical Espionage Splatterer

(jarig!)
Topic titel misschien veranderen in C? Want het ++ gedeelte zit er niet in.

Hoe bedoel je 256 kleuren? m.b.v. de BGI? Wat heb je al geprobeerd, en wat gaat er mis?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
ik heb nu via bgi alleen graphics aangeroepen.
maar dat is maar 16 kleuren,
ik zoek een manier(weet niet hoe) om 256 kleuren te krijgen

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik denk dat je dan zelf de interrupt (0x10) moet aanroepen en mode 0x13 moet initialiseren.

Wat is er trouwens mis met C++?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 06 maart 2002 18:11 schreef OlafvdSpek het volgende:
Wat is er trouwens mis met C++?
ik denk dat Creepy bedoelt dat Borland 3.11 geen C++ is (heette het toen geen Turbo C?)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:43

Creepy

Tactical Espionage Splatterer

(jarig!)
Op woensdag 06 maart 2002 18:20 schreef OiSyN het volgende:

[..]

ik denk dat Creepy bedoelt dat Borland 3.11 geen C++ is (heette het toen geen Turbo C?)
Bingo :) (het valt me op dat er maar vrij weinig mensen hier zijn die weten dat er een verschil is tussen C en C++)

Hmm.. volgens mij heeft de BGI alleen beeldscherm modus met 16 kleuren.

Als je met m.b.v. int 10h van beeldscherm kan wisselen, dan kan je de BGI functies volgens mij niet meer gebruiken, dus geen lijnen tekenen, circles, pixels kleuren etc. etc.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 06 maart 2002 18:46 schreef Creepy het volgende:

Hmm.. volgens mij heeft de BGI alleen beeldscherm modus met 16 kleuren.
er was wel altijd een aparte BGI driver voor SuperVGA te krijgen geloof ik... (ik heb het zelf nooit gebruikt, want BGI aarst best wel, maar dat even terzijde :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • marcelk
  • Registratie: December 2000
  • Niet online
Met Borland C++ 3.1 kon je toch echt wel C++ programma's schrijven. Heb het zelf nog op de HTS gebruikt voor het vak Object Oriented Programming in C++.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Klopt, maar het was nog wel wars van alle standaarden die er nu gelden. Probeer bijv. niet adhv Bjarne Stroustrup's C++ boeken iets te schrijven voor de BC 3.x compiler, want dat gaat dus mis of gewoon niet.
</mierenneukerij>

Je kunt op http://www.delorie.com een library vinden die wel redelijk allerlei grafische meuk voor de BC 3 compiler ondersteunt... ben de naam ff kwijt....

edit
Kweet het al weer. Was dus niet op delorie.com, maargoed
GRX heettie
*Clickerdeclick*

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

zoek eens naar svga256.bgi. En of het nou C of C++ dat maakt hier niet uit.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:43

Creepy

Tactical Espionage Splatterer

(jarig!)
Op woensdag 06 maart 2002 18:50 schreef OiSyN het volgende:

[..]

er was wel altijd een aparte BGI driver voor SuperVGA te krijgen geloof ik... (ik heb het zelf nooit gebruikt, want BGI aarst best wel, maar dat even terzijde :))
Lang leve mode 13h (want de BGI is traag) :)
En daarna was het een kleine stap naar svga modes..

hmm.. wel ++ in Borland C 3.11? Nooit geweten :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 06 maart 2002 20:51 schreef Creepy het volgende:

[..]

want de BGI is traag
en je had geen linear frame buffer :( :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Mode13h RULEZ! :D

Hehe, kun je initialiseren door de interrupt vector 10h (dus 10 hexadecimaal) aan te roepen met functie 13h (inderdaad 13 hexadecimaal). Zoek anders eens op BIOS functies, dan vind je deze vast wel. Dan heb je een lineaire 8-bits framebuffer van 64kb. videogeheugen. Wil je het allemaal nog stoerder/sneller dan kom je met de oude BIOS modes uit op ModeX waarin je maximaal 4 framebuffers van 64kb. videogeheugen tot je beschikking kunt hebben. Is vet snel in het 'flippen' van de framebuffers! :)
Nadeel van ModeX is wel weer dat je geen lineaire framebuffers hebt. Eigenlijk is de BIOS mode13h ook een soort van getweaked mode. Deze mode is speciaal gemaakt, omdat het programmeren met niet lineaire framebuffers nog wat werk vraagt :) Dus om het voor iedereen simpel te houden hebben ze dus Mode13h ontwikkeld. Ooit eens gelezen in een artikel van Michael Abrash. De Ultimate onder de die-hard programmeurs. De echte programmeurs onder ons moeten hem wel kennen, anders zou ik me maar eens beginnen te schamen :) ;) 8-)


Maar goed, deze tijd heb ik allang achter me. Zo'n jaar of euhh.. wat zal het zijn 7 of zo?! Tegenwoordig DirectX. Maar ik heb toen heel veel demo's in zowel Mode13h en ModeX gemaakt, met geluid en de hele rambam :)

Have fun!

"The fastest code, is the code that is never called."


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:43

Creepy

Tactical Espionage Splatterer

(jarig!)
Pff.. voor school ooit eens een spelletje gemaakt. Geschreven met Borland C. Scherm aansturing (uiteraard) zelf gedaan (in mode 13h dus :) ). Leraren snapten er niks meer van whahaha.. ze zagen de link niet echt tussen I/O adres $a000 en de videokaart.. wat heb ik gelachen :)

($a000 is dus het adres van de "frame-buffer")

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik heb een keer gepoogd een GUI te schrijven in BC++ 3.1 met BGI. Liep een beetje vast op eventhandling... was ook nog maar 14 :7

* drm is een hoop begonnen, maar heeft nooit wat afgemaakt :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op woensdag 06 maart 2002 20:51 schreef Creepy het volgende:

[..]

Lang leve mode 13h (want de BGI is traag) :)
En daarna was het een kleine stap naar svga modes..

hmm.. wel ++ in Borland C 3.11? Nooit geweten :)
Volgens mij was die stap best wel groot hoor.
VESA, bank switching of LFB, etc. Allemaal leuke dingen, maar niet zo simpel.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op donderdag 07 maart 2002 09:15 schreef drm het volgende:
Ik heb een keer gepoogd een GUI te schrijven in BC++ 3.1 met BGI. Liep een beetje vast op eventhandling... was ook nog maar 14 :7

* drm is een hoop begonnen, maar heeft nooit wat afgemaakt :D
Ik heb ooit een TUI geschreven in Turbo Pascal, omdat ik van Turbo Vision niet zoveel snapte. Die TUI was nog heel erg aardig moet ik zeggen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 07 maart 2002 11:03 schreef OlafvdSpek het volgende:

[..]

Volgens mij was die stap best wel groot hoor.
VESA, bank switching of LFB, etc. Allemaal leuke dingen, maar niet zo simpel.
mwa, bank switching is vervelend idd, maar niet moeilijk. En voor een lfb had je wel protected mode nodig (lang leve djgpp >:))

ja okee, je hebt gelijk als je zegt dat mode 13h aanspreken een stuk simpeler is dan VESA SVGA modi :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Als je ook nog een hoge performance wilt halen is bank switching meer dan vervelend.

En flat mode werkt ook, maar dan niet onder Windows.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 07 maart 2002 16:27 schreef OlafvdSpek het volgende:
En flat mode werkt ook, maar dan niet onder Windows.
zeker wel, ik heb hier zat flat mode proggies liggen die gewoon werk(t)en onder windows. 98se iig, over 2k durf ik geen uitspraken te doen, en onder XP werken ze al helemaal niet, maar dat is door een loze bug in een een of ander dlletje waardoor protected mode in dos niet echt lekker loopt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik kan het niet laten. ff wat code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//in mode 13h zetten
asm {
    mov ah, 0
    mov al, 0013h
    int 0x10
}

//pixeltje tekenen
VideoAddress = (unsigned char far*)0xA0000000L; //VideoAddress is natuurlijk een pointer
VideoAddress[((y - 1) * 320) + (x - 1)] = Color;
//Color kan een waarde van 0 t/m 255 bevatten
//Let op dat je nooit 'buiten' het scherm tekent. Dan loopt je programma zeker vast.

//Je kunt natuurlijk ook het pallette veranderen
asm {
    mov dx, 0x3C8
    mov al, Number
    out dx, al
    inc dx
    mov al, R
    out dx, al
    mov al, G
    out dx, al
    mov al, B
    out dx, al
}
//Number is een getal dat aangeeft welke kleur je wilt veranderen [0..255]
//R is hoeveel rood je wilt, G = groen en B = blauw
//deze waardes lopen maar van 0 t/m 63

Zo, dat is er uit :)

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX/AI
Op donderdag 07 maart 2002 20:37 schreef Melkor het volgende:
Ik kan het niet laten. ff wat code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//in mode 13h zetten
asm {
    mov ah, 0
    mov al, 0013h
    int 0x10
}

//pixeltje tekenen
VideoAddress = (unsigned char far*)0xA0000000L; //VideoAddress is natuurlijk een pointer
VideoAddress[((y - 1) * 320) + (x - 1)] = Color;
//Color kan een waarde van 0 t/m 255 bevatten
//Let op dat je nooit 'buiten' het scherm tekent. Dan loopt je programma zeker vast.

//Je kunt natuurlijk ook het pallette veranderen
asm {
    mov dx, 0x3C8
    mov al, Number
    out dx, al
    inc dx
    mov al, R
    out dx, al
    mov al, G
    out dx, al
    mov al, B
    out dx, al
}
//Number is een getal dat aangeeft welke kleur je wilt veranderen [0..255]
//R is hoeveel rood je wilt, G = groen en B = blauw
//deze waardes lopen maar van 0 t/m 63

Zo, dat is er uit :)
Ik kan me natuurlijk vergissen, maar dan zit je wel vast aan 320x200 ;)
Da's ook wel weer een beetje een limitatie :)

Saved by the buoyancy of citrus


Verwijderd

Topicstarter
kijk, daar hebben we wat aan :) nog iemand met andere manieren?

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX/AI
Op donderdag 07 maart 2002 22:32 schreef Neighbour het volgende:
kijk, daar hebben we wat aan :) nog iemand met andere manieren?
Je bent niet helemaal volledig in je vraagstelling. 256 kleuren krijgen is zoals hierboven beschreven (mode 13h) goed te doen, maar da's en grafische mode van 320x200x256. Wil je dat? Of wil je hogere resoluties, of zelfs gewoon crt maar dan in 256 kleuren?

Saved by the buoyancy of citrus


Verwijderd

kijk ook eens op
http://www.brackeen.com/home/vga/
mischien komt dat wel van pas

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op donderdag 07 maart 2002 19:55 schreef OiSyN het volgende:

[..]

zeker wel, ik heb hier zat flat mode proggies liggen die gewoon werk(t)en onder windows. 98se iig, over 2k durf ik geen uitspraken te doen, en onder XP werken ze al helemaal niet, maar dat is door een loze bug in een een of ander dlletje waardoor protected mode in dos niet echt lekker loopt
Met deze mode bedoelde ik dus geen permanente protected mode, maar real mode, zodat je gewoon Turbo Pascal kon gebruiken. Met mijn eigen code werkte het in ieder geval niet samen mee emm386 of windows.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op vrijdag 08 maart 2002 13:23 schreef OlafvdSpek het volgende:

[..]

Met deze mode bedoelde ik dus geen permanente protected mode, maar real mode, zodat je gewoon Turbo Pascal kon gebruiken. Met mijn eigen code werkte het in ieder geval niet samen mee emm386 of windows.
ahaaaah
okee ik snap :) (wie code er dan ook in real mode :P)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Op donderdag 07 maart 2002 20:37 schreef Melkor het volgende:

//pixeltje tekenen
VideoAddress = (unsigned char far*)0xA0000000L; //VideoAddress is natuurlijk een pointer
VideoAddress[((y - 1) * 320) + (x - 1)] = Color;
Ooeeeeeiiii! Ik mis hier of een macro (#define in C/C++) of assembler!!! ;) :D :)
//Let op dat je nooit 'buiten' het scherm tekent. Dan loopt je programma zeker vast.
Hehe :) Nogal wiedes, dan zit je buiten je legale geheugengebied van 64kb te schrijven! :)
Cyphax:
Ik kan me natuurlijk vergissen, maar dan zit je wel vast aan 320x200 ;)
Da's ook wel weer een beetje een limitatie :)
Tja, wat wil je, dat is Mode13h ;) Daarom ben ik toendertijd (jaar of 7 of zo geleden) ook verder gegaan in ModeX. Kun je zelf je resoluties tweaken. :)
OlafvdSpek:
En flat mode werkt ook, maar dan niet onder Windows.
Zoals Oisyn terecht opmerkte: "Zekers wel" :) ;)

"The fastest code, is the code that is never called."


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op vrijdag 08 maart 2002 14:25 schreef OiSyN het volgende:

[..]

ahaaaah
okee ik snap :) (wie code er dan ook in real mode :P)
Iemand die geen 32-bit protected mode compiler tot zijn beschikking heeft of die de bijbehorende taal nog niet kent.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op vrijdag 08 maart 2002 21:29 schreef Primal het volgende:

Hehe :) Nogal wiedes, dan zit je buiten je legale geheugengebied van 64kb te schrijven! :)
Je hebt 65536 - 64000 bytes legaal off-screen memory.

  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Op zaterdag 09 maart 2002 11:26 schreef OlafvdSpek het volgende:

[..]

Je hebt 65536 - 64000 bytes legaal off-screen memory.
Ja en? Weet je wel wat 64kb (in mijn vorige post aangehaald)is? Dat is niet 64000 of zo hoor. :)


.edit 1

Dit is geen persoonlijke aanval of zo, voor het geval je dat mocht denken

. edit 2

Of begrijp ik verkeerd wat je bedoelt te zeggen?!

"The fastest code, is the code that is never called."


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zaterdag 09 maart 2002 11:26 schreef OlafvdSpek het volgende:

[..]

Iemand die geen 32-bit protected mode compiler tot zijn beschikking heeft of die de bijbehorende taal nog niet kent.
1. het was een grapje
2. er 'hoort' geen taal bij pmode (en ik geloof dat TP7 ook pmode was?)

:)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1