trufun101 Posted September 25, 2023 Share Posted September 25, 2023 I'm trying to execute the following: jsfLoadClut((unsigned short *)STRPTR(BMPKANOIDLE_clut),0,255); (where BMPKANOIDLE is a sprite in my rapinit.s file.) However, I'm getting the following build error for the jsfLoadClut() line: "error: lvalue required as unary '&' operand" In my assets.txt file: ROM,BMPKANOIDLE,gfx_clut,ASSETS\GFX\kano_idle.BMP In my rapinit.s file: dc.l 1 ; (REPEAT COUNTER) ; Create this many objects of this type (or 1 for a single object) dc.l is_active ; sprite_active ; sprite active flag dc.w 210,0 ; sprite_x ; 16.16 x value to position at dc.w 100,0 ; sprite_y ; 16.16 y value to position at dc.w 0,0 ; sprite_xadd ; 16.16 x addition for sprite movement dc.w 0,0 ; sprite_yadd ; 16.16 y addition for sprite movement dc.l 72 ; sprite_width ; width of sprite (in pixels) dc.l 134 ; sprite_height ; height of sprite (in pixels) dc.l is_inactive ; sprite_flip ; flag for mirroring data left<>right dc.l 0 ; sprite_coffx ; x offset from center for collision box center dc.l 0 ; sprite_coffy ; y offset from center for collision box center dc.l 72/2 ; sprite_hbox ; width of collision box dc.l 134/2 ; sprite_vbox ; height of collision box dc.l BMPKANOIDLE ; sprite_gfxbase ; start of bitmap data dc.l 8 ; (BIT DEPTH) ; bitmap depth (1/2/4/8/16/24) dc.l is_RGB ; (CRY/RGB) ; bitmap GFX type dc.l is_trans ; (TRANSPARENCY) ; bitmap TRANS flag dc.l 72*134 ; sprite_framesz ; size per frame in bytes of sprite data dc.l 72 ; sprite_bytewid ; width in bytes of one line of sprite data dc.l 1 ; sprite_animspd ; frame delay between animation changes dc.l 6 ; sprite_maxframe ; number of frames in animation chain dc.l ani_rept ; sprite_animloop ; repeat or play once dc.l edge_wrap ; sprite_wrap ; wrap on screen exit, or remove dc.l spr_inf ; sprite_timer ; frames sprite is active for (or spr_inf) dc.l spr_linear ; sprite_track ; use 16.16 xadd/yadd or point to 16.16 x/y table dc.l 0 ; sprite_tracktop ; pointer to loop point in track table (if used) dc.l spr_unscale ; sprite_scaled ; flag for scaleable object dc.l %00100000 ; sprite_scale_x ; x scale factor (if scaled) dc.l %00100000 ; sprite_scale_y ; y scale factor (if scaled) dc.l -1 ; sprite_was_hit ; initially flagged as not hit dc.l 0 ; sprite_CLUT ; no_CLUT (8/16/24 bit) or CLUT (1/2/4 bit) dc.l cant_hit ; sprite_colchk ; if sprite can collide with another dc.l cd_keep ; sprite_remhit ; flag to remove (or keep) on collision dc.l single ; sprite_bboxlink ; single for normal bounding box, else pointer to table dc.l 1 ; sprite_hitpoint ; Hitpoints before death dc.l 2 ; sprite_damage ; Hitpoints deducted from target dc.l 72 ; sprite_gwidth ; GFX width (of data) I've looked at other examples, and I don't see the "_clut" variable defined anywhere else. Any ideas why this is bombing out? Quote Link to comment https://forums.atariage.com/topic/355148-compile-error-with-strptr/ Share on other sites More sharing options...
42bs Posted September 25, 2023 Share Posted September 25, 2023 Where comes STRPTR from? Do you declare the label as extern? Quote Link to comment https://forums.atariage.com/topic/355148-compile-error-with-strptr/#findComment-5322987 Share on other sites More sharing options...
Fadest Posted September 25, 2023 Share Posted September 25, 2023 STRPTR is probably a macro to get adress of the clut file. This file is generated inside build folder, alongside the gfxdata file, this is done by the build script For exemple for gb.bmp file What does the build.log in the build folder says about BMPKANOIDLE ? Quote Link to comment https://forums.atariage.com/topic/355148-compile-error-with-strptr/#findComment-5323018 Share on other sites More sharing options...
Sporadic Posted September 25, 2023 Share Posted September 25, 2023 you only want to use STRPTR if the asset is in RAM. If it's in ROM then it's not required. Check out some of the c examples to see. Eg. ABS (RAM) jsfLoadClut((unsigned short *)STRPTR(spritename_clut),2,16); vs ROM jsfLoadClut((unsigned short *)(void*)(spritename_clut),2,16); 1 Quote Link to comment https://forums.atariage.com/topic/355148-compile-error-with-strptr/#findComment-5323109 Share on other sites More sharing options...
trufun101 Posted September 25, 2023 Author Share Posted September 25, 2023 2 hours ago, Sporadic said: you only want to use STRPTR if the asset is in RAM. If it's in ROM then it's not required. Check out some of the c examples to see. Eg. ABS (RAM) jsfLoadClut((unsigned short *)STRPTR(spritename_clut),2,16); vs ROM jsfLoadClut((unsigned short *)(void*)(spritename_clut),2,16); Perfect, that worked - thank you! 1 Quote Link to comment https://forums.atariage.com/topic/355148-compile-error-with-strptr/#findComment-5323197 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.