28-Mar-2024 19:11 GMT.
UNDER CONSTRUCTION
[Files] PNG icons with WB3.5 & 3.9ANN.lu
Posted on 20-Oct-2003 15:00 GMT by Amon_Re34 comments
View flat
View list
Elena Novaretti has produced a superb PNG icon patch for OS 3.5/3.9 which lets you use PNG icons, like those in Morph OS.

Download PowerIcons. (Info found on aw.net)

List of all comments to this article
Sorted by date, most recent at bottom
Comment 1Amon_ReRegistered user20-Oct-2003 13:00 GMT
Comment 2Bill Hoggett20-Oct-2003 13:15 GMT
Comment 3Peter Gordon20-Oct-2003 13:24 GMT
Comment 4Anonymous20-Oct-2003 13:42 GMT
Comment 5Anonymous20-Oct-2003 13:47 GMT
Comment 6takemehomegrandmaRegistered user20-Oct-2003 14:46 GMT
Comment 7Amon_ReRegistered user20-Oct-2003 14:55 GMT
Comment 8Kjetil20-Oct-2003 17:21 GMT
Comment 9Amon_ReRegistered user20-Oct-2003 17:26 GMT
Comment 10Kjetil20-Oct-2003 18:49 GMT
Comment 11itix20-Oct-2003 18:57 GMT
Comment 12Kjetil20-Oct-2003 19:12 GMT
Comment 13Roj20-Oct-2003 19:33 GMT
Comment 14Tony20-Oct-2003 19:34 GMT
Comment 15IamCleverToo20-Oct-2003 23:51 GMT
Comment 16Hagge21-Oct-2003 02:15 GMT
Comment 17Amon_ReRegistered user21-Oct-2003 02:38 GMT
Comment 18Amon_ReRegistered user21-Oct-2003 02:39 GMT
Comment 19Seldon21-Oct-2003 05:16 GMT
Comment 20Anonymous21-Oct-2003 10:49 GMT
Comment 21Anonymous21-Oct-2003 10:56 GMT
Comment 22Kjetil21-Oct-2003 12:35 GMT
Comment 23Huh!?21-Oct-2003 14:19 GMT
Comment 24Georg Steger21-Oct-2003 14:28 GMT
Comment 25Kjetil21-Oct-2003 16:36 GMT
PNG icons with WB3.5 & 3.9 : Comment 26 of 34ANN.lu
Posted by Georg Steger on 21-Oct-2003 18:32 GMT
In reply to Comment 25 (Kjetil):
Well, compilers like gcc "implement" library calls through
inline assembly anyway:

#define PutMsg(port, message) \
LP2NR(0x16e, PutMsg, struct MsgPort *, port, a0, struct Message *, message, a1, \
, EXEC_BASE_NAME)

#define LP2NR(offs, name, t1, v1, r1, t2, v2, r2, bt, bn) \
({ \
t1 _##name##_v1 = (v1); \
t2 _##name##_v2 = (v2); \
{ \
register struct Library *const _##name##_bn __asm("a6") = (struct Library*)(bn); \
register t1 _n1 __asm(#r1) = _##name##_v1; \
register t2 _n2 __asm(#r2) = _##name##_v2; \
__asm volatile ("jsr a6@(-"#offs":W)" \
: /* no output */ \
: "r" (_##name##_bn), "rf"(_n1), "rf"(_n2) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
} \
})

But you can actually do that even without assembly. Basically
you just need to type cast the function address pointer in the
LVO to a "pointer to a function with register params xyz ..."
and call it. AROS does that. It looks kinda complicated when
looking at all the macros, etc., but it's basically like this:

struct LVO
{
UWORD jmp_opcode;
ULONG func_addr;
};

#define PutMsg(port,message) \
(\
(void (*)(register struct MsgPort *_port asm("a0"), register struct Message *_message asm("a1"))) \
( ( ((struct LVO *)ExecBase) [-61]).func_addr ) \
(port,message) \
)
Jump...
TopPrevious commentNext commentbottom
List of all comments to this article (continued)
Comment 27nasu21-Oct-2003 19:49 GMT
Comment 28Huh!?21-Oct-2003 19:52 GMT
Comment 29Damo Eurock21-Oct-2003 23:42 GMT
Comment 30Anonymous22-Oct-2003 10:01 GMT
Comment 31Anonymous22-Oct-2003 10:32 GMT
Comment 32StAn22-Oct-2003 15:56 GMT
Comment 33StAn22-Oct-2003 17:36 GMT
Comment 34Anonymous22-Oct-2003 23:17 GMT
Back to Top