User avatar
Aghnar

Posted Sat Jun 26, 2021 5:35 am

Hi,

There are numerous langages to code an Amiga OCS. But three share the most part : Asm 68K, C and Amos.
Amos is a kind of basic dedicated langage made to use the extraordinary graphics and audio skills of the Amiga.

I personally coded some little things with Amos and you can find some sources here (and an ADF with Amos Pro itself).

I think Amos was first designed for the A500 so with 512kb of Chip memory.

The challenge here is to code a demo (I mean in the sense of demoscene) for ALL the Amiga, so in fact for the A1000 which has only 256kb of chip memory in standard.

So I tried to do a very simple test : simply one bitplane of 320x200 (so 2 colors) that displays the available chip memory in bytes.
It gives that :
a1000_001.png
:shock:

Less than 30kb of free chip memory !!! Less than the "graphics" memory of my Amstrad CPC (which is a cool computer that I got for Christmas 86) !

And I use some instructions to save memory (Close Editor, Set Buffer ...) otherwise the code didn't even work (out of memory)...
I think I can play with some other parameters like the size of the copperlist (12kb by default if I remember well). But it is too low.

Ok it is impossible with a standard Amos pro config to do a demo with a total memory of only 256 Kb.

So the challenge becomes "doing a demo for A1000 with Amos with only 256Kb of chip and a bit more of total memory".
I don't know what kind of memory extensions were usual at the time : 256kb extra chip ? 512 kb extra slow like the 500 ? Other memory ? No extension at all ? If someone knows, I am interested.
Anyway I hope that all the existing used A1000 config have at least a small extension, of any kind, so that the total memory is at least 512kb.

I tried two configurations.
First an A1000 with 256kb of chip, 512kb of slow (cannot set less with winuae). It gives that :
a1000_002.png
So about 145Kb of chip memory.

Secondly an A1000 with 256+256kb of chip memory. It gives that :
a1000_003.png
So about 285Kb of chip memory.

Conclusion : my demo must work with max 145kb of chip available free memory.
Not a lot, but sufficient I think to do some interesting scenes. I will try some simple things soon.

See you
Aghnar

User avatar
McTrinsic

Posted Sun Jun 27, 2021 11:24 am

I really like this!

To be honest, I am not into coding. I learned some very basic stuff when I was like 12 or 13.
This knowledge enabled me years later to write some interesting excel-macros for the job I had.

Now these kind of very basic insights into Amiga programming are just lovely. Highly appreciated. Usually, this is so basic that no one speaks about it but these are exactly the kind of information I appreciate.

Keep it coming! I might not be active giving answers, but will definitely follow the thread :) .

User avatar
Aghnar

Posted Sun Jun 27, 2021 12:57 pm

Hi,

Thanks @McTrinsic. So I continue :-)

I have to test all that on a real A1000.
The demos I coded start all with the logo of my group "Agima". It is a kind of A, generally rotating on the Y axis.
So the idea is to do a quick scene with that and test it.

I reserved a screen of 320x224 in two colors. As a lot of A1000 configs are in NTSC, I am going to consider this resolution. I think "224" is the Y overscan for NTSC (but if I am wrong, don't hésitate to tell me).

One bitplane of 320x224 costs 8.75 Kb of chip memory. I use a double buffer (graphics are not rendered in the current screen but in a copy and at each vbl, logical and
physical screen are swapped). So the cost is 17.5kb.
Moreover I added a 16.5Kb protracter music for the test : Mindtrap by Mindshadow / Nuance used, I belive, in some cracktro by Angels.
So we have a total of about 34Kb.

It gives that on my Winuae A1000 config:
poc_001.png
I am curious to see what it gives on real hardware.
So here is an adf:
poc.zip
(212.15 KiB)

If someone has the kindness to test it on its A1000 (with a bit of extra memory) it will be cool. 8-)
Of course anyone can test it on its config and all the people who want to participate to the demo project are of course welcome. :boing: :boing: :boing:

User avatar
intric8
Seattle, WA, USA

Posted Tue Jun 29, 2021 7:35 pm

Thanks to the very convenient new software Disk Mimic, I was able to very easily and quickly pop your ADF onto my A1K tonight to test out your demo.

Note: my machine is NTSC (yes, the RAM readings you see on my machine are correct) so your MOD music may sound a little fast to your ears. To me, it sounded like a very high-energy almost SID track. Very cool stuff.

The spinning logo reminded me of Aphex Twin.

Here's what a bit of it looks like in action. =)



So, yeah, I guess I cheated? I didn't pull out a stock A1K for the test.

User avatar
Aghnar

Posted Wed Jun 30, 2021 5:12 am

Hi,

@intric8
The mimic disk device is great. I've just seen your video about that. I will use this adf mount system for sure.

Thanks a lot @intric8 to take the time to test the adf. <3
It may seem old-fashioned today, but I'm always marvelled by the fact that you can do something at home and that 10,000 km farther almost in the same time, someone else tests it on his own computer and an Amiga 1000. :boing:

Ah yes, the ntsc tempo. As you probably know, protracker module can be driven by vbl or cia timing. I suppose this old module is driven by vbl. The problem is that it is read too quickly.
So the ntsc aspect is interesting : I've just changed the music and used a module called cantStopU2020 written by an Amiga partner, mAZE, who is a great musician and does a lot of music in the context of the demoscene. This module has been done in a demo we released at the end of the year. I link an adf because now it is so easy to use them. I think this module use the cia timing.

Moreover I tried to center the screen (224 pixels heights). I set a dark gray background to check if it all centered.

It gives that :
poc2.png
I added the fps ratio. So at home I am in PAL and I saw 50fps. I use a simple algo to compute that and if it works, you should see 60 fps (and of course if the rotating A is at the vbl). Not sure it works in ntsc. I hope...

So if you want and if you have a little more bit of time, you can test the new version to see if the module is not too fast and if the screen is well centered. It would be fantastic. But if you don't have time, no problem, I understand :-)
Of course if others people want also to test that with their A1000, welcome :-)

The new version :
poc2.zip
(206.26 KiB)
And adf of a demo using the same music (works with at least 512k of chip and a total of 1mb of memory) :
happy21.zip
(198.35 KiB)
Bye

User avatar
Aghnar

Posted Fri Jul 02, 2021 2:11 pm

Hi,

Now that I have discovered the checkbox "NTSC" hidden in the panel "chipset" of Winuae, I realized that all the demos I had done so far did not work well in NTSC. :(

I knew there would be a problem with the vertical screen size. But that's not a big deal: after all I'm making demos for PAL configurations and so the goal is to take advantage of the standard 256 vertical lines.
But of course with 60Hz in ntsc, it also means that each frame lasts 1/60s and not 1/50s in pal. So we have less time and therefore less power to create smooth scenes. From a certain point of view, an Amiga NTSC is less powerful than an Amiga PAL: it displays faster but you display less if you want to stay at VBL.

Ok. Very interesting :-). So in addition to having to run with not a lot of chip memory, the demo will have to run properly in NTSC. Cool.

Other thing : I contacted mAZE, a musician. He is ok to to do the music. He will be able to create something for the demo at the end of july.
Good news, I have a bit of time to code several scenes. I have two or three things in mind so enough speaking, my next post will be about the first scene of the demo which will start of course by the rotating A of Agima.

Have a nice week end :boing: :boing: :boing:

User avatar
BatteMan
France

Posted Wed Jul 07, 2021 2:16 pm

Tested POC1, POC2 and happy21 on my A1000 with Classic520. All run smooth (60FPS with POC2) but I've a guru meditation with each.
I mounted adf with DiskMimic and launched executables in a Shell.

If you want some specifics tests, I'm your man ;)

User avatar
Aghnar

Posted Wed Jul 07, 2021 3:01 pm

BatteMan wrote: Tested POC1, POC2 and happy21 on my A1000 with Classic520. All run smooth (60FPS with POC2) but I've a guru meditation with each.
I mounted adf with DiskMimic and launched executables in a Shell.

If you want some specifics tests, I'm your man ;)
Thanks a lot @Batteman.
Yes guru meditation at the end if I understand well is a normal behaviour :-) I don't return to the OS so the code crashes. It was only for test purposes.

Cool. I am going soon to post a message about the first scene of the demo. If you want to test it, it will be great !
Thank you for your participation :boing:

User avatar
Aghnar

Posted Thu Jul 08, 2021 2:08 pm

Hi,

I've just finished a first version of the first scene. So here is a small dev log about it.

By the way, I think the demo will be called something like "The one which started it all".
This sentence comes from a thread by @McTrinsic that I read some days ago :-)
But I could call it "Amiga Love" ;-)

The idea of this scene is to show the authors (Agima) and a kind of title.

Agima's logo is a generally rotating A. At each demo I try to add a little original touch.
Here the A will be formed from the rotation of 6 triangles.

The scene starts by initializing a dual playfield, two separate fields of 8 colors (3 bitplanes) each.
For more info on the dual playfield, you can see: https://github.com/alaintreesong/amiga_ ... lPlayfield
But there are plenty of other better docs on the web.

The bitplanes are 320 x 224. If the ntsc display is detected, I center the screen differently.
On winuae it looks pretty centered. But if anyone has an NTSC display, I'd love a little feedback. :boing: :boing: :boing:
It is possible that it is a bit low.

The A is reconstituted in the background field which is double buffered.
So the whole thing is 75kb of memory which is more than half the available chip. Glups :-)

It's a relatively simple 2d geometry, basically a 2d rotation with a reduction of the radius as you go along.
It's drawn with a blitter (turbo draw, blitter fill, blitter clear instruction from Amos).

It gives this :
AmosPro2_003.png
Once the logo is reconstituted it rotates (a simple rotation on the y axis, always rendered with the blitter)

Then the idea is to display the Amiga logo (so the "V").

Amos is really a basic dedicated to the Amiga. In that it is more than a basic of course.
One of the "magic" chips of the Amiga is the COPPER. This coprocessor knows 3 instructions and executes a program at each scan (vbl) called copper list.
The copper list allows you to execute an instruction associated with a position of the electron beam of the image (it was the time when the screens worked like that).
One of these instructions allows you to change the value of an Amiga register that affects the color, resolution, position of a bitplane, a sprite, etc.
This is how even in 2 color mode, you can end up with beautiful rasters for example.

Amos manages the copper in the implementation of the instructions for us. By example an Amos "screen" opened "Screen Open" is in fact an abstraction that leads to a copper list allowing the creation of this screen.

Another instructions are "rain","rainbow","set rainbow" which allow to change the value of a color for a given line. This command is a bit restricted, for example you can't change two colors on the same line.
This is a pure limitation of Amos but not of the Amiga. However I use 6 colors of the foreground to overcome this limitation.
Then the "V" of the Amiga appears with a small reflection made with the copper.

To finish I make appear an Amiga 1000 to set the scene : it is a demo that must run on A1000 !
a1000_011.png
If you want to test the ADF, it is here :
scene1.zip
(221.07 KiB)
I put a temporary music, 1-2-4-5-8 from Goto80. I will change the music every time until I have the music from mAZE.

It's normally perfectly smooth on an A1000 pal but I have some small slowdown on NTSC on the logo formation part (the rest is at 60fps).
I'll see if I can fix that when I finalize the scene.

In scene 2, I'm going to do a little scrolling while continuing to play on the rasters (so the copper).

Feel free to give any feedback.

Bye.
Aghnar

User avatar
McTrinsic

Posted Thu Jul 08, 2021 2:24 pm

These posts are really well done!
Right content, right length and as such a very welcome and pleasure to read in times of bloated YouTube videos...

And I wound be honored to na a source for your title. Thinking about it, Amiga love, AmigaLove and amigalove offer so much to play with I‘d say it would fit better 😉.





Return to “The Lounge”