Both sides previous revisionPrevious revisionNext revision | Previous revision |
fuss:amiga [2019/12/08 20:09] – [Fixing Hyperion Quake 2 Spin / Turn Issues] office | fuss:amiga [2025/10/21 23:26] (current) – external edit 127.0.0.1 |
---|
| ====== Amiga Highlights ====== |
| |
| Here are a few subjective, some objective highlights of the Commodore Amiga and why this antiquated retro-machine is still actual. |
| |
| ===== Workbench ===== |
| |
| {{fuss:fuss_amiga_workbench_version_1.0.png?512}} |
| |
| The Amiga series of computers counts itself amongst the first personal computers that ever existed and had the operating system built-in directly into the hardware; what one would recognize today as the BIOS conflated with the notion of a "kernel" was burned into two chips called the Kickstart that would perform both hardware recognition but would also set up a primitive window-manager generically called Workbench. With that said, the Amiga actually had a built-in operating system, with fully-functioning commands and even a graphical interface without just running games like a console would do. |
| |
| Actually, the Amiga Workbench is perhaps the first "desktop manager" that ever existed that would be open to the public (of course, like others, inheriting the Xerox interface) as a "personal PC". Note that we're talking here about times when the standard x86 Intel-based or AMD processors did not exist at all so the standard "PC" era did not even commence. |
| |
| Given the early-days, the Commodore Amiga was not designed with too much enforced consistency, in fact, the way of "modding" the interface, namely Workbench, was done by directly overwriting and injecting code into memory, with memory space truly not being delimited or separated by anything such that any program could write into memory anywhere it liked, which became both a curse and a blessing for the Amiga. |
| |
| The curse of this freedom was that virii flourished in the Amiga world, and a lot of hacker or cracker groups formed around the platform because there were few protections to defeat in terms of "executable memory space"; definitely no hardware-backed CPU "noNX" flag and no ACL or permission system at all. The blessing was that some of the most elementary concepts of desktop management, software design and other "features" that are now modernly standardized were laid out. One such blessing is the fact that the Windows workbench did not really conceptualize "minimizing windows" but rather assumed that people would be working with one application open at once with the closest matching feature being the ability to cycle between applications as they are all running in full-screen in the background. |
| |
| {{fuss:fuss_amiga_workbench_version_4.1.png?512}} |
| |
| Of course, later on, as the Commodore Amiga got more powerful (up to and including the beginning of the 3D era), working with many applications on the same desktop became a necessity such that the concept of "minimizing windows" materialized by adding the ability to have applications minimized to an icon on the desktop. People that lived through that era, still miss the ability to minimize applications to the desktop instead of having them listed in one continuous bar at the bottom, even if for the ability of managing where these "iconifed applications" are placed. Later on, in the very latest iteration of Workbench, namely AmigaOS 4.1 that even requires a PowerPC to run, lots of features were added, for example a desktop dock that is, in fact, a backdraft of borrowing from the MacOS platform because the Amiga never had a desktop dock. |
| |
| One thing that a user would "feel" when working with Workbench, is that it is very much centered on the concept of icons and windows, like a proper desktop manager. Workbench does not want to act like "software" and refrains from doing much else - perhaps an inherited consequence of actually being built into the hardware itself. |
| |
| Lastly, much of the Workbench (both BIOS and desktop manager) was designed to be customizable and a complete opposite of modern-day lock-in economic strategies. Given that memory is writable anywhere by anyone, it is clear that any modification is possible but the idea behind the customization of the Amiga is that the developers themselves worked in a modular fashion while creating programmatic hooks that third parties could then leverage in order to create extensions. As a comparison, the buttons on a desktop window on Workbench are in fact separate classes with proper hooks that allow a programmer or a user to add more buttons whilst on Windows the number of buttons next to minimize, maximize or close is rather fixed and changing that would require injecting code to re-write the whole window processing routine. |
| |
| ===== Co-Habitation of Architectures ===== |
| |
| Perhaps the flashiest and the most technologically advanced feature that does not even exist even today is the architecture created by Commodore and Phase5 that allowed different architecture processors to exist. Whilst the Amiga was an m68k architecture with Motorola creating the CPUs, an expansion card could be added that would add a PowerPC processor to the machine. |
| |
| The Amiga, in its later iteration managed to clock at $50MHz$ whilst the the PPC would be much faster, clocking at up to $200MHz$. Interestingly, the speed of the m68k at $50MHz$ was never a problem because every piece of [[/fuss/computer_engineering#micro-optimizations_number_crunching_and_memory_management|software was written by hand]] without, say, relying on [[/fuss/game_design#eye_candy|a graphics card for the extra eye-candy]] that some people were after. |
| |
| What the Amiga did was to use clever system-wide context switches and delegate various tasks to different processors depending on what was being executed and it would do so concurrently! That means, you could have a Quake game up on the desktop running on the PPC co-processor whilst working on a document in a word-processor that ran on the m68k processor. |
| |
| If you will, for a blasphemous comparison, this was like a machine that could both run Windows games whilst running on Linux on bare metal without using an emulation or virtualization shim - it simply ran both binaries by dispatching the bytecode to the processors depending on what sort of code marker it found withing the binary. Given that both CPUs were running different code that was also contextualized by the architecture itself, this was perhaps one of the earliest forms of symmetric multi-processing (SMP), concurrency and parallelism to ever exist that was "lost" for a while until Intel (re-)discovered the feature with the Core2 Duo, the very first Intel two-core processor (that, with industrial multi-processor machines aside, that were not consumer-ready). |
| |
| ===== Gaming ===== |
| |
| In terms of gaming and games the Commodore Amiga was part of the early days catching the inception of the first Nintendo, then the Super-Nintendo, respectively the Sega Genesis and then Sega Megadrive while co-existing in the same timeline. |
| |
| The early days were marked by a bunch of experimental games that even "indie" game developers do not dare create. These were the days where a game could be anything you liked such that "game categories" were not even possible to create, compared to modern times were games all fall in either this or that category such as first-person shooters, racing games, platformers, etc. |
| |
| {{fuss:fuss_amiga_games_the_sentinel.png?512}} |
| |
| One example is Sentinel (a game created by Geoff Crammond for the BBC Micro), a much cherished game by us, that is... very tough to classify. The perspective of the player is first-person but there is no shooting to be done. The game is very the embodiment of "king of the hill", but that is a "game mode" not a "game category" and it is a single-player game. On top of the hill, there is a creature, a person or enemy that rotates around randomly. The game is turn-based and after every player move, the creature on top of the hill rotates. If the creature sees the player, or rather the square that the player is on, the creature can destroy the player. The purpose of the game is for the player to move around the hills and try to sneak up to the creature to the point that the player can see the square that the creature stands on. When the player can see the square that the creature stands on, the player can destroy the creature and win the game! |
| |
| Strategy game? Not really because there are no real "units". Puzzle? Close but this is too advanced compared to "Bubble breaker". RPG? Actually that would work better but still it's almost chess in terms of being closer to puzzle. Certainly not a racing game. An FPS? Well, there is nothing to shoot except one single enemy. Maybe a turn-based strategy FPS? That's more like it. A turn-based strategy FPS! A genre that does not even exist today. |
| |
| {{fuss:fuss_amiga_games_marble_madness.png?512}} |
| |
| Another example is Marble Madness created by Atari where the player is expected to guide a ball with perils, boosters and advantages similar to a racing game or an RPG through a maze using the mouse or the keyboard. The ball itself is programmed with physical properties, including elasticity which makes some of the ordeals difficult, like having to jump ledges by jumping or falling onto something at the right time. |
| |
| {{fuss:fuss_amiga_games_road_raider.png?1024}} |
| |
| One modern game genre that has been dormant but now fairly re-emergent that we also mentioned as part of game innovation is a "vehicle survival" game named Road Raider. This is a "hybrid" game in terms of gameplay, being a racing, fighting game, survival game where the player can and has to also get out of the car in order to complete missions as top-down RPG similar to Diablo as well as purchase items from stores pertaining to both the player and the vehicle. We categorize this game as [[/fuss/game_design#innovation|vehicle survival]] which is the dormant but looming genre that has been around for a while and the terminology is spelled out thusly because the purpose of the game is shared both by the vehicle and the player. That is, both the player and the vehicle must survive in order to complete the game and additionally the purpose of the game is to survive. At best, with modern categorization, this would be closest-described as an RPG given all the different elements. |
| |
| Overall, the idea is that these are the origins of computer games such that studying modern games or analyzing them would greatly benefit from knowing about the origins of the ideas used to create modern games. Of course, given the early days, some of these games were utter disasters and now float on pure notoriety than being a "factually good game", with [[/fuss/game_design/adventure#accurate_design|the puzzle involving spelling out "Rumplestiltskin" in Kings Quest I]] being perhaps the most memorable example. Many modern games are actually "so good" because they rely on the experience gained from the early days, with catastrophes and calamities being more or less prevented and most claims against games being "bourgeois" by comparison to some of the early disasters. Lots of these games were factually "bad games" yet the melancholy and the fact that they represented the origin kept them being relevant and mentioned. One major success to be mentioned would be [[/assets/databases/games/unique/donkey_kong_country|Donkey Kong Country]] that we include amongst our memorable games due to the technological achievement of a 3D game without using a dedicated graphics card. |
| |
====== Save Window and Icon Positions ====== | ====== Save Window and Icon Positions ====== |
| |
| |
The ''Libs/'' as well as the ''Libs/mui'' sub-directories contain duplicated files for various processors. This bundle by default uses the standard ''000'' files but in case you benefit from a 020 or better processor, feel free to use a file manager and replace the corresponding files by their counterparts. For instance, for a 020 CPU or better, the ''Libs/mui/ImageDB.mcc'' file would be replaced by ''Libs/mui/ImageDB_68020.mcc''. | The ''Libs/'' as well as the ''Libs/mui'' sub-directories contain duplicated files for various processors. This bundle by default uses the standard ''000'' files but in case you benefit from a 020 or better processor, feel free to use a file manager and replace the corresponding files by their counterparts. For instance, for a 020 CPU or better, the ''Libs/mui/ImageDB.mcc'' file would be replaced by ''Libs/mui/ImageDB_68020.mcc''. |
| |
| ====== Getting Public Screens to Work on Picasso96 ====== |
| |
| When using RTG graphics with Picasso96, depending on the configuration, the public screens may not work at all such that any program that needs to render onto a separate public screen other than the Workbench screen will be simply inaccessible. |
| |
| {{fuss:fuss_amiga_picasso96_public_screens.png?512}} |
| |
| To get public screens working properly on Picasso96 when using RTG graphics, the monitor file has to be edited and the following Picasso96 tooltypes set: |
| |
| * ''DisplayChain=YES'' - this allows the Amiga signal to be passed through, |
| * ''FakeNativeModes=YES'' - this allows software that uses public screens to render properly |
| |
| Even though certain programs may experience issues with screen promotion, an utility such as ModePro will allow the user to promote public screens without the use of the fake native modes built into Picasso96. |
| |
| ====== Making Elbox FastATA work alongside AmigaOS 3.2 ====== |
| |
| When upgrading to AmigaOS 3.2, the following issues concerning the Elbox FastATA controller are to be observed when the Amiga boots: |
| |
| * ''LoadResident'' is attempting to patch ''scsi.device'' but ''scsi.device'' might have been already patched and made resident by the Elbox FastATA driver (''ATA3.driver'') such that ''LoadResident'' has to be run with the ''DOWNGRADE'' switch or ''LoadResident'' will fail patching ''scsi.device'' and skip the rest of the patches. |
| * ''SetPatch'' fights over ''scsi.device'' with the Elbox FastATA driver (''ATA3.driver'') because ''SetPatch'' wants to apply the LED patch, such that ''SetPatch'' must be run with the ''NODRIVELEDPATCH'' parameter, |
| * ''ATA3.driver'' can be run after ''SetPatch'' and made resident or not |
| |
| Thus, a working configuration snippet from ''S:startup-sequence'' would end up looking like the following (just the sequence and the switches are important): |
| <code dos> |
| C:Version exec.library version 47 >NIL: |
| If Warn |
| C:LoadModule L:System-Startup ROMUPDATE DOWNGRADE |
| EndIf |
| |
| If Exists C:ATA3.driver |
| C:ATA3.driver QUIET |
| EndIf |
| |
| C:SetPatch NODRIVELEDPATCH |
| </code> |
| |
| For good measure, force delete the ''DEVS:A1200/scsi.device'' such that the default OS 3.2 ''scsi.device'' file does not exist at all: |
| <code dos> |
| delete force SYS:Devs/A1200/scsi.device |
| </code> |
| |
| In case a revert is desired, the ''SYS:Devs/A1200/scsi.device'' file can be found on the modules disk of the OS 3.2 distribution. |
| |
| ====== Get the Full Path to a Directory or File ====== |
| |
| The ''NameFromLock'' AmigaOS function will obtain a fully qualified path to a directory or file: |
| <code c> |
| lock = Lock(file, ACCESS_READ); |
| path = NameFromLock(lock, buffer, PATH_MAX); |
| fprintf(stdout, "%s\n", path); |
| </code> |
| |
| where ''file'' can be the relative (or absolute) path to a file or directory. |
| |
| ====== Speeding Up Quake 1 ====== |
| |
| Quake uses a ''pak0.pak'' inside the ID1 directory that contains some of the more basic models, sounds and maps. [[http://warpclassic68k.blogspot.com/p/dl_30.html|Cosmos]] built an alternate ''pak0.pak'' made to speed up Quake considerably by removing, updating or fixing some the more demanding assets. |
| |
| * {{fuss:pak0.lha}} |
| |
| The ''pak0.pak'' file just has to be replaced by the new ''pak0.pak'' file provided from the archive. In case a version of quake is used that does not use ''pak0.pak'' files such as [[http://aminet.net/package/game/shoot/QuakeWOS|QuakeWOS]] the PAK file can still be used. The contents of the ''ID1'' folder inside the quake folder must be overwritten with the files from the unpacked ''pak0.pak'' file. |
| |
| ====== Blizzard PPC RAM Settings ====== |
| |
| The following RAM settings should be made in the BlizzardPPC BIOS (hold <key>ESC</key> on bootup to access the BlizzardPPC BIOS) in order to ensure a stable system: |
| |
| * ''Free Config'' |
| * ''68k No Read Waitstate'' |
| * ''68k No Write Waitstate'' |
| * ''68k PreCharge'' |
| * ''PPC Read Waitstate'' |
| * ''PPC Write Waitstate'' |
| * ''PPC PreCharge'' |
| |
| ====== Getting Games to Work and Warp3D Compatibility ====== |
| |
| The following games manifest various issues ranging from a "white screen", "black screen", unexplained lag to outright crashing from the get-go: |
| |
| ^ Game ^ Problem ^ |
| | Payback | White screen using hardware render or crashing at some point during the game. | |
| | The Feeble Files | Laggy | |
| | Wipeout2027 | Laggy and crashes after some time. | |
| | Warp3D Demos | Gears demos crash after some time. | |
| |
| The solution is to use the Warp3D V4.0 library instead of the most recent Warp3D V5.1. |
| |
| ====== Fix Quake 1 Error ====== |
| |
| When starting Quake 1, if Quake crashes and the following error is displayed: |
| <code> |
| I_Error: Hunk_Alloc: failed on 1544814608bytes |
| </code> |
| |
| attempt to delete the ''ID1/glquake'' folder and restart the game. |
| |
| ====== Setting Application Icons ====== |
| |
| A feature of Workbench is that, using a button, some application windows will minimize into a Desktop icon. The Amiga Workbench had no concept of "minimizing windows" and there was no way to hide an application unless the application itself provided a way to do so. |
| |
| Software like [[http://www.aminet.net/package/util/misc/IconifyGadget|IconifyGadget]] or the more advanced [[http://www.aminet.net/package/util/misc/PowerWindowsNG|PowerWindows(NG)]] was created that would patch Workbench to allow any and all desktop windows to be iconified. |
| |
| Unfortunately, all applications that would have been iconified using the new patched Workbench feature would all display the same default icon, which is extremely confusing. For that purpose, software like [[http://www.aminet.net/package/util/wb/appchange10|appchange]] appeared that could be combined with the new "minimize to icon" feature that would allow configuring an icon for each minimized application in part. |
| |
| |
====== Index ====== | ====== Index ====== |
| |
{{indexmenu>fuss/amiga}} | {{indexmenu>fuss/amiga}} |