🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sys.amiga.tech
1 messages
1 total messages Started by Colin Fox Wed, 02 Jan 1991 09:03
Amiga 68000 help
#7772
Author: Colin Fox
Date: Wed, 02 Jan 1991 09:03
104 lines
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