Ultimate Amiga

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Help me with Editor Object interface  (Read 7046 times)

0 Members and 1 Guest are viewing this topic.

xboxisfinished

  • A600
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 205
  • Generic Amiga User
    • gamemakermagazine.com
Help me with Editor Object interface
« on: March 30, 2015, 01:32:47 AM »

I know guys it have being a very long time since I posted here and I am sure people are wondering about my dot game. Let us say it is excellent for now and I am starting a very fresh and easy project.

I want to make a simple tic tac toe game and in the future improve on it slowly until I have tweaked my programming skill, become better at coding, learned better AMOS completely and on top of that can feel comfortable tacking more complex projects.

Before I even start posting coding questions here I am now asking for help in the interface of AMOS.

Under menu Uers -> Edit Object I am confused completely about the buttons and what they mean. Is there a document that identify the name of these buttons and their functions? Ones I started to draw all the sprites I need for my game I will post AMOS programming question here...but one step at a time sorta speak :)
Logged

bruceuncle

  • AMOS Dev
  • A500
  • *****
  • Karma: 6
  • Offline Offline
  • Gender: Male
  • Posts: 425
  • WINUAE Amiga User
Re: Help me with Editor Object interface
« Reply #1 on: March 30, 2015, 01:40:50 PM »

No problem.  And welcome back.  Thanks to MadAngus and Asymetrix the full AMOS Pro Manual is available in the Downloads section here.  It's a huge manual but the bit you need starts on page 507 "Accessories - Object Editor".
There's a heck of a lot to AMOS (hence the huge manual) but if you start at the beginning and work through the examples, you'll soon get the hang of it.  The Help file also contains links to example programs for most of the instructions.  They're always worth having a look at too.  Hope you have fun using AMOS, most of us do!  :)
Logged
Repeat after me ...  "The AMOS Pro architecture is complex but it is not complicated."

xboxisfinished

  • A600
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 205
  • Generic Amiga User
    • gamemakermagazine.com
Re: Help me with Editor Object interface
« Reply #2 on: March 31, 2015, 02:44:29 AM »

No problem.  And welcome back.  Thanks to MadAngus and Asymetrix the full AMOS Pro Manual is available in the Downloads section here.  It's a huge manual but the bit you need starts on page 507 "Accessories - Object Editor".
There's a heck of a lot to AMOS (hence the huge manual) but if you start at the beginning and work through the examples, you'll soon get the hang of it.  The Help file also contains links to example programs for most of the instructions.  They're always worth having a look at too.  Hope you have fun using AMOS, most of us do!  :)

Thank you a lot :D I am intending to practice my programming skills on AMOS for sure.

By the way I made a very good looking X here and when I attempted to load it after saving it...it is is blank, empty and only saved 80 bytes

but the image is gone...it does not save my work. Where did I go wrong?
« Last Edit: March 31, 2015, 03:10:33 AM by xboxisfinished »
Logged

Hungry Horace

  • Amorphous Blue-Blob Man
  • Site Admin
  • A4000T
  • ******
  • Karma: 307
  • Offline Offline
  • Gender: Male
  • Posts: 3,364
  • Don't forget... Ameboid's need love too!
    • AUW
Re: Help me with Editor Object interface
« Reply #3 on: April 01, 2015, 08:59:00 PM »

i like the online version:

http://www.ultimateamiga.co.uk/HostedProjects/AMOSFactory/AMOSProManual/

the Edit Objects is usually for just editting the bank you have loaded into memoery, right?

I would suggest you use the full export/save command (it's a picture of a cpu chip being pointed towards a disk)  and save your graphics to a .abk file which you can then load up in your coad from fresh if needed.
 
Logged
Quote from: KillerGorilla
because winuae is made of code and your amiga is made of stuff

xboxisfinished

  • A600
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 205
  • Generic Amiga User
    • gamemakermagazine.com
Re: Help me with Editor Object interface
« Reply #4 on: April 02, 2015, 02:04:43 AM »

Sorry...I cannot save abk. It does not work. I do not care how large or big or how many frames there are in the object the size will always be 80 and on top of that it does not save. Sorry :(. Cannot save. I am unable to use the object editor in AMOS.

I am ok with that...it is not like a feature that is important. I can always use PPAINT or any other such program. However come the next question. if I have an animated sprite in PPAINT and I save it with file extension .anim will I be able to open that with AMOS? if I want to have a sprite size say 24 X 24 or even 16 X 16 and what that sprite animated and I saved this sprite into one large spritesheet.iff file will be able to pick a sprite from the spritesheet and animate through the list the way I want?
Logged

Hungry Horace

  • Amorphous Blue-Blob Man
  • Site Admin
  • A4000T
  • ******
  • Karma: 307
  • Offline Offline
  • Gender: Male
  • Posts: 3,364
  • Don't forget... Ameboid's need love too!
    • AUW
Re: Help me with Editor Object interface
« Reply #5 on: April 02, 2015, 01:03:58 PM »

Sorry...I cannot save abk. It does not work. I do not care how large or big or how many frames there are in the object the size will always be 80 and on top of that it does not save. Sorry :(. Cannot save. I am unable to use the object editor in AMOS.

I am ok with that...it is not like a feature that is important. I can always use PPAINT or any other such program. However come the next question. if I have an animated sprite in PPAINT and I save it with file extension .anim will I be able to open that with AMOS? if I want to have a sprite size say 24 X 24 or even 16 X 16 and what that sprite animated and I saved this sprite into one large spritesheet.iff file will be able to pick a sprite from the spritesheet and animate through the list the way I want?

it's strange that .abk will not work.... ?

eitherway, although i do not think there is a way you can load the .anim file, it is definately possible to use a spreitesheet (.iff) and then grab your sprites with the GET BOB command.... i do this on all of my programs!

I can provide an example if you like?
Logged
Quote from: KillerGorilla
because winuae is made of code and your amiga is made of stuff

xboxisfinished

  • A600
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 205
  • Generic Amiga User
    • gamemakermagazine.com
Re: Help me with Editor Object interface
« Reply #6 on: April 03, 2015, 02:58:37 AM »

THANK YOU THANK YOU THANK YOU! Can you give me the example in such away I can use it in a function!!? :D
Logged

Hungry Horace

  • Amorphous Blue-Blob Man
  • Site Admin
  • A4000T
  • ******
  • Karma: 307
  • Offline Offline
  • Gender: Male
  • Posts: 3,364
  • Don't forget... Ameboid's need love too!
    • AUW
Re: Help me with Editor Object interface
« Reply #7 on: April 03, 2015, 12:51:21 PM »

Not as a function, (there is no need for an 'output' afterall) but the attached example has a specific procedure for the job.

You can then fold the procedure away an never worry about it again one it is doing what you need.

The example rips 4 sets of graphics, each stored in a 3x3 grid of 16x16 pixels each, and allows for one pixel 'gap' between each one, which i always think ie easier for using with Dpaint etc.

Logged
Quote from: KillerGorilla
because winuae is made of code and your amiga is made of stuff

xboxisfinished

  • A600
  • *
  • Karma: 0
  • Offline Offline
  • Gender: Male
  • Posts: 205
  • Generic Amiga User
    • gamemakermagazine.com
Re: Help me with Editor Object interface
« Reply #8 on: April 04, 2015, 06:59:34 AM »

Not as a function, (there is no need for an 'output' afterall) but the attached example has a specific procedure for the job.

You can then fold the procedure away an never worry about it again one it is doing what you need.

The example rips 4 sets of graphics, each stored in a 3x3 grid of 16x16 pixels each, and allows for one pixel 'gap' between each one, which i always think ie easier for using with Dpaint etc.

I see your code and can I say I love it! I also realized 16 X 16 is the best sprite size when it comes to blitting for the Amiga computer and 32 X 32 for the big boss sized monsters.

I have some questions to ask for learning process in your code :)

I understand from the procedure _GETCHAR it is a function that actually loads the sprite from the sprite sheet. In the comment you said

' uncomment this to stop the screen from appearing at all
' Screen Hide 2

Here is the question. Say that I cannot put all the sprites in one sprite sheet, say there are lot for some reason and i need to have three to four spritesheets. Does that mean I need to have one screen specific that stores all these spritesheets and I must hide them to avoid seeing the spritesheets before say for example loading a title of the game?

In your comment you said: ' this variable counts how many sprites have being ripped (image number)

COUNT=1

My question, is this counts how many sprites show at one time and thus always and must always be 1.

So for example:

Array 0: Sprite A, Array 1: Sprite B, Array 2:Sprite C, Array 3:Sprite D

and I say Count=1..it loops first from Array 0, then Array 1 as it increments by 1 but if I said Count=2

it loops to Array 1, then array 3 instead of 0 and 2? Is that what you mean by Count=1?

In the procedure _GETCHAR right after determining width and height equals 16 why did you say Ink 14?

Under Wait Vbl does it wait for 50 Hz or it does not matter either 50 or 60 depending on your Amiga NTSC/PAL setting? Like for example R-Type is PAL and if you attempt to run it on NTSC Amiga it freezes with black screen. However, is it because they just entered Wait Vbl or there is more to it with R-Type? The reason I am asking this because I want to get the smoothest frame rate possible, regardless of amount of sprite or tiles and if it means banging right into the vertical line of the screen to produce smoothness and the program relies heavily on timing then I would want to do it but I do not know if Wait Vbl is all I need for that or there assembly or more code needed for that?

Now there is something here that confuses me completely you said in this comment:

' my whole routine is repeated 4 times (variable (), with different X offset
' this allows for 4 cars to be ripped

For C=0 to 3
Question: I do not understand these two lines here. Why? What does it do? Can you explain this to me? How do I know when to do offsetx, offsety or not? Why did you say C*51 and not C*24 or C+51?
  _OFFSETX=1+(C*51)
   _OFFSETY=1

What do you mean by blockwidth and blockheight and why you specify 3? Why not 4? Why not 5? Why not 0?
BLOCKWIDTH=3
BLOCKHEIGHT=3

Why do you have a loop inside another loop? Why do you have a for loop for B and A and why you are using BLOCKWIDTH, BLOCKHEIGHT and why -1 after that?
For B=0 to BLOCKHEIGHT-1
For A=0 to BLOCKWIDTH-1
From here to
    INX=OFFSETX+(A*WIDTH)+A
    INY=OFFSETY+(B*WIDTH)+B
    OUTX=INX+WIDTH
    OUTY=INY+HEIGHT
here I am soooooo confused. I have no idea what you are doing here and why you are doing it? Can you please explain the above code for me?

Get Bob COUNT, INX, INY to OUTX, OUTY
' I thought this above code is to be used on the main program? Why are we getting bob in the procedure if we are not plotting bob now? Yo have placed the get bob inside the loop with the inx, iny, and the count variable. Does that mean you are storing the actual sprite from the spritesheet in an "ARRAY" of Bobs from Count and in the main program we can then display that sprite by simply just changing the number of Count from say 1 to 4 or 5, etc and plot the X,Y coordinate of that bob?

How does that work?

I realized after the Next A, Next B loop you said Count=Count-1. Why?

After that you have another loop which says inverse,. Why do you need an inverse loop? Why did you add Bar, paste and get bob right after the original get bob? What is the purpose of the inverse loop  you have made?

Again you said count=count-1 after the inverse loop. Why?

After leaving the Next C you have made another tiny loop that says

For A=1 to Count-1
   Hot Spot A, $11
Next A

WHY? What is that? What is the purpose of that? Why did you say Screen Close 2?

Thanks that is all I need to know right now. :D Thanks for your patience with me.
Logged

Hungry Horace

  • Amorphous Blue-Blob Man
  • Site Admin
  • A4000T
  • ******
  • Karma: 307
  • Offline Offline
  • Gender: Male
  • Posts: 3,364
  • Don't forget... Ameboid's need love too!
    • AUW
Re: Help me with Editor Object interface
« Reply #9 on: April 07, 2015, 08:19:53 PM »

i think you are going to have to go away and try some stuff out in order to learn what it all does!

I willl try and answer a few questions though...

' uncomment this to stop the screen from appearing at all
' Screen Hide 2

Here is the question. Say that I cannot put all the sprites in one sprite sheet, say there are lot for some reason and i need to have three to four spritesheets. Does that mean I need to have one screen specific that stores all these spritesheets and I must hide them to avoid seeing the spritesheets before say for example loading a title of the game?

All this command does is tell the opened screen (screen number 2) to disappear.  You can acchieve the same result with "AUTO VIEW OFF" i think, which will not display a loaded IFF screen instead. Yes, you can use as many of these as you like, and you dont need to open a new screen for each one.



Quote
In your comment you said: ' this variable counts how many sprites have being ripped (image number)

COUNT=1

My question, is this counts how many sprites show at one time and thus always and must always be 1.

So for example:

Array 0: Sprite A, Array 1: Sprite B, Array 2:Sprite C, Array 3:Sprite D

and I say Count=1..it loops first from Array 0, then Array 1 as it increments by 1 but if I said Count=2

it loops to Array 1, then array 3 instead of 0 and 2? Is that what you mean by Count=1?

No, nothing like that. I wanted my counting to start at 1 instead of zero, that is all.   (this means that first of all i grab 'image 1' instead of 'image 0' which would not work. The code that increases the value of COUNT is later on.


Quote
In the procedure _GETCHAR right after determining width and height equals 16 why did you say Ink 14?

this is there because i have commented out some debugging code that used the TEXT command.  Not everything in my code is needed, it was very rough!

Quote
Under Wait Vbl does it wait for 50 Hz or it does not matter either 50 or 60 depending on your Amiga NTSC/PAL setting?


I assume it depends on the setting.  One extension has the option of VBL Wait X  , where X is the number of lines on the screen the vertical blank reaches for the wait.


Quote
Like for example R-Type is PAL and if you attempt to run it on NTSC Amiga it freezes with black screen. However, is it because they just entered Wait Vbl or there is more to it with R-Type? The reason I am asking this because I want to get the smoothest frame rate possible, regardless of amount of sprite or tiles and if it means banging right into the vertical line of the screen to produce smoothness and the program relies heavily on timing then I would want to do it but I do not know if Wait Vbl is all I need for that or there assembly or more code needed for that?

I have no idea, someone else might need to answer this question. In my experience i've only added a wait VBL if my graphics update routine is occuring more often than needed (and you see graphics failing to update correctly)

Quote
Now there is something here that confuses me completely you said in this comment:

' my whole routine is repeated 4 times (variable (), with different X offset
' this allows for 4 cars to be ripped

For C=0 to 3
Question: I do not understand these two lines here. Why? What does it do? Can you explain this to me? How do I know when to do offsetx, offsety or not? Why did you say C*51 and not C*24 or C+51?
  _OFFSETX=1+(C*51)
   _OFFSETY=1

because there are 51 pixels to a "car" tiles-set.  (16*4 = 48  .... 48 + 3 lines between = 51 pixels)

You need ot look at how i've laid out my tile-set to undertand why this is.


Quote
What do you mean by blockwidth and blockheight and why you specify 3? Why not 4? Why not 5? Why not 0?
BLOCKWIDTH=3
BLOCKHEIGHT=3

Again, you need to look at my tile-set. You will see i have laid out my graphics in 4x4 blocks.



Quote
Why do you have a loop inside another loop? Why do you have a for loop for B and A and why you are using BLOCKWIDTH, BLOCKHEIGHT and why -1 after that?
For B=0 to BLOCKHEIGHT-1
For A=0 to BLOCKWIDTH-1
From here to
    INX=OFFSETX+(A*WIDTH)+A
    INY=OFFSETY+(B*WIDTH)+B
    OUTX=INX+WIDTH
    OUTY=INY+HEIGHT
here I am soooooo confused. I have no idea what you are doing here and why you are doing it? Can you please explain the above code for me?

Not really, you need to understand the layout of the srpite sheet to understand why it is this way. I am not saying you need to use these loops, just that they are an example

C is the loops for the "different cars" (4 different styles)

A/B are the X and Y of my tilesheet grid, so the loop inside the loop allows me to lay the grid out the way i like it.


Quote
Get Bob COUNT, INX, INY to OUTX, OUTY
' I thought this above code is to be used on the main program? Why are we getting bob in the procedure if we are not plotting bob now? Yo have placed the get bob inside the loop with the inx, iny, and the count variable. Does that mean you are storing the actual sprite from the spritesheet in an "ARRAY" of Bobs from Count and in the main program we can then display that sprite by simply just changing the number of Count from say 1 to 4 or 5, etc and plot the X,Y coordinate of that bob?

GET BOB is the whole point of this routine! yes, rhis is grabbing an image from the tile-set and placing it into the BOB (image) bank. (what you call an array)

It has nothing to do with actually plotting the BOB on screen.


You should probably get more to grips with what the commands are for before asking these kind of questions, by looking through the manual.

http://www.ultimateamiga.co.uk/HostedProjects/AMOSFactory/AMOSProManual/7/713.html


Quote
How does that work?

I realized after the Next A, Next B loop you said Count=Count-1. Why?

Because i then grab the bobs again, but inverted. I do not require the "Straight" bob to be grabbed again however, so this command allows me to skip over it.

Quote
After that you have another loop which says inverse,. Why do you need an inverse loop? Why did you add Bar, paste and get bob right after the original get bob? What is the purpose of the inverse loop  you have made?

I require the bobs to be "flipped" to create a 360 degree rotation without drawing images for all directions.

Quote
Again you said count=count-1 after the inverse loop. Why?

See above.

Quote
After leaving the Next C you have made another tiny loop that says

For A=1 to Count-1
   Hot Spot A, $11
Next A

Please read the manual to see what Hot Spot is for!

Quote
WHY? What is that? What is the purpose of that? Why did you say Screen Close 2?

Closing the screen saves memory and is much tidier and good practice ;)


Logged
Quote from: KillerGorilla
because winuae is made of code and your amiga is made of stuff

Pages: [1]   Go Up
 

TinyPortal 2.2.2 © 2005-2022