NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
▲Amiga Screens: A Primer (datagubbe.se)
amiga386 42 minutes ago [-]
I break out this diagram every time Amiga graphics hardware comes up:

https://amigadev.grimore.org/Hardware_Manual_guide/node02d4....

The Amiga had a great trick. Both the CPU and the display/audio hardware share the same RAM (called Chip RAM), so they have to arbitrate for access to it, through a chip called Agnus, which prioritises who gets to read/write memory, depending on importance. You can starve the blitter, you can starve the CPU, but you can't starve the audio or video or disk I/O. As the 68000 CPU only needed memory access every second clock cycle, the Amiga designers arranged it so that the custom chips preferred odd cycles and saved the even cycles for the 68000. So your 68000 runs at full speed.

But if you need more and more work done by the custom chips, it starts to rob some of the even cycles from the 68000.

If you have a 16-colour lowres screen (4 bitplanes), Denise (the chip that turns RAM values into video signals) only reads display data on odd cycles. But if you add another bitplane for 32 colours, she needs some of the even cycles. If you add another bitplane for HAM or EHB mode, she needs even more.

In hires mode, it needs twice the bandwidth for twice the pixels. So if you have a 4-colour hires screen, it only needs odd cycles and the 68000 is full speed. If you go for 8 or 16 colours, it starts slowing the 68000 down.

This is why the default Workbench screen is 4-colour hires. It's hires to look nice and professional like an IBM, and not like a kid's toy like the Atari ST's default lowres GEM interface. It's 4-colours to show it's colourful and not black-and-white, but it's not 8- or 16- colours because that would nearly halve the speed of the CPU !!!

TacticalCoder 6 minutes ago [-]
Username checks out!
5 hours ago [-]
weinzierl 5 hours ago [-]
How do different resolutions (pixel sizes) work? I get that everything memory related (including color mode and depth) could be switched on a raster line.

In theory it should be possible to change the frequency of the video signal mid screen as well, but I have a hard time to imagine switching repeatedly every frame wouldn't have driven the monitors of the time crazy. Even multi-sync monitors needed probably a couple of frames to sync, right?

noone_youknow 4 hours ago [-]
In the context of the Amiga you didn’t need to change the signal frequency, the underlying video signal stayed the same.

For wider pixels, the hardware just drew each pixel for longer, and for taller pixels each pixel spanned more lines.

Pixels weren’t real in the CRT days :)

fallat 3 hours ago [-]
In a sense pixels arent even real today right? It's an abstraction
layer8 12 minutes ago [-]
LCD and OLED panels consist of a fixed, unchangeable matrix of native pixels. (Same for the discontinued Plasma TVs.) CRTs don’t have that.
kstrauser 2 hours ago [-]
Kinda, but a CRT literally doesn’t have precise pixel targeting in the way an LCD does. Instead, you’re telling the electron gun to draw red for a little while, and it paints what it paints.
fredoralive 4 hours ago [-]
It’s basically just an SD TV signal, the vertical height in lines doesn’t change, it largely just swaps if each line outputs 320 or 640 pixels during its assigned time period.

Having interlaced and non interlaced modes at once seems a bit funky though, but I assume it just forces everything into interlaced with the non interlaced mode sections having the same line sent on both fields?

amiga386 7 minutes ago [-]
In TV land, there is no non-interlaced. It's all interlaced. You provide fields at 50Hz/60Hz* and the CRT displays one after the other, interleaved.

https://en.wikipedia.org/wiki/Interlaced_video

"Non-interlaced" is just sending the same line for both fields, "interlaced" is sending different lines for each field. You can update your "non-interlaced" screen at 50/60Hz and the viewer will see movement, because it's transmitted for both fields. If you were updating just one line of an interlaced screen at 50/60Hz, it would only be transmitted every second field, so the viewer would perceive 25/30Hz movement.

For high-resolution monitors, Commodore and 3rd parties offered a "flicker fixer", which took the raw output, buffered both fields in its own RAM, and re-emitted the combined image as a single frame.

https://en.wikipedia.org/wiki/Flicker_fixer

*: actually 59.94Hz

kmeisthax 3 hours ago [-]
Analog monitors don't care about the dot clock. They draw lines, but you can put whatever signal you want in the lines so long as the dot clock doesn't exceed the available bandwidth. So horizontal resolution is effectively a range you can change at any time and the monitor won't even notice.

Vertical resolution is very much part of the spec, but even then CRTs will sync to hilariously out-of-spec signals that gain or lose lines per frame. Sanely-designed graphics hardware like the Amiga wouldn't do this, but the Atari 2600 wasn't sanely designed and had plenty of games that played fast and loose with NTSC. Atari graphics hardware only generated a single line of graphics and relied on H-Blank effects for literally everything else. Even the vertical retrace signal was controlled by the game. So it was very common to see badly programmed games send too many lines, and a different wrong number of lines each frame, which nobody noticed until people started writing 2600 emulators.

LastTrain 4 hours ago [-]
I don’t know much about Amiga, but from this article I recognize the Atari 8 bit / ANTIC DLI heritage at play!
EvanAnderson 1 hours ago [-]
Yeah-- the Atari roots (and Jay Miner's influence) clearly show in the Amiga.

An alternative future fiction I think about, when Commodore or Atari come up in conversation, is one where Irving Gould didn't run Jack Tramiel out of Commodore and Warner Communications listened to Atari's old guard engineers and released new platforms (versus running the home video game industry into the ground trying to milk the 2600 forever).

Obviously, in that world the Amiga would have ended up being an Atari product and the ST a Commodore product. I think both companies would have been healthier and, as such, would have been able to do more with the platforms. Their combined influence might have actually given the IBM PC and Macintosh a run for their money.

I think Atari would have done right by the Amiga. A properly executed version of it would have been a fantastic games console and I think Atari could have done that. It's hard to say what the home and business computer future of an Atari Amiga would have been, but it Atari would have made a kick-ass Amiga console.

Likewise, the ST could have been a lower cost Mac killer, especially if they leaned-in to Mac emulation / compatibility. I think Commodore had the chops and credibility to execute the ST as a business computer in a way the real Tramiel-run Atari never could. Atari couldn't overcome the stigma of Atari being a video game company.

cmrdporcupine 50 minutes ago [-]
yeah, substantially agree. But I also think if only Atari and Commodore teams could have just been one company... it would have been glorious. Somehow. The market couldn't afford to be split like that, the pie wasn't big enough.

Also I was an Atari ST user back then, and loved it. But the Tramiel's didn't "get" software in the early days. They failed to make the right investments to keep TOS/GEM actively developed (e.g. as a Mac alternative) until it was too late (they hired Eric Smith to work on MiNT and then MultiTOS in the early 90s but they were already done as a company by then).

And then three fundamental hardware mistakes with the ST were:

1. not shipping it with the Blitter from the start so it couldn't compete on games, obviously with the Amiga but even with 8-bits of the time

2. forcing the ROM size down to 192kB so they had to size optimize the crap out of GEM before shipping (waste of precious development time), especially including tossing away all of GDOS (which had support for proportional fonts and printer drivers etc). A 256kB or 512kB ROM would have solved a lot of problems with what I'd think wouldn't have been an insane BOM cost bump.

3. Minor but long term annoying -- tying the cartridge port to only have 128kB of address lines. If they had given it 256kB or 512kB address ability their later expansion issues (OS upgrades etc) would have been much improved.

As for the Amiga, great machine but a) it cost too much at the start so failed to catch immediate fire (the 500 rectified this to some degree) b) interlace.

MiroslavPokorny 6 hours ago [-]
Maybe its me, but i believe the primary or secondary reason for screen is different screens had different resolutions and color depths, both of which dont really exist these days on any major OS.
vidarh 6 hours ago [-]
I've been thinking a lot about this. Virtual desktops gets us somewhat close, but not quite. You're right the difference in resolution and colour depth isn't really relevant any more.

What I think made screens feel different was as a grouping mechanism, usually driven by a single application (though in more recent versions of AmigaOS you could open "public screens") that would manage the layout for that screen. You can do that with virtual desktops, but it takes some effort to simulate the behaviour.

I'm slowly iterating on something like that for my wm. I now snapshot the (by default tiling) layout and restore it, letting me "open" and "close" screens/virtual desktops, and re-open the applications on them, so instead of opening a single application that opens a screen, I will open a "project" and it will open a desktop and multiple applications on it whose windows will snap into place. I'm not happy with it yet, but it feels somewhat closer to me to how it felt to use Amiga screens.

summa_tech 5 hours ago [-]
It feels like the concept faded with the advent of large VRAM and fast fill rate graphics accelerators. I remember old X Window System workstations supporting multiple concurrent windows with different color depths and modes. The hardware would compose windows from memory during display scan-out, all to save VRAM.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 17:06:03 GMT+0000 (Coordinated Universal Time) with Vercel.