Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

De CGADEMO van Codeblasters uit 1992

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn hobby is de demoscene, en de laatste jaren ben ik vooral terug in de tijd aan het gaan.
Op het moment ben ik bezig met een originele 8088-PC op 4.77 MHz en CGA.
Daar zijn zeer weinig demos op gemaakt, maar er is er eentje die best interessant is.

Alleen werkte hij niet 100% goed op mijn PC, een Philips P3105, die nog een fractie trager blijkt te zijn dan de originele IBM 5150.
Het leek me toen wel interessant om deze demo te reverse-engineeren, en te kijken of er hier en daar nog wat te verbeteren viel.

En inderdaad, ik heb hier en daar net genoeg cycles kunnen vinden om het ook op mijn PC perfect met 60 fps te laten draaien.

Ik heb een en ander in een blog uitgelegd, en ook mijn reverse-engineered code vrijgegeven.
Ik dacht, misschien dat er hier mensen zijn die dat leuk vinden om te lezen/bekijken:
https://scalibq.wordpress.../cgademo-by-codeblasters/

  • Harekiet
  • Registratie: Maart 2000
  • Laatst online: 09-08-2023
Het is godsgruwelijk fantastisch, maar waarom geen vgademo?

Verwijderd

Topicstarter
In 1992 was er nog geen vga.

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Ow jawel. :) http://en.wikipedia.org/wiki/Video_Graphics_Array Maar beetje rare vraag inderdaad. Waarom geen EGA? Waarom geen Hercules? Waarom geen SVGA? 8)7

Aunt bunny is coming to get me!


  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 19-11 16:46

Acid_Burn

uhuh

Ik had in 1991 een Tseng Labs ET4000 die wel degelijk VGA deed. Die was ter vervanging van een ATI kaart die ook al VGA was.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Verwijderd

Topicstarter
Maar je had geen CGA?

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 19-11 16:46

Acid_Burn

uhuh

Daarvoor had ik een Hercules kaart. Nooit een CGA kaart gehad. Daar had ik een emulatortje voor zodat het wel werkte :)

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Verwijderd

Topicstarter
SIMCGA.COM :)
Daar gaat CGADEMO niet mee werken, de rasterbars doen het dan niet.
Ook op de meeste EGA/VGA-kaarten zullen de rasterbars het niet doen.

[ Voor 29% gewijzigd door Verwijderd op 26-11-2014 22:03 ]


Verwijderd

Topicstarter
Natuurlijk wist ik dat wel, maar je moet toch iets verzinnen om reacties te krijgen ;)
Ik had dus vorig jaar al voor de '1991 party' de '1991 donut' intro gemaakt: http://scalibq.wordpress....ng-it-real-like-its-1991/
Gericht dus op een systeem met specs die in 1991 gangbaar waren, en hij maakt gebruik van VGA.

Maargoed, dit was dus voor een 286 op 16 MHz of meer, met VGA en (optioneel) een AdLib geluidskaart. Ik probeer nu dus te richten op de 8088, met CGA en PC speaker. De oer-IBM PC dus, op 4.77 MHz.
Al was de final versie van de 1991 donut ook al 8088-code, en draait ie in principe wel op een 8088 als je maar VGA hebt. EGA werkt ook zelfs, omdat ik een 16-kleurenmodus gebruik. Je krijgt dan alleen niet de goede kleuren.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
1991.... heeremetiid wat een eind terug en wat een gekrabbel op de PC in die tijd ;) In die tijd had je op de Amiga toch wat meer armslag (met de copper waren die bars echt kinderspel). Wat ik grappig vond is jij dezelfde philipsmonitor hebt als ik bij mn amiga had alleen zat er bij mij een 'intel outside' sticker op ipv een intel inside sticker zoals bij jou :D Ach ja de demoscene... leuke tijd.

Wel leuke analyze trouwens van de originele code. Dat pollen is op zich niet slecht, omdat de hardware toch een vaste snelheid had dus je kon alles wel redelijk timen.

Otis / Infuse Project

[ Voor 16% gewijzigd door EfBe op 02-12-2014 08:56 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
EfBe schreef op dinsdag 02 december 2014 @ 08:55:
1991.... heeremetiid wat een eind terug en wat een gekrabbel op de PC in die tijd ;) In die tijd had je op de Amiga toch wat meer armslag (met de copper waren die bars echt kinderspel). Wat ik grappig vond is jij dezelfde philipsmonitor hebt als ik bij mn amiga had alleen zat er bij mij een 'intel outside' sticker op ipv een intel inside sticker zoals bij jou :D Ach ja de demoscene... leuke tijd.
Yup, een Philips CM8833. Zeer veelzijdige monitor. Ik heb hem zelf ook op m'n Amiga en C64 gebruikt (ik heb ook wel wat blogs over Amiga en C64-democoding gedaan). Grappig genoeg is ie wel oorspronkelijk gekocht als CGA-monitor, voor m'n Commodore PC10-III.
En op z'n oude dag doet ie nu dus weer dienst als CGA-monitor :)
EfBe schreef op dinsdag 02 december 2014 @ 08:55:
Dat pollen is op zich niet slecht, omdat de hardware toch een vaste snelheid had dus je kon alles wel redelijk timen.
Nou, juist niet dus. Als je het redelijk kon timen, hoefde je niet te pollen.
Omdat iedere PC anders is, valt er weinig te zeggen over hoeveel cycles iets kost (zoals je ziet, zelfs twee 8088's op 4.77 MHz met CGA zijn nog niet gelijk aan elkaar. Er zit blijkbaar verschil tussen deze en een originele IBM).
Dan moet je ook nog rekening houden met het feit dat de DRAM automatisch gerefreshd wordt door de timer, dus eens in de 72 CPU-cycles wordt er een bus-cycle (4 CPU cycles) gestolen voor een memory refresh. Je weet nooit precies wanneer dat komt, en wat voor effect dat heeft op de code die de CPU op dat moment uitvoert.

Het pollen an sich is niet slecht voor het effect, zolang het maar netjes geoptimaliseerd is (wat dus in eerste instantie niet zo was, dus zag je die jitter aan de linkerkant).
Het nadeel is alleen dat je CPU-cycles zit op te branden, die je beter had kunnen gebruiken.
Bij een C64 is alles een vaste snelheid (ook de geheugen-refresh, die gaat automatisch door de video-chip), dus kun je gewoon cycles tellen van je code, en dan weet je op welke cycle je op de volgende scanline zit, en dus even de kleur moet aanpassen voor een rasterbar.

Op de PC kun je wel IETS doen, maar niet heel veel. Je hebt op een 8088 op 4.77 MHz 304 CPU-cycles per scanline. Dat is dus 'worst case'. Je zou je code dus zo kunnen maken dat je dit hebt:
poll();
setBackgroundColor();
process();
poll();
setBackgroundColor();
process();
...
Daarbij moet je dan een worst case rekenen voor je poll()/setBackgroundColor() qua cycles (laten we zeggen iets van 30 cycles). En de memory-refresh-cycles er ook vanaf halen, worst case.
Dan heb je daartussen nog iets tijd over voor process(), dus iets van 250 cycles of zo per scanline, daar zou je nog iets mee kunnen doen.
Maar je blijft dus een hoop cycles weggooien omdat je moet gaan pollen wanneer je scanline is afgelopen.

En zoals je zegt, op de Amiga met de copper is het HELEMAAL kinderspel. Je programmeert gewoon van te voren in je copperlist op welke momenten hij de kleur moet veranderen, en dan heb je er verder geen omkijken naar, en is de CPU compleet beschikbaar voor andere dingen.
De copper draait natuurlijk per definitie synchroon met de video-output.
Pagina: 1