Thread View: comp.sys.amiga.tech
1 messages
1 total messages
Started by Colin Fox
Wed, 02 Jan 1991 09:03
Amiga 68000 help
Author: Colin Fox
Date: Wed, 02 Jan 1991 09:03
Date: Wed, 02 Jan 1991 09:03
104 lines
3821 bytes
3821 bytes
> in <3735@orbit.cts.com>, (koleman@pnet51.orb.mn.org) writes:
> [ code deleted ]
>Now, the problem is after the palette is there. All of the colors
>move. Sometimes the background color remains that of my workbench.
>Sometimes it is right, but when I move the screen it changes to the
>workbench background. It's always JUST the background. This is
>driving me nuts. I hope it's something really stupid.
Well, all of your problems would be solved by using LoadRGB4 instead
of SetRGB4. You can load the whole palette in and alert the system in
one fell swoop.
Your example would change to:
MOVE.L (screen),A0
LEA (sc_ViewPort,A0),A0
LEA colorarray,A1
MOVEQ #16,D0
MOVE.L (GraphicsPtr),A6
JSR (_LVOLoadRGB4,A6)
RTS
colorarray
DC.W $0B97
DC.W $0000
DC.W $0EEE
DC.W $009D
DC.W $0EE0
DC.W $0E00
DC.W $0FFF
DC.W $0EEE
DC.W $0CCC
DC.W $0BBB
DC.W $0AAA
DC.W $0999
DC.W $0888
DC.W $0666
DC.W $0555
DC.W $0444
This bit of code should make sure that your background colour doesn't
change. Your problem is that all of the system lists didn't seem to
be aware of your palette modifications.
As for your second problem, using a Wait() call (please excuse the (),
I know you are programming in asm, but it makes it easier to denote
functions if there are the brackets. :) is perfectly fine, unless you
are only waiting on one port. In that case, it becomes easier to use
a WaitPort():
MOVE.L (KWPtr),A0
MOVE.L (wd_UserPort,A0),A0
MOVE.L A0,A3 ;cache the pointer to the port
SYSCALL WaitPort
MOVE.L A3,A0
SYSCALL GetMsg
; at this point D0 is now pointing at your IntuiMessage. If you have set
;MENUPICK as one of your INTUIFLAGS, then this may very well be it.
;
; I must make a suggestion here, if you will. If you would like to make
;your menu handling somewhat easier, I suggest creating a slightly larger
;menu structure (the system doesn't care how large the menu structure is,
;as long as it's larger than the minimum size), and put a pointer at the
;end of each structure pointing at the routine to execute if the user
;selected the item. If you do this, it makes menu handling enourmously
;easier. I'll show you:
MOVE.L D0,A0
MOVE.L (im_Class,A0),D0
CMP.L #MENUPICK,D0
BNE DoSomethingElse
MOVE.L (im_IAddress,A0),A0
JSR (mymenu_Extrapointer,A0)
:
:
DoSomethingElse
CMP.L #ANOTHERINTUIFLAG,D0
RTS
; the above code is just an example, of course. It should work as written,
;but it is not complete.
Anyway, this bit of code avoids having to do any of that ugly menu decoding,
while giving you a handy menu-handler.
If you have any problems with this, or further questions, don't hesiate
to e-mail me.
######################################################################
# | | Any opinions expressed #
# Colin Fox | "...graphics is my life..." | herin reflect only those #
# +-----------------------------++ of my employer. Me. :) #
#-----------+ Colin_Fox@MindLink.uucp +-------------------------#
############| Home of req.library |##########################
######################################################################
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads