how do i turn data strings into sprites?
Root / Programming Questions / [.]
zagg2000Created:
that does not help me at all. thanks.That's your choice. See, you have to put some effort in to being helped, too.
When someone asks for help, they expect a good example of a codebase. And HOW to use it. people that teach must also make an effort to make a simplifyed explanation to the problem. -zaggthat does not help me at all. thanks.That's your choice. See, you have to put some effort in to being helped, too.
When someone asks for help, they expectyou expect (though you didn't ask for)
a good example of a codebase. And HOW to use it. people that teach must also make an effort to make a simplifyed explanation to the problem. -zaggYou were given an explanation for how to solve the problem yourself, which is what people that teach well do. There's some 'musts' for people who ask for help from unpaid volunteers, too. They must make it clear what their question is, for starters.
oh wow sorry i thought someone was going to make a real explanation NOTE: I SPENT AN HOUR ON THIS, I HOPE YOU DON'T EVER COME TO ME EVER AGAIN first off, don't use "strings" per se for your DATA pls. do it like this:When someone asks for help, they expect a good example of a codebase. And HOW to use it. people that teach must also make an effort to make a simplifyed explanation to the problem. -zaggthat does not help me at all. thanks.That's your choice. See, you have to put some effort in to being helped, too.
@LABELTHATISNOTALOOPTHANKYOUVERYMUCH ' 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00Now for the colors! (You're going to use a predefined palette of colors defined HERE!)
'DawnBringer's 16 color palette plus the transparent color (Used in Petit Alchemy!) @DB16 DATA 0,0,0,0 DATA 255,20 12 28 DATA 255,68,36,52 DATA 255,48,52,109 DATA 255,78,74,78 DATA 255,133,76,48 DATA 255,52,101,36 DATA 255,208,70,72 DATA 255,117,113,97 DATA 255,89,125,206 DATA 255,210,125,44 DATA 255,133,149,161 DATA 255,109,170,44 DATA 255,210,170,153 DATA 255,109,194,202 DATA 255,218,212,94 DATA 255,222,238,214Now you're going to load it into some arrays like this:
DIM A[17],R[17],G[17],B[17] RESTORE @DB16 FOR C=0 TO 16 READ A[C] READ R[C] READ G[C] READ B[C] NEXTthen make a 2-dimensional array (DIM SPR[X,Y]) and then use COPY to copy the DATA into that array (at this point you should be able to figure out how to use a command from its help page) then use something like
FOR X=0 TO 15 FOR Y=0 TO 15 GPSET OX+X,OY+Y,RGB( A[ SPR[X,Y] ],R[ SPR[X,Y] ],G[ SPR[X,Y] ],B[ SPR[X,Y] ] ) NEXT NEXTto draw the sprite. Note that OX and OY should be changed in increments of 16, to ensure that your sprite stays with the grid.
OPTION STRICT VAR W%, H%, I%, J%, K$, R%, G%, B%, ROW$ VAR PAL_KEY$[0], PAL_VAL%[0] ACLS GPAGE 0, 4 'LOOK AT THE REGULAR PAGE, DRAW ON THE SPRITE PAGE 'LOAD THE "PALETTE" RESTORE @CLR_DATA READ J% FOR I% = 0 TO J% - 1 READ K$, R%, G%, B% PUSH PAL_KEY$, K$ PUSH PAL_VAL%, RGB(R%, G%, B%) NEXT I% 'DRAW THE IMAGE RESTORE @SPR_DATA READ W%, H% FOR J% = 0 TO H% - 1 READ ROW$ FOR I% = 0 TO MIN(W%, LEN(ROW$)) - 1 GPSET I%, J%, LOOKUP(ROW$[I%]) NEXT I% NEXT J% 'DEFINE THE SPRITE WE JUST MADE, I AM PUTTING IT AT INDEX 0 SPDEF 0, 0, 0, W%, H%, W%/2, H% - 1, 1 'VISIBLE, CENTER AT BOTTOM MIDDLE, JUST BECAUSE SPSET 0 OUT I% SPSET 0 OUT J% 'COLOR ONE OF THEM SPCOLOR J%, RGB(255, 8, 8) SPOFS I%, 42, 42 SPOFS J%, 142, 42 LOCATE 0, 10 'SO THE PROMPT DOESN'T DRAW OVER THE SPRITES AND WE CAN SEE THEM END DEF LOOKUP(KEY$) VAR I% FOR I% = 0 TO LEN(PAL_KEY$) - 1 IF PAL_KEY$[I%] == KEY$ THEN RETURN PAL_VAL%[I%] ENDIF NEXT I% END @SPR_DATA DATA 8, 8 DATA "AAAAAAAA" DATA "AXXXXXXA" DATA "AXAAAX A" DATA "AXAAX A" DATA "AXAX A A" DATA "AXX AA A" DATA "AX A" DATA "AAAAAAAA" @CLR_DATA DATA 3 DATA "A", 127, 127, 127 DATA "X", 255, 255, 255 DATA " ", 32, 32, 32I think this is what the original poster wanted. How to define a sprite from data statements.I had been wondering it myself. It turns out the only hard part was figuring out which page to draw on. With this you can have custom sprites in your program without a separate data file. Nice for something with few graphics like say Tetris, or PacMan.
Omg thank you! Your a life saverOPTION STRICT VAR W%, H%, I%, J%, K$, R%, G%, B%, ROW$ VAR PAL_KEY$[0], PAL_VAL%[0] ACLS GPAGE 0, 4 'LOOK AT THE REGULAR PAGE, DRAW ON THE SPRITE PAGE 'LOAD THE "PALETTE" RESTORE @CLR_DATA READ J% FOR I% = 0 TO J% - 1 READ K$, R%, G%, B% PUSH PAL_KEY$, K$ PUSH PAL_VAL%, RGB(R%, G%, B%) NEXT I% 'DRAW THE IMAGE RESTORE @SPR_DATA READ W%, H% FOR J% = 0 TO H% - 1 READ ROW$ FOR I% = 0 TO MIN(W%, LEN(ROW$)) - 1 GPSET I%, J%, LOOKUP(ROW$[I%]) NEXT I% NEXT J% 'DEFINE THE SPRITE WE JUST MADE, I AM PUTTING IT AT INDEX 0 SPDEF 0, 0, 0, W%, H%, W%/2, H% - 1, 1 'VISIBLE, CENTER AT BOTTOM MIDDLE, JUST BECAUSE SPSET 0 OUT I% SPSET 0 OUT J% 'COLOR ONE OF THEM SPCOLOR J%, RGB(255, 8, 8) SPOFS I%, 42, 42 SPOFS J%, 142, 42 LOCATE 0, 10 'SO THE PROMPT DOESN'T DRAW OVER THE SPRITES AND WE CAN SEE THEM END DEF LOOKUP(KEY$) VAR I% FOR I% = 0 TO LEN(PAL_KEY$) - 1 IF PAL_KEY$[I%] == KEY$ THEN RETURN PAL_VAL%[I%] ENDIF NEXT I% END @SPR_DATA DATA 8, 8 DATA "AAAAAAAA" DATA "AXXXXXXA" DATA "AXAAAX A" DATA "AXAAX A" DATA "AXAX A A" DATA "AXX AA A" DATA "AX A" DATA "AAAAAAAA" @CLR_DATA DATA 3 DATA "A", 127, 127, 127 DATA "X", 255, 255, 255 DATA " ", 32, 32, 32I think this is what the original poster wanted. How to define a sprite from data statements.I had been wondering it myself. It turns out the only hard part was figuring out which page to draw on. With this you can have custom sprites in your program without a separate data file. Nice for something with few graphics like say Tetris, or PacMan.