AmigaOS Support Forum Launched

I am happy to announce that Hyperion Entertainment has launched a new AmigaOS support http://upload.wikimedia.org/wikipedia/en/0/05/Boingball.pngforum!

This forum is designed to centralize communications between AmigaOS customers and the AmigaOS software development team. Think you found a bug? Then post a message in the support forum. If an AmigaOS beta tester is able to reproduce the bug then they will take it from there. AmigaOS core developers are also encouraged to participate in the forums and can answer questions directly as well.

Additional support forums are available for Hyperion’s game products such as Freespace and Shogo.

AmigaOS developers have not been left out. There is a support forum for you as well. Found a bug in the SDK? Then just post a message and get it fixed.

Everyone will be allowed to read the web forums but only registered product customers will be allowed to post. To become a registered user, just register your product with Hyperion at their main web site using your product serial number. Remember to register all your Hyperion products for full access.

To summarize:
1. Register your product serial numbers at the main Hyperion Entertainment web site.
2. Create an account on the new Hyperion Entertainment Message Boards.

Steven Solie
AmigaOS Development Team Lead

AmigaOS 4.1 Classic – Latest Update!

Hyperion Entertainment CVBA and AmigaKit.com would like to give you a sneak peak at the upcoming print advertisement for AmigaOS 4.1 Classic that will appear in the next issue of Amiga Future magazine.

AmigaOS 4.1 Classic Advertisement

Look for a full review of AmigaOS 4.1 Classic in the next issue of Amiga Future,  and other reviews on popular Amiga websites and forums around the world in the next weeks.

AmigaOS 4.1 Classic is immediately available from your local Amiga dealer or direct from AmigaKit.com’s webstore.   AmigaKit is stocking a number of compatible PCI cards and other accessories to complement your Classic setup.

SATA 4-Port Raid card for Mediator
10Mbps PCI Network Card (Mediator)
Radeon 9250 PCI 128MB Graphics Card
Subway USB

and 128MB Memory modules for Blizzard PPC.

A hardware compatibility list has been started and will be expanded as new hardware is tested.  It can be found here.

 

Hyperion Entertainment and AmigaKit.com wish to thank all users for their support!

 

Note: AmigaOS 4.1 Classic requires an Amiga 1200, 3000(T), or 4000(T) Computer with  a Blizzard PPC or Cyberstorm PPC accelerator.   The use of PCI cards is optional.  PCI cards require either an Elbox Mediator PCI Busboard or Maytay Prometheus PCI Busboard.  Check the hardware compatibility list for further information.

Tales from an AmigaOS 4.1 Developer…

In the words of Dr. Nick, “Hello everybody!”…

I suppose I better start by introducing myself.  My name is Karl Churchill whom you may know as Karlos from one or more of the various Amiga forums.  I’ve been an Amiga enthusiast since I first had a go of a friend’s A500 back in 1988.  I didn’t actually own one until 1992, but from then on, I’ve not been without one.  I’ve been asked to write a few words about my involvement with OS4.1 for classic.  Well, there’s the short version and the long version.  The short version is that I’ve been working as a contributor to add Warp3D support for the Permedia2.  Work began in October last year as an evening project.

The version of the driver in the repository had not been touched in the best part of a decade and whilst it compiled, that was all it did.   Any attempt to launch a 3D application would simply freeze the machine.   The first challenge was to get it to a point where it would at least allow an application to start, even if it didn’t render anything.  Working on low-level code is not without it’s complications.  Thankfully, the kernel provides a debug printing service but I don’t have a serial line debugger (the serial port on that machine is not entirely reliable) so every time there was a crash, I’d have to reboot and run DumpDebugBuffer to see what had blown up.  Progress was slow at first, but eventually I was rewarded with a blank screen and not a DSI.  Over the following months I got all the basic drawing routines up and running, starting with the basic V1-V3 API calls.  Along the way, I found some amusing undocumented bugs in the Permedia2 that were the cause of a lot of head scratching and finally I got up to the point where I could implement the V4 API.  This is where everything changes and is a good time to start the “long” version of the story… as if this one wasn’t long enough already!

Back in 2001 or so, I was developing my own applications that were using Warp3D as an “advanced rasterizer” for 2D.  If you’ve ever used RTG as a developer on OS3.x, you’ll doubtless be as dismayed as I was with the extent of it’s hardware acceleration.   The functions provided by Warp3D were much more capable and efficient for 2D graphics work. Warp3D 4 was released and introduced it’s vertex array functions.  For what I was doing at the time, these were perfect.  I refactored my code to use them and then discovered to my dismay that various chunks of the advertised API just weren’t implemented by the driver, especially line and point rendering.

I badgered Hyperion about this at the time who were busy with other things but responded by giving me access to the source. It’s fair to say that after a few months, I had the only driver that implemented every drawing operation the API specified.  The original V4 functions used templates (i.e. C macros) to generate a drawing function for each possible combination of primitive and supported vertex format.  Conceptually, this is the most efficient way of doing it but in reality it produces a lot of code which is mostly redundant and not cache friendly. After adding the extra primitives, the driver had reached an unprecedented size (well over 1MB) which was clearly too big.  The only thing that actually varied from one format to the next is the way in which the vertex data was fetched.  So, I scrapped the existing code and started a new version that has drawing routines for each primitive, but uses a function pointer to invoke a fetcher that is specific to the format being used.  The code was well within acceptable size again and ran considerably faster despite having to make up to 3 indirect function calls per vertex (one for geometry, one for colour and one for texture/fog).

I went on to fine tune this implementation by adding versions of the fetchers that were not only specific to the vertex format but also the currently selected states.  This moves a lot of state-dependent conditional logic out of the fetch routine and as they represent the innermost level of the code, that’s always a good thing.  Eventually, some of theV4 routines were over 2x faster than the original version, depending on the vertex format and state.  Unfortunately, this driver never found it’s way into the wild.  Mostly because I never considered it finished it due to the constant need to tweak and improve it; there was always some new experiment to try.  DMA FIFO transport is still “the one that got away” but I’ve promised to behave and actually release versions this time.  The vertex fetch idea caught on though and became the standard method used for all later drivers, so at least the work wasn’t entirely wasted.  I was later asked if I’d be interested in making an OS4.0 version of it.  Seeing as this meant I’d get to play with something new on my A1200 (the then upcoming OS4.0 classic), I naturally agreed and having got the beta version on my machine started work on it.  Classic 4.0 was very much in beta at that time and I ran into a lot of issues just running it, development using it was even trickier.  Then life took a series of increasingly difficult turns which ultimately left me out of the scene for many years.  OS4.0 for the classic came and went in the meantime.  I had thought things had hit an inflection point when a close uncle passed away suddenly but things reached a new low in 2007 when my mother was diagnosed with a life-limiting illness and passed away just two short years later in the spring of 2009.  She was not to be the last.  By the end of that year, I felt I needed to get back into my hobbies, doing something, anything, would be therapeutic.

So I bought OS4.1 for the inherited A1 that was sat under my desk for about 4 years unused to see how things had moved on since my early experiences with 4.0 beta for the Classic.  Quite a bit, as it happens.  As I got back into it, I got the SDK and started playing about with some code.  And that’s where the long and the even longer versions of the story recombine. This time I have a nice stable machine to do the actual compilation on, which has helped considerably. The present driver for 4.1 has incorporated all the fundamental changes the unreleased v4 driver had and then some; even the old V1-V3 drawing routines now use a set of vertex fetchers, all designed around W3D_Vertex, but optimised for each state combination that has an effect on their operation. The FIFO code has been completely rewritten, as has the state handling. Finally there is as much support as is feasible for the V5 API. Unique challenges this time around are trying to appease some old applications that did naughty things (like poking the context instead of making the proper API calls) without sacrificing too much performance and trying to track down some really persistent bugs. The latter has led to having to work through the main library and even the RTG driver. It’s a frustrating task a lot of the time; you think you nailed a bug, only to discover the “it works for me” phenomenon is genuinely real and the same bug is still affecting other users.  So, back to the drawing board.  Still, seeing Quake3 run on my 20-year old A1200 was fun enough to make it worthwhile.

So, the Permedia2 driver is still in development and won’t be considered final until the various bugs are ironed out.  In a case of history repeating itself, I also noticed that the R200 driver doesn’t draw everything advertised in the API either. I guess I’ll have to look into that one next… 😉

AmigaOS Wants You Status Update

I have finalized the list of new AmigaOS developers and just need approval from the boss. After that, non-disclosure agreements (NDAs) will be completed and then the successful applicants will be granted access to the Amiga’s source code.http://upload.wikimedia.org/wikipedia/en/0/05/Boingball.png

A huge thanks to everyone for applying! I admit I was a bit overwhelmed by the response and took me some time to filter through them all.

There are 25 years worth of changes to this source code base and the successful candidates may find some of it can be a bit spooky. However, I think it can also be a lot of fun. All the big Amiga names from days gone by are in the AmigaOS source code someplace. I hope to have the full list of credits published later on so keep an eye on this blog.

It took me a lot of time to go through the 40+ applications. I discovered there is some truly unique talent in our community. We have some really experienced individuals out there and I’m keeping the full list handy in case we need more help in the future.

Steven Solie
AmigaOS Development Team Lead

AmigaOS 4.1 Classic Radeon Warp 3D in action!

Carl Moppett, one of our primary AmigaOS 4.1 Classic Beta testers, has put together a short video showing off the Radeon driver in action on his Amiga 1200 system.  It shows Quake 1, some Mini GL demos, and FreeSpace.  Enjoy the video! Link to Youtube below:

http://www.youtube.com/watch?v=8__E99l90Pw

PS – You might also want to see a video of Quake 3 on an A4000 system running AmigaOS 4.1 Classic with a Cyberstorm PPC and CyberVision PPC using the included beta Warp3D hardware accelerated driver from our very tired contributing developer Karl Churchill! Thanks Karl!

Quake 3 – AmigaOS 4.1 Classic on A4000 with CyberVision PPC Warp3D driver

I’d love to see your videos once your copy of AmigaOS 4.1 Classic arrives in the mail!

-Darren

AmigaOS 4.1 Classic now shipping!

Hyperion Entertainment CVBA  and AmigaKit are pleased to announce that AmigaOS4.1 Classic is now shipping!

Where To Buy:

AmigaKit.com (or direct link to AmigaOS 4.1 Classic)

Alinea Computer (Germany)

ACube Systems (Italy)

AmigaOS 4.1 Classic, the long awaited Classic Amiga system update is now available to purchase!  It updates your Classic Amiga equipped with CyberStorm PPC or Blizzard PPC to the latest AmigaOS 4.1 (Update 2) standard and builds on the foundations of AmigaOS 4.0.  This is the first major update for Classic Amigas for three years.

Supplied on Amiga CD with Boot Installation Floppy Disk, two printed manuals and box.  In addition, a comprehensive AmigaOS 4.1 Classic FAQ and File System comparison chart is included on the CD in PDF format.

New Features of AmigaOS 4.1 Classic:

Improved bootloader with large table MMU support
Updated kernel offering increased stability in low memory conditions
Support for virtual memory via harddisk paging
ZorRAM and DKB 3128 support as memory pagers
Improved (future proof) Mediator support with Radeon 9200 and 9250 using up to 256MB of video memory (correct voltage graphics card required)
Support for PCI sound card (ESS SOLO-1 based cards)
Warp3D hardware acceleration support for Radeon, Voodoo 3/4/5 and Cybervision / Blizzardvision PPC (stable beta version for Permedia2-based cards)
DDC automatic monitor detection for Radeon and Voodoo 3
Hardware compositing engine (Radeon only) with software fall-back
Native FastATA driver support
Selected SATA PCI card support
Intelligent Installer for PCI / Zorro with automatic AGA fallback support
New classic styled Bootlogo and Backdrops

The minimum requirements are:

An Amiga 1200, 3000(T), or 4000(T) with Blizzard PPC or Cyberstorm PPC accelerator card
Minimum 96MB memory installed on Blizzard PPC or Cyberstorm PPC
Kickstart 3.0 ROMS
IDE or SCSI CD-ROM drive (on Cyberstorm PPC) for installation
1GB hard disk drive on IDE internal port or Cyberstorm PPC SCSI
Amiga 880K Floppy Disc Drive

The recommended configuration (in addition to the minimum) is:

Prometheus or Mediator PCI BusBoard with a compatible Radeon graphics card* (see Note below)
RTL8029 based PCI Network card
ZorRAM 128MB or 256MB Zorro 3 Memory card (or other compatible Zorro 3 memory card) (Amiga 3/4000 only)
20GB or larger hard disk drive on Cyberstorm PPC SCSI or internal IDE port
256MB RAM (Blizzard PPC only)

*Note: Radeon graphics card support limited to Mediator PCI busboards only at present- this possibly will be extended to Prometheus PCI in future updates.

This update is the result of many months of hard work to bring new life to Classic Amigas.  Special thanks go to Carl Moppett, Darren Eveland, Steven Solie, Joerg Strohmayer, Thomas and Hans-Joerg Frieden, Martin Merz, ACube, Michael Boehmer (E3B), Tobias Seiler, Elbox, and the many AmigaOS 4 developers and beta testers and other contributors to this product.

Hyperion and AmigaKit would also like to thank all Amiga Users for their continued support.  Without you it would not have been possible.  We hope that you enjoy using AmigaOS 4.1 Classic and look forward to the exciting updates that we have planned in the near future!

Masters of Our Domain

I am happy to report that we have finally fixed the www.hyperion-entertainment.biz domain name. The domain has been limping along for a long time now.

DNSFor the uninitiated, the Domain Name System (DNS) is what makes it possible to use human friendly names for web sites on the internet. When a domain name does not resolve correctly you end up with a web site that is there one minute and gone the next. Other services like email, FTP, etc. seem to come and go. The root cause is not the server itself but the way names are resolved into IP addresses.

I admit I am no DNS expert so the fix was a team effort by Thomas Frieden, Olaf Barthel, Alex Carmona, Hyperion’s ISP and myself. A big thanks to the team for helping to resolve this lingering issue.

It could take a few days for all the DNS servers to update themselves so if www.hyperion-entertainment.biz does not yet resolve in your part of world just be patient until your local caches are updated.

It is important that the domain name be solid because we plan to introduce more services in the near future. Keep an eye on this blog for more details.

Steven Solie
AmigaOS Development Team Lead

 

AmigaOS wants you!

Are you are software development professional?http://upload.wikimedia.org/wikipedia/en/0/05/Boingball.png

Are you passionate about software development?

Do you want to contribute to AmigaOS by working directly on its source code?

The AmigaOS software development team could use your help.

If you are serious about helping with AmigaOS software development then please contact me today.

I look forward to discussing how you may be able to contribute.

Steven Solie
AmigaOS Development Team Lead

Open Amiga

We often hear about software developers and eager users wanting to help the Amiga Operating System move forward with new functionality and bug fixes.

One way to get involved is by joining the Open Amiga effort. The Open Amiga web site has plenty of projects which software developers may want to tackle to enhance AmigaOS.

Open Amiga is not just for developers. Users may also contribute. Needed personnel include:

  • Developers and others who can join the main work group
  • Interested parties that provide feedback in the forums
  • People who can write developer guides and guidelines (how to’s, do’s and don’ts)
  • Web developers for building the infrastructure
  • People who gather available developer documentation from the net

Judging from the dates, many of the projects have fallen on hard times. Go ahead and grab one and start going.

The State of OpenGL on AmigaOS

Since a while now I have been working on OpenGL on AmigaOS. Progress has been slow so far – there have been a good number of fundamental issues to be cleared up.  For starters, let me summarize the goals:

  1. Provide a hardware-accelerated OpenGL for applications, games, and the operating system.
  2. Provide a driver interface with maximum flexibility. We do not want to count exclusively on Gallium3D as a basis for drivers, although it will be a fundamental one.
  3. Provide a low-level API that does not depend on high-level constructs like Windows or Screens. While it should be possible to render to these, it should not depend on any of them.
  4. Be able to upgrade to the latest OpenGL version, depending on driver support.
  5. Support multi-threading and multiple CPU’s.

Let’s look at these goals. We want to provide a hardware-accelerated OpenGL that can be readily used by applications and games alike. We would also like the operating system to be able to take advantage of this. Workbench should be able to draw its stuff with OpenGL hardware-acceleration, and even Intuition should be able to use it. There is no point in restricting such an important part to a mere application/game interface. It has to become an integral part of the system.

OpenGL screenshot showing a software-rendered Gears demo

Early software-only prototype

 

The internal driver interface is designed to be usable with or without Gallium3D. Obviously, the focus of our work will be Gallium-based, but what if there is a graphics card that does not support the required level of shader support to be able to work with Gallium? For this purpose, opengl.library (the central hub of the OpenGL system on AmigaOS) is able to load and operate drivers that only provide a minimal set of internal functions plus the required entry points for OpenGL. That way, it is possible to use a Mesa based driver, or even a completely custom driver, for hardware that is not supported by Gallium3D.

Our interface is intentionally very low-level. There are two major reasons for this. At first, developers will likely never encounter or use the low-level interface directly. They’ll more likely use a high-level API like EGL or SDL or even GLUT instead. Which doesn’t mean that the low-level API is clumsy or awkward to use. It is merely building on very low-level blocks – for example, it only renders into bitmaps and nothing else. Of course, bitmaps are at the base of all AmigaOS graphics and GUI constructs. To render to a screen, one can supply two bitmaps for ScreenBuffer-type double buffering. For a window, there’s the classic solution of using the graphics card blitter to copy the image into the window after rendering, or, on compositing enabled screens, to render directly into the window’s own bitmap. In any case, being low-level means that the API is future proof for any changes that might come to Intuition or Reaction.

Obviously, we want to be able to update drivers individually. The version of OpenGL support, as well as any extensions, will greatly depend on the driver. Most drivers support OpenGL 2.1 right now, including GLSL support. The exact possibilities depend on the hardware as well (a Radeon R100 will never support GLSL). The flexible driver interface will make sure, however, that individual drivers can be updated without having to update either the applications using OpenGL, nor opengl.library itself.

Finally, multi-threading and multi-CPU support is an important factor. If you are aiming at making a system an integral part of the OS, then support for multithreaded operation is as much a requirement as support of multiple CPU’s.