andrewmjenner
andrewmjenner
  • 23
  • 121 942
Elevated 256
256 byte VGA demo party coded at Sundown 2016
Переглядів: 926

Відео

8088 MPH by Hornet + CRTC + DESiRE (final version)
Переглядів 86 тис.9 років тому
Hornet CRTC DESiRE are proud to present 8088 MPH, a demo for the 1981 IBM PC CGA. This demo took first place in the oldskool compo at Revision 2015. This is the real composite output of a true IBM CGA card and 4.77MHz 8088 PC. This demo breaks all emulators :-) Downloads and comments: www.pouet.net/prod.php?which=65371 Technical explanation: trixter.oldskool.org/2015/04/07/8088-mph-we-break-all...
VCR software decoding test
Переглядів 3,6 тис.9 років тому
Raw 28.6MHz RF capture from VHS preamp, NTSC luma decoded in software with deemphasis curve deduced from calibration image.
Dírojed CGA
Переглядів 85410 років тому
My 3rd place entry to the Oldskool Demo compo at Sundown 2014. It is a port of the 32-byte demo Dírojed by Řrřola (www.pouet.net/prod.php?which=28913) from 286 /VGA to 8088 /CGA. This is the long version - I let it run until the image reaches a completely stable state. At the party only the first minute or so was shown as it becomes rather slower after that. This run also looks slightly differe...
dirojed CGA
Переглядів 37410 років тому
My 3rd place entry to the Oldskool Demo compo at Sundown 2014. It is a port of the 32-byte demo Dírojed by Řrřola (www.pouet.net/prod.php?which=28913) from 286 /VGA to 8088 /CGA. This is the live video from the party, courtesy of Deltafire. For the long captured version see ua-cam.com/video/Ys6koiu1lF0/v-deo.html .
LED strobe illuminating spinning disc
Переглядів 85012 років тому
My son's Elenco Snap Circuits Jr. SC-100 toy came with a spinning disc that demonstrates stroboscopic behavior when accelerating or decelerating under a fluorescent light. I built my own LED strobe with adjustable frequency and duty cycle to make the effect a bit more visible. See www.reenigne.org/blog/led-strobe-and-spinning-disc for more details.
Beats of two colour carriers
Переглядів 21713 років тому
Observing the effect of the variable capacitor on the XT's clock generator circuit by interfering the CGA output signal with another colour carrier signal.
Effect of the color adjust variable capacitor
Переглядів 24313 років тому
What actually happens to the chroma colours generated by the CGA when the "color adjust" variable capacitor on the XT motherboard is turned. This video demonstrates.
Masking out the sync signals
Переглядів 28413 років тому
A CGA card connected to a TV with a an additional signal generated by ANDing the display enable signal from the card with various interesting signals.
Hardware debugging with no oscilloscope
Переглядів 42913 років тому
Using a TV connected to a broken CGA card as a visualization device to debug the CGA card.
IBM XT with MDA outputting to a TV
Переглядів 5 тис.13 років тому
An IBM XT with an MDA card displaying NTSC-compatible signals on a TV, loading code from an Arduino masquerading as a manufacturing test device connected to the keyboard port.
Circuit without substrate
Переглядів 18214 років тому
A three-state astable multivibrator made by soldering the legs of the components together directly. More details at www.reenigne.org/blog/3d-circuit-ball .
Waller's torus in 4 dimensions (second version)
Переглядів 52314 років тому
Vertices (all equivalent) are major and minor chords. Edges (all the same length) are pairs of notes common to two chords. Hues are pitch classes. 3rd dimension (Z) is brightness and perspective. 4th dimension (W) is colour saturation. The shape rotates in the ZW plane. Version 2 has thicker lines and Z-buffering.
Physical Tone Matrix - baby approval
Переглядів 2,3 тис.14 років тому
Penelope (age 9 months) playing with the Physical Tone Matrix (with a little help from Daddy).
Physical Tone Matrix - toddler approval
Переглядів 2,8 тис.14 років тому
Alex (age 3.5) playing with the Physical Tone Matrix. He's listening to it on headphones so you can't hear the cacophony.
Physical Tone Matrix overview
Переглядів 14 тис.14 років тому
Physical Tone Matrix overview
Waller's torus in 4 dimensions
Переглядів 18815 років тому
Waller's torus in 4 dimensions
Rotating fractal
Переглядів 1,6 тис.15 років тому
Rotating fractal
A trip around the cardioid
Переглядів 19615 років тому
A trip around the cardioid
Variable branch cut
Переглядів 44216 років тому
Variable branch cut
Second reslicing
Переглядів 9616 років тому
Second reslicing
Reslice of yesterday's movie
Переглядів 12116 років тому
Reslice of yesterday's movie
Plus one, Reciprocal, Times i times t
Переглядів 25216 років тому
Plus one, Reciprocal, Times i times t

КОМЕНТАРІ

  • @Iluvdmitriifractaler
    @Iluvdmitriifractaler 2 дні тому

    First rotating z

  • @AntoineWG
    @AntoineWG 3 місяці тому

    Are those VOXELS?

    • @andrewmjenner
      @andrewmjenner 3 місяці тому

      There aren't any voxels in this demo but there is a voxel landscape effect in the follow-up demo, Area 5150.

  • @warlockd
    @warlockd 8 місяців тому

    Kind of curious if it works on newer emulators. There was a big push for cycle complete 6502 and other emulators back a year ago.

    • @andrewmjenner
      @andrewmjenner 8 місяців тому

      I believe it has been run correctly on the 86Box and MartyPC emulators. The latter (by @GloriousCow) was built with running this demo in mind - hence the BTTF-inspired name!

  • @moonowo
    @moonowo 10 місяців тому

    Nice demo!

  • @TheRealHarrypm
    @TheRealHarrypm 10 місяців тому

    VHS-Decode today makes FM RF archive decoding look like childs play, I guess this was a CX Card capture with CXADC ay? (be intresting to see it re-decoded today)

  • @timoloef
    @timoloef Рік тому

    Once I realized this is on a 1981 machine, I was very very impressed

  • @Sandrinepidertozoidprimaterost

    FISCHINGs !!!!!!!!!!!!

  • @tcspersonal7889
    @tcspersonal7889 Рік тому

    Andrew, I don't understand what you've done. VCRs have composite, s-video or RGB video outputs only. What do you mean by "RF capture"? Are you tinkering with the hardware opening the cover and touching or tampering with any of the electronics inside the VCR???

    • @andrewmjenner
      @andrewmjenner Рік тому

      Yes, that's exactly what I did. The encoding of the images on the tape is described as RF (presumably because the frequencies involved are high enough to be described as Radio Frequency). VCRs have test points that can be tapped to monitor this signal encoded for tape, and I tapped them.

  • @middle-agedclimber
    @middle-agedclimber Рік тому

    I imagine myself seeing this in times of Alley Cat. You'd be seen as a traveller from different dimension.

  • @Ben-official-90
    @Ben-official-90 2 роки тому

    I love this video

  • @Ben-official-90
    @Ben-official-90 2 роки тому

    Is the best

  • @thanthanasiszamp4707
    @thanthanasiszamp4707 2 роки тому

    But can it play Duke Nukem 3D with such graphics, if the source code re rewritten?

  • @Channel7Tonight
    @Channel7Tonight 2 роки тому

    THIS SHOULD BE ILLEGAL! >:O!!!!!!!!!

  • @totheknee
    @totheknee 2 роки тому

    If this could be done in 1981, imagine what we could do in 2020! Oh wait, just Doom 27.0 or Fortnite or whatever they call it these days... 😭

  • @antispin5
    @antispin5 3 роки тому

    That was incredible. I can't imagine how much work was required to do this. As the former owner of an 8086/CGA as well, you've made my day.

  • @bensfractals43
    @bensfractals43 3 роки тому

    what's your rotation formula?

    • @andrewmjenner
      @andrewmjenner 3 роки тому

      There are some technical details at www.reenigne.org/blog/rotating-fractals/ and www.reenigne.org/blog/rotating-fractal/

  • @bensfractals43
    @bensfractals43 3 роки тому

    some of the frames remind me of the distorted minibrots near singularities

  • @MichaelAutism
    @MichaelAutism 3 роки тому

    some parts look like Quasi.

  • @Mikewee777
    @Mikewee777 3 роки тому

    Neat depth map.

  • @kms727300
    @kms727300 3 роки тому

    What is this? Classic Super Hexagon?

  • @deoz9741
    @deoz9741 4 роки тому

    idk what im looking at but this looks and sounds awsome

  • @dest1x269
    @dest1x269 4 роки тому

    I feel stupid for not understanding anything what people in the comments is saying

  • @AndreaFistetto
    @AndreaFistetto 4 роки тому

    epilessia portami via!

  • @SilverSpoon_
    @SilverSpoon_ 4 роки тому

    by Celestia! MY DRUGS!

  • @KirillTitov
    @KirillTitov 4 роки тому

    _This is illegal you know_

  • @Semtex777
    @Semtex777 4 роки тому

    source code

  • @eddievhfan1984
    @eddievhfan1984 4 роки тому

    Re: "racing the beam", is that whole sequence meant to imply the image was made through precise interrupts/transfers to the CGA's memory, simulating H-blank interrupt/DMA?

    • @andrewmjenner
      @andrewmjenner 4 роки тому

      The Kefrens bars sequence is made by a routine that is precisely timed to synchronise to the raster beam (by counting cycles - it takes exactly 304 CPU cycles for the beam to complete one raster line). The phrase "racing the beam" is also meant to put one in mind of Atari 2600 coding, where there is no frame buffer. There is no frame buffer as such in this effect either - just two scanlines worth of buffer which is repeated down the screen. Each scanline the contents of the line buffer is changed slightly so that the image varies vertically down the screen. DMA is not involved here (the PC/XT has a DMA chip but it's not useful for this purpose). An H-blank interrupt of sorts is possible by setting the timer period to the right length but the interrupt overhead would not leave sufficient time to do the VRAM updates so counting cycles is the only way. Hence this was the most difficult effect in the demo for emulators to get right.

    • @eddievhfan1984
      @eddievhfan1984 4 роки тому

      @@andrewmjenner The slightest variation in timing an instruction in the emulator (or failing to enforce video/CPU timing synchronization), and you'd write to the "buffer" in the middle of rendering a scanline, hopelessly corrupting the output?

    • @andrewmjenner
      @andrewmjenner 4 роки тому

      @@eddievhfan1984 Pretty much, yes. If the per-scanline code doesn't take exactly 304 cycles then the points along the scanline where the buffer updates are done will drift to the left or right as the beam moves down the screen, leading to tearing. And then the routine might be desynchronised for the next frame as well.

    • @eddievhfan1984
      @eddievhfan1984 4 роки тому

      @@andrewmjenner TBH, I thought if the writing routine interfered with transmitting the sync signals from the CRT controller, it would basically cause the monitor to go haywire. Either way, a true testament to optimization and riding the edge of the hardware. Good on ya.

    • @andrewmjenner
      @andrewmjenner 4 роки тому

      @@eddievhfan1984 The horizontal sync signals are still timed by the CRT controller and are not affected by the effect code. The effect code does takes over responsibility for the timing of the vertical sync signals, though, reprogramming the CRT controller at the top and bottom of the visible frame. So if the timing is wrong then the monitor might lose vertical synchronisation. We were concerned that this could damage monitors (hence the timing test at the beginning and warning if the hardware doesn't seem to be cycle identical with the original PC or XT). However, we have since learnt that this kind of monitor damage is not really possible in practice so the warning is probably redundant. Thanks!

  • @btizef2008
    @btizef2008 4 роки тому

    Not gonna lie... this is amazing.

  • @levilevis9032
    @levilevis9032 5 років тому

    It would've taken 15 floppy discs to accomplish, but god can you imagine a 1981 game with THESE graphics as between-level cutscenes?

  • @matthewrease2376
    @matthewrease2376 5 років тому

    Wish I had some way to see the awesome color on my Tandy 1000 TL/2

  • @abhay8437
    @abhay8437 5 років тому

    Wut?

  • @madcat789
    @madcat789 5 років тому

    That's some clever programming.

  • @Bishaco
    @Bishaco 5 років тому

    Pushing the limits of..... oh wait!

  • @S13Reborn
    @S13Reborn 5 років тому

    I bought back an old XT just to run this and see it running live, that’s how impressed I am.

    • @andrewmjenner
      @andrewmjenner 5 років тому

      That is quite impressively dedicated - thank you! I hope you will find some other interesting things to do with it as well.

    • @S13Reborn
      @S13Reborn 2 роки тому

      @@andrewmjenner Back here! forgot about my own comment, yes, I found other use cases and I got a healthy collection during these years. I even got a Sony PVM monitor in order to be able to see the demo at it's best (not only because of that, but was an important factor). Fantastic fantastic.

    • @andrewmjenner
      @andrewmjenner 2 роки тому

      Hope you enjoy the latest offering too!

    • @S13Reborn
      @S13Reborn 2 роки тому

      @@andrewmjenner As soon as I have time, I'll install it and enjoy it!!!!! Seen the live video, is awesome!

  • @Mrcake0103
    @Mrcake0103 5 років тому

    What?! _What the fuck?!_

  • @eribetra
    @eribetra 5 років тому

    So this is basically an emulated VCR running on a computer, or is it something else? If it's the former, congratulations!

    • @andrewmjenner
      @andrewmjenner 5 років тому

      Parts of the VCR are emulated, parts are real. The tape and heads are real, but the process for decoding the data coming from the heads and turning it into a visible image is done in software. It is not a huge step to go from there to a completely emulated VCR - I just haven't implemented it yet. It's something that I'd like to do at some point, though.

    • @eribetra
      @eribetra 5 років тому

      @@andrewmjenner I bet you'd be able to digitize the magnetic signals from the tape and emulate the heads, and then try to run it through the decoder.

    • @andrewmjenner
      @andrewmjenner 5 років тому

      @@eribetra Well, to digitize the magnetic signals from the tape you need some heads to get the signal off the tape and into an electrical signal that can be sampled. Which is what I am doing in this video - the source digitized signal is the one coming right off the tape heads (after they are combined into a single signal). It's possible to emulate the tape and heads as a system but not really just one or the other as emulated heads can't read physical tape and physical heads can't read emulated tape.

    • @eribetra
      @eribetra 5 років тому

      @@andrewmjenner So then you emulate the tape & heads, alongside everything you've already done, and then it's basically a completely emulated VCR?

    • @andrewmjenner
      @andrewmjenner 5 років тому

      Almost. The other part is that this is only a decoder so far - an encoder would be needed as well but that's just a matter of reversing the steps of the decoder. An interesting thing to do would be to add various real-world imperfections to the emulation, like dropouts, tape stretching, and the heads being misaligned with the data on the tape (and emulating the servo mechanism to get it back in synchronisation).

  • @a4e69636b
    @a4e69636b 5 років тому

    Just tested it out on QEMU. It didn't work.

    • @andrewmjenner
      @andrewmjenner 5 років тому

      Emulators don't tend to do a good job with this demo since it relies on exact cycle counting and other low-level trickery. There are certain builds of 86box which have been able to run it, though.

  • @a4e69636b
    @a4e69636b 5 років тому

    Absolutely love the Back to the Future animation.

  • @ianedmonds9191
    @ianedmonds9191 6 років тому

    Huge props. That's a stunning demo and pushes the hardware to crazy undreamed of heights. Mind blowing stuff. Luv and Peace.

  • @SWRadioConcepts
    @SWRadioConcepts 6 років тому

    IBM PC was designed for serious business and business graphics, not games. Also PC has a far more powerful processor than Commodore, and 16-bits! Not to mention far more RAM.

    • @andrewmjenner
      @andrewmjenner 6 років тому

      The IBM PC was designed to compete with microcomputers like the Commodore PET, Atari 400/800, Apple II, Tandy TRS-80 and various CP/M machines. All of which were used in the home as well as the office. The fact that the PC (with CGA card) was designed from the beginning to be able to use an NTSC TV set as a monitor (hence the 4.77MHz CPU frequency) suggests that home use (i.e. games) was a market that IBM had in mind. In fact, one game (Microsoft Adventure) was a launch title for the PC. It's true that 8088 is a bit more powerful than the 6502 but not as much as you might suspect from the 8/16 bit difference - both machines had an 8 bit memory bus which was in practice usually the bottleneck (but the 8088 has a more space-efficient and powerful instruction encoding). As for more RAM: not really! The first PC's motherboard supported configurations of 16kB-64kB inclusive (it is a bit cheeky of 8088 MPH to use 640kB which would have been technically possible in 1981 but unusual and expensive).

    • @Scalibq
      @Scalibq 6 років тому

      I'm not entirely sure about the size-efficiency of the instruction sets of 8088 vs 6502. I suppose it depends on what you want to do. 6502 has the zero-page, which allows for very compact instruction encoding. There are also more common instructions that fit into a single byte than on 8088. Sure, you will need more instructions for the same code in many case, but I'm not sure if that balances out in the 8088's advantage.

    • @andrewmjenner
      @andrewmjenner 6 років тому

      @@Scalibq I had a recent example in mind: the fast Mandelbrot code I wrote over at vcfed in May. The inner loop was 23 bytes of 8088 code, and the corresponding 6502 code was 97 bytes. Granted that uses a lot of 16-bit arithmetic which the 8088 is particularly well-suited for (and the 6502 is particularly ill-suited for) but I think the 8088 has an advantage for 8-bit data types too (albeit a smaller one). In particular, a single 2-byte instruction can encode two 3-bit register numbers and a 3-bit ALU operation on 8088, whereas on 6502 you'd need two 2-byte instructions to address two zero page locations. But don't take my word for it - I encourage you to pick a little routine, optimise it for 8088 and 6502 and see which wins.

  • @geminielectro
    @geminielectro 6 років тому

    Woah, it's amazing! I still love to watch tech demos. It's always surprising...

  • @Cyberdemon1542
    @Cyberdemon1542 6 років тому

    I would love to see Doom on this!

    • @andrewmjenner
      @andrewmjenner 6 років тому

      Doom is tricky because of the floors and ceilings - they need quite a lot of divisions to calculate, which are really slow on 8088. I reckon a pretty decent Wolfenstein 3D could be done on this hardware though.

    • @Roxor128
      @Roxor128 6 років тому

      @@andrewmjenner - What about a lookup table for translating coordinates? Or would that need to be prohibitively large?

    • @andrewmjenner
      @andrewmjenner 6 років тому

      @@Roxor128 Yes, prohibitively large tables is the problem. Doing walls with lookup tables isn't too bad because you can consider each vertical slice separately, and essentially have a table in which you can lookup the texture Y coordinate by screen Y coordinate and distance (which is manageable). Because you can rotate in the plane parallel to the floor there is orientation to consider as well as position - the lookup table method would just have too many inputs.

    • @Roxor128
      @Roxor128 6 років тому

      @@andrewmjenner - Ah, so you'd basically run into the fact that you'd need three or four dimensions of array data, which would easily eat up more memory than could be spared on a machine of the era.

  • @s3tTz
    @s3tTz 6 років тому

    How has this only got 53K views??? Man, I wish I still had my old XT. Great memories.

    • @andrewmjenner
      @andrewmjenner 6 років тому

      The party version at ua-cam.com/video/yHXx3orN35Y/v-deo.html has 213K views at the time of writing...

  • @mfields96
    @mfields96 6 років тому

    4:26

  • @crystalgames
    @crystalgames 6 років тому

    This is FUC**ING FREAKY AMAZING! Hardware pushed to the limits! Genius coders, with tight CPU to CGA peripherials control! WOW WOW I shit bricks!!!) You're genius coders who can do magic. And PC Speaker with AMPLITUDE control, how did you ever do it? its 1 bit buzzer!! I know that its possible to break the diaphragm cycle with high frequency base wave but its insane coding skills! you're created something really amazing!! so many colors, full vsync control, super fast asm code... WOW WOW

    • @andrewmjenner
      @andrewmjenner 6 років тому

      Thank you for the kind words! If you're interested in how the multi-channel PC speaker music was done, I did a detailed write-up at www.reenigne.org/blog/8088-pc-speaker-mod-player-how-its-done/ .

    • @crystalgames
      @crystalgames 6 років тому

      Thanks, its a fun reading, you're amazing) Once I was shocked when heard cubic player playing the MOD with the volume modulation on pc speaker's but it was on 386... not sure I understood the physical process behind it, but I could guess that a diaphragm has its inertion so if we set bit to 1 it goes -1 and bit 0 it goes +1 if we do it really fast the diaphragm will stop somewhere between 0.3 and starts to head to -0.3 . Looks like PWM is another way to solve it - by thinking in time domain rather than amplitude domain. I.e. we assume that diaphragm moves fast enough but allow it to oscilate in small time slot ____||___

    • @andrewmjenner
      @andrewmjenner 6 років тому

      The PWM output is actually the easy bit (lots of other programs have done PWM playback on this hardware in the past). Yes, if you want the speaker at position x% of its range then you program the timer to output "high" for x% of the time and "low" for (100-x)% of the time. If the pattern of highs and lows repeats quickly enough then all the frequencies other than the desired ones will be out of the range of human hearing (or the ability of the speaker to reproduce) and you'll hear the desired sound. PWM just means that for any given cycle we put all the high bits together and all the low bits together in a single pulse of variable (modulated) width, which is easy for the timer chip to do and the carrier isn't too audible if the cycle length is short enough.

    • @crystalgames
      @crystalgames 6 років тому

      I see so PWM is just like a regrouping of pulses within the cycle. And indeed its not the most exciting stuff in the demo )) I like so many things in it amazing precise CRT ray timing control and many other neat tricks like raster font generator control etc. I used to write 386 asm and did some neat tricks with vga memory. For me it started from the Commander Keen and its smooth background scrolling on EGA. Sadly those days are gone and there's no practical use to these skills. I could imagine how many amazing games and demo experiences could be written if moore's law was frozen... What felt magic in 1990x now is just a niche wizardry for geeks.... And the modern hardware is too powerful and too abstracted out of the direct programmer's control...

  • @jairusgd8000
    @jairusgd8000 6 років тому

    Extend it so I dont have to press replay every 8 mins

  • @dustnoiseplays
    @dustnoiseplays 7 років тому

    Love it

  • @SamBlye
    @SamBlye 7 років тому

    holy damn this is so rad

  • @Paultimate7
    @Paultimate7 7 років тому

    Much better.

  • @Paultimate7
    @Paultimate7 7 років тому

    240 p in 2014 ya bitch?

    • @andrewmjenner
      @andrewmjenner 7 років тому

      Standard CGA is 240p no matter what year it is...