- 23
- 121 942
andrewmjenner
Приєднався 4 вер 2008
Відео
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.
Plus one, Reciprocal, Times i times t
Переглядів 25216 років тому
Plus one, Reciprocal, Times i times t
First rotating z
Are those VOXELS?
There aren't any voxels in this demo but there is a voxel landscape effect in the follow-up demo, Area 5150.
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.
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!
Nice demo!
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)
Once I realized this is on a 1981 machine, I was very very impressed
FISCHINGs !!!!!!!!!!!!
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???
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.
I imagine myself seeing this in times of Alley Cat. You'd be seen as a traveller from different dimension.
I love this video
Is the best
But can it play Duke Nukem 3D with such graphics, if the source code re rewritten?
THIS SHOULD BE ILLEGAL! >:O!!!!!!!!!
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... 😭
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.
what's your rotation formula?
There are some technical details at www.reenigne.org/blog/rotating-fractals/ and www.reenigne.org/blog/rotating-fractal/
some of the frames remind me of the distorted minibrots near singularities
some parts look like Quasi.
Neat depth map.
What is this? Classic Super Hexagon?
idk what im looking at but this looks and sounds awsome
I feel stupid for not understanding anything what people in the comments is saying
epilessia portami via!
by Celestia! MY DRUGS!
_This is illegal you know_
😱
MY CAKES WILL BURN!
source code
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?
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.
@@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?
@@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.
@@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.
@@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!
Not gonna lie... this is amazing.
It would've taken 15 floppy discs to accomplish, but god can you imagine a 1981 game with THESE graphics as between-level cutscenes?
Wish I had some way to see the awesome color on my Tandy 1000 TL/2
Wut?
That's some clever programming.
Pushing the limits of..... oh wait!
I bought back an old XT just to run this and see it running live, that’s how impressed I am.
That is quite impressively dedicated - thank you! I hope you will find some other interesting things to do with it as well.
@@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.
Hope you enjoy the latest offering too!
@@andrewmjenner As soon as I have time, I'll install it and enjoy it!!!!! Seen the live video, is awesome!
What?! _What the fuck?!_
So this is basically an emulated VCR running on a computer, or is it something else? If it's the former, congratulations!
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.
@@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.
@@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.
@@andrewmjenner So then you emulate the tape & heads, alongside everything you've already done, and then it's basically a completely emulated VCR?
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).
Just tested it out on QEMU. It didn't work.
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.
Absolutely love the Back to the Future animation.
Huge props. That's a stunning demo and pushes the hardware to crazy undreamed of heights. Mind blowing stuff. Luv and Peace.
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.
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).
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.
@@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.
Woah, it's amazing! I still love to watch tech demos. It's always surprising...
I would love to see Doom on this!
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.
@@andrewmjenner - What about a lookup table for translating coordinates? Or would that need to be prohibitively large?
@@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.
@@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.
How has this only got 53K views??? Man, I wish I still had my old XT. Great memories.
The party version at ua-cam.com/video/yHXx3orN35Y/v-deo.html has 213K views at the time of writing...
4:26
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
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/ .
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 ____||___
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.
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...
Extend it so I dont have to press replay every 8 mins
Love it
holy damn this is so rad
Much better.
240 p in 2014 ya bitch?
Standard CGA is 240p no matter what year it is...