Overview Features Coding ApolloOS Performance Forum Downloads Products Order Contact

Welcome to the Apollo Forum

This forum is for people interested in the APOLLO CPU.
Please read the forum usage manual.
Please visit our Apollo-Discord Server for support.



All TopicsNewsPerformanceGamesDemosApolloVampireAROSWorkbenchATARIReleases
Running Games and Apps.

How About Starting a Wiki for Amiga Game Devs?page  1 2 3 4 5 

Manfred Bergmann

Posts 226
03 Apr 2020 10:06


Gunnar von Boehn wrote:

  Lets be crystal clear here:
 
  What makes the AMIGA special - is the AMIGA custom chipset.
  This chipset offers playfields, sprites, Copper ...
 
  Games like "Lionheart" or "Shadow of the Beast" were only possible because the coders fully understood the Amiga chipset.
  If you want to enable yourself to code something like this, then you need to learn how the Amiga works.
 
  The Hardware reference manual should be your bible.
  Reads it, and re-type the ASM example in it to get a feeling of how the Amiga chipset works. Understanding the Amiga is the basis for all your coding.
 
 
  Regarding C, and ASM.
  Yes you can code a game in C. This is clear.
  But a good programmer will be able to write faster ASM than any existing C compiler.
 
  This means writing the main work routines in ASM will make your game significantly faster.
  Look at DIABLO tunign last year, look at NEOGEO, look at QUAKE.
  As soon a good coder starts hand ASM tuning - games often get 2 times faster then the C code was before.
 
  If you think you will never be a good coder then no need to learn ASM. But if you want to become a good coder than mastering ASM is important.
 
 
 

 
  I'm assuming that you are talking about Amiga programmers, not programmers in general.
 
  The kind of games that you mention certainly require a good portion of ASM code.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 10:26


Manfred Bergmann wrote:

I'm assuming that you are talking about Amiga programmers, not programmers in general.

 
ASM written by a good coder will give more speed.
So if you want to reach the MAX performance then even today ASM is the answer. Yes even today and even on 4 Ghz CPUs.
 
Intel's SSE vector performance libraries are today developed in ASM,
  and also IBM develops their high performance code for POWER in ASM.
 
Even in very complex, and high end products like big Databases engines - there are functions written today in ASM.
 
Also on the PC many game Engines like "DOOM" / "QUAKE" were tuned in ASM.
 
 
On the PC today people can decide if they want more FPS - buy a CPU with 1 Gigaherz more.
On AMIGA we can not do this.
So if you want more FPS or better "visual" quality the only option that you have is to write better/faster code.
 
As you will know we did a number of developments form 194x Deluxe, to Quake, to Neogeo Emulator to Diablo. Whenever we started to rewrite the core routines in ASM - the game speed highly improved.

For example, the hand tuned ASM on DIABLO on VAMPIRE@85Mhz
is much faster than the C-code running on PPC-OS4-1000Mhz machine.
So tuning in ASM makes a big difference - if a good coder does it!
 
Yes you can write a Voxel game in C. And you will have smooth game play with maybe 80 columns resolution -  but if you want Hires, high quality with 640 columns you will need to tune more.
 


Manfred Bergmann

Posts 226
03 Apr 2020 10:57


Gunnar von Boehn wrote:

Manfred Bergmann wrote:

  I'm assuming that you are talking about Amiga programmers, not programmers in general.
 

 
  Even in very complex, and high end products like big Databases engines - there are functions written today in ASM.
   

I don't doubt that in performance critical situations assembler is still hand coded.

However, in the business that I'm working in other aspects are more important, like:
code cleanliness, readability, maintainability of code. How code components are structured, component cohesion, automated test coverage, abstraction and generalisation.
Immutable structures. Copy structures instead of modify them. In particular this is important in the multi-core world that we have today where you want to avoid having multiple processes writing to the same memory area. Here clearly the performance hit is accepted for better reasonable code.

Quoting Donald Knuth: "Make it work, make it beautiful, make it fast”.
Of course performance and taking care of resources is important. No matter on which level you are programming.

That's why I said "programmers in general". I'm good at all this stuff, but I'm definitely not good in coding ASM. It's not that I don't like it. I'd love to being able to code ASM, on Amiga I mean. But it's just that I have to admit, this is just not my thing.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 11:13


Manfred Bergmann wrote:

That's why I said "programmers in general". I'm good at all this stuff, but I'm definitely not good in coding ASM. It's not that I don't like it. I'd love to being able to code ASM, on Amiga I mean. But it's just that I have to admit, this is just not my thing.

We are no online-university which can teach coding.
We can not do this and this should not be our goal.

But where we have true expert knowledge is the AMIGA chipset, SAGA, and 68K ASM.
And I think here we can share some "tricks" with other people.



Manfred Bergmann

Posts 226
03 Apr 2020 12:43


Gunnar von Boehn wrote:

Manfred Bergmann wrote:

  That's why I said "programmers in general". I'm good at all this stuff, but I'm definitely not good in coding ASM. It's not that I don't like it. I'd love to being able to code ASM, on Amiga I mean. But it's just that I have to admit, this is just not my thing.
 

 
  We are no online-university which can teach coding.
  We can not do this and this should not be our goal.


Of course not. Who said you should.
I can code. Just not assembler to a satisfactory level.
And then, it might not be interesting enough for me to pursue it further.

What I'm saying is: why should it not be possible to code Amiga games in i.e. Blitz, or AMOS?
It sounds like the only true Amiga game must be coded in assembler.

Gunnar von Boehn wrote:

 
  But where we have true expert knowledge is the AMIGA chipset, SAGA, and 68K ASM.
  And I think here we can share some "tricks" with other people.
 

Sure.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 13:04


Manfred Bergmann wrote:

  What I'm saying is: why should it not be possible to code Amiga games in i.e. Blitz, or AMOS?
  It sounds like the only true Amiga game must be coded in assembler.
 

 
It depends fully on your goal.
You can make a "Tick-Tack-Toe" in any language.
 
But if you make a demanding game, like this Voxel simulation.
Then coding in WHATEVER language might give lot less FPS compared to ASM.
 
Or course the most important is to get you algorithm right.
But when you have this, then handtuning in ASM can make a 100% FPS difference over C.
 
For "Tick-Tack-Toe" this makes no difference, for a flight sim the difference is extreme.
 
 
 


Manfred Bergmann

Posts 226
03 Apr 2020 17:44


Gunnar von Boehn wrote:

Manfred Bergmann wrote:

  What I'm saying is: why should it not be possible to code Amiga games in i.e. Blitz, or AMOS?
  It sounds like the only true Amiga game must be coded in assembler.
 

 
  It depends fully on your goal.
  You can make a "Tick-Tack-Toe" in any language.
 
  But if you make a demanding game, like this Voxel simulation.
  Then coding in WHATEVER language might give lot less FPS compared to ASM.
 
  Or course the most important is to get you algorithm right.
  But when you have this, then handtuning in ASM can make a 100% FPS difference over C.
 
  For "Tick-Tack-Toe" this makes no difference, for a flight sim the difference is extreme.
 
   

Sure. We agree on that.

OK, Tic Tac Toe is  very simple example. This could even be done in Hollywood on 68k.

But let me take "The Bards Tale", or the whole series, or things like "Pool of Radiance" from SSI. Those are one of THE games that I remember from the early Amiga times when I got my first A500 like ~30 years ago.
A game like this is certainly possible in Blitz I suppose, and yet it could take advantage of better SAGA graphics.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 18:15


Manfred Bergmann wrote:

But let me take "The Bards Tale", or the whole series,

Yes you are fully right.
You can easily do something like Bards Tale in Basic on AMIGA.
Well BardTale run on a C64 ....




Samuel Crow

Posts 424
03 Apr 2020 18:55


Since we are in agreement about action games needing more optimized code than turn-based strategies, this brings up the subject of reusable code.  AmigaOS and AROS both support shared libraries and it would be nice to have some Assembly routines optimized for various generations of chipsets so that reinventing wheels becomes less necessary.

Sadly though, many hardware-banging games bypass AROS' drivers and disable multitasking.  We need to come up with some best practices for new AROS games and reuse strategies for coders to cooperate.

Is this agreeable to everyone?  Next, is this the thread to discuss things like this in?


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 19:33


Samuel Crow wrote:

  Sadly though, many hardware-banging games bypass AROS' drivers and disable multitasking.
 

 
But is this not very good of these games?
We should be very happy about the games going direct to HW,
as this is the reason so many games work on AROS too.
 
Lets be honest - AROSGFX routine today are incomplete and slow like frozen molasses.
Bypassing AROS and going direct to the HW is the very best games can do - at least for today.
 
 


Samuel Crow

Posts 424
03 Apr 2020 20:26


@Gunnar

Only for today.  If the AROS team is successful in making a multicore AROS kernel, anything that disables multitasking will disable any additional CPU threads and cores.

As for the graphics drivers, they aren't finalized and the shortcomings of OOP.Library and the HIDD architecture are well known by the team.  If we could create an alternative as coders, we could replace AROS' slow graphics with fast ones.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 20:31


Samuel Crow wrote:

  If the AROS team is successful in making a multicore AROS kernel
 

But this would kill all existing legacy software.
This is certainly not a goal that we want, right?
 
 
 
Samuel Crow wrote:

  If we could create an alternative as coders, we could replace AROS' slow graphics with fast ones.
 

You have a point here, AROS HIDD system is not 100% compatible to legacy software and is reason of some of the slowness.
Replacing it with something more compatible to AMIGA Software would be help to improve compatibility of legacy software. Then AROS could really become the heir of AMIGA OS.
 


Manfred Bergmann

Posts 226
03 Apr 2020 20:47


Gunnar von Boehn wrote:

Manfred Bergmann wrote:

  But let me take "The Bards Tale", or the whole series,
 

 
  Yes you are fully right.
  You can easily do something like Bards Tale in Basic on AMIGA.
  Well BardTale run on a C64 ....

Yeah. Well, I believe many games were release on C64 and Amiga in parallel, as well as other platforms at that time. That was the time where porting meant quite literally developing from scratch. Like Katakis or R-Type or many others.
While this meant developing in ASM for the platforms, in particular C64, the more important it meant to up, or downscale the graphics and sound resource data.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 21:09


Manfred Bergmann wrote:

Like Katakis or R-Type or many others.

R-Type is a good example of clever AMIGA HW coding.
R-Type2 makes a whole background playfield only with Sprites.
For this the game constructs a pretty complex Copper list.


Olle Haerstedt

Posts 110
03 Apr 2020 21:47


Samuel Crow wrote:

  Since we are in agreement about action games needing more optimized code than turn-based strategies, this brings up the subject of reusable code.  AmigaOS and AROS both support shared libraries and it would be nice to have some Assembly routines optimized for various generations of chipsets so that reinventing wheels becomes less necessary.
 

 
  Porting BlitzBASIC ASM libs to C would be a cool alternative to give people access to fast graphics routines from C, while getting rid of the BASIC limitations (good for prototyping, bad for bigger projects).

But IMO, the Amiga community also needs to get into more the spirit of open-source and community learning. There's crapload of knowledge hidden in old Amiga forum threads, but they should be distilled into articles and code examples for better access.


Samuel Crow

Posts 424
03 Apr 2020 21:49


Gunnar von Boehn wrote:
Then AROS could really become the heir of AMIGA OS.

With no forward upgrade path for the Vampire, that's about all it would be.  Without a 64-bit upgrade path for a theoretical 68100 in the future?

I was hoping to actually fix some design mistakes from the past.  Replace the Copper bytecode used by MrgCop() with something that encodes at compile time using constant propogation:  SortCop().  Document QBlit() well enough that anybody can encpsulate blitter banging.  And  ultimately, yes, go multithreaded when the 68k goes 64 bit.


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
03 Apr 2020 21:54


Samuel Crow wrote:

And  ultimately, yes, go multithreaded when the 68k goes 64 bit.

My vision for AROS is to be fully compatible to AMIGA OS.
To such a level that one can boot AROS WB with AMIGA Kick and the other way around, and that one could replace and exchange all libs always freely.


Samuel Crow

Posts 424
03 Apr 2020 22:05


Gunnar von Boehn wrote:
My vision for AROS is to be fully compatible to AMIGA OS.
  To such a level that one can boot AROS WB with AMIGA Kick and the other way around, and that one could replace and exchange all libs always freely.

That will have to be source-code incompatible from mainline AROS then.  The AROS team redecorates ambitiously on all the non-68k targets and actually look forward to the day they can fork away from the legacy platform.


Samuel Crow

Posts 424
03 Apr 2020 22:10


Olle Haerstedt wrote:

Porting BlitzBASIC ASM libs to C would be a cool alternative to give people access to fast graphics routines from C, while getting rid of the BASIC limitations (good for prototyping, bad for bigger projects).

There's a guy on GitHub making an Amos interpreter and putting the runtime in RetroMode.library for AmigaOS 4.x.  Will that help?


Olle Haerstedt

Posts 110
03 Apr 2020 22:50


Samuel Crow wrote:

Olle Haerstedt wrote:

  Porting BlitzBASIC ASM libs to C would be a cool alternative to give people access to fast graphics routines from C, while getting rid of the BASIC limitations (good for prototyping, bad for bigger projects).
 

  There's a guy on GitHub making an Amos interpreter and putting the runtime in RetroMode.library for AmigaOS 4.x.  Will that help?

I'm sure it will help someone, haha? What's the use-case? Running 68k AMOS games on OS4? AMOS is just like BB a beginner-friendly language that's good for learning and prototyping, but more serious projects will turn to C/C++/ASM, afaik.

Or will AMOS routines be callable from C? I don't know how performant those routines are, I've heard BB is faster, but would be fun to check it out still. You have a link? Didn't find it at google.

posts 83page  1 2 3 4 5