Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - tr1p1ea

Pages: 1 [2] 3 4 ... 44
16
F-Zero 83+ / Re: F-Zero Progress Thread
« on: June 21, 2014, 09:09:38 pm »
Some people move quickly through calc land, calc84 is one of those people ... onto bigger and better things.

17
WabbitStudio Software Suite / Re: CSE support for Wabbitemu ?
« on: June 18, 2014, 12:49:17 am »
Hhmm...

Ok then it must be because im trying to run it on an XP machine at work. Is this made with VS2012 by any chance?

18
WabbitStudio Software Suite / Re: CSE support for Wabbitemu ?
« on: June 16, 2014, 10:10:21 pm »
I was wondering if there was a 32-bit build?

19
TI Z80 / Re: xLIB 84C Edition
« on: June 09, 2014, 11:11:27 pm »
Yeah there isnt going to be anything here that will stop the TIOS from using Ans when assigning data to a string sadly. Though I will think about possible ways to do it - just with the timeline for 8.1 im not sure that anything will make it for this version.


EDIT This is what has been added/modified so far for DCSE8.1:


Code: [Select]
SETUPCOLOURMODE: (TIOS VALUES): -------------------------------
real(0,3,VALUE
VALUE defines action to take:
0 = FULL colour
1 = 8COLOUR
2 = COLOURINVERT
3 = COLOURINVERTOFF (restore to normal)
4 = FILLSCREEN
5 = SETCOLOUROFFSET (DCSE8.1)

To invert the colours on the screen you would do:

real(0,3,2

To restore the colours back to normal you can do:

real(0,3,2

This is because inverting something twice will restore it back to nomral.

To restore the colours back to normal when you dont know the previous state of the screen:

real(0,3,3

To FILL the screen (active GRAM side only) with a colour from the standard xLIB 256 colour palette:

real(0,3,4,COLOUR,UPDATELCD

To set the COLOUR_OFFSET value which is used by sprite and shape routines (note that VALUE is between 0-255)
This will change the colour values per pixel of sprites as they are drawn to the LCD. It can be used for
special effects (magic animations for example):

real(0,3,5,VALUE

=================================================================================================================

GETKEY UP/DOWN/LEFT/RIGHT CHECKTILE LIST (DCSE8.1):
---------------------------------------------------
real(2,5,USERVAR_X,USERVAR_Y,VALUE_X,VALUE_Y,USERVAR_MAPWIDTH,COLLISIONTILE,MAPSTRING,X0,Y0,X1,Y1
USERVAR_MAPWIDTH = width of tilemap in tiles (uservar 0-255)
COLLISIONTILE = upper limit of walkable tiles (any tile less than this will be walkable)
MAPSTRING = string variable holding tilemap data (0-10)
X0 = left x coordinate of collision box
Y0 = top y coordinate of collision box
X1 = right x coordinate of collision box
Y1 = bottom y coordinate of collision box

This function is the same as the above however it will return information regarding any keypresses and
any collided tiles in a 'real list' contained in with the format:

{KEY_PRESS, NUM_COLLIDED_TILES, COLLIDED_TILES_LIST} where:

KEY_PRESS = -1,0,1,2,3 = NOARROW,UP,DOWN,LEFT,RIGHT
NUM_COLLIDED_TILES = number of tiles collided against given the arguments in the call
COLLIDED_TILES_LIST = list of tiles collided against given the arguments in the call


GETKEY UP/DOWN/LEFT/RIGHT/DIAGONAL CHECKTILE LIST (DCSE8.1):
------------------------------------------------------------
real(2,6,USERVAR_X,USERVAR_Y,VALUE_X,VALUE_Y,USERVAR_MAPWIDTH,COLLISIONTILE,MAPSTRING,X0,Y0,X1,Y1
refer to the above function, adds diagonal keypresses as well

=================================================================================================================

DRAWSPRITECHECKCOLLISIONA (TIOS VALUES, DCSE8.1):
-------------------------------------------------
real(4,6,COUNT,X,Y,W,H,CX0,CY0,CW0,CH0....CXn,CYn,CWn,CHn
COUNT = number of coordinates to check against
X = master X to test list of coordinates against
Y = master Y to test list of coordinates against
W = master W to test list of coordinates against
H = master H to test list of coordinates against
CX0 = first X to test against master X
CY0 = first Y to test against master Y
CW0 = first W to test against master W
CH0 = first H to test against master H
CXn = nth X to test against master X
CYn = nth Y to test against master Y
CWn = nth W to test against master W
CHn = nth H to test against master H

nth should be equal to COUNT

This function will test the rectangular coordinates specified by the 'master X,Y,W,H' against each iteration of rectangular
coordinates from CX0,CY0,CW0,CH0 to CXn,CYn,CWn,CHn and will return

0 or 1 in Ans where 0 = no collision between the 'master set' and the list and 1 = a collision with at least 1 set isfound
A list of collided coordinate indexes in the user-defined 'real list' "XL" in the format:

{TOTAL_COORDS_COLLIDED,INDEX0...INDEXn} Where:
TOTAL_COORDS_COLLIDED = total number of rectangular indexes in the call that collide with the 'master set'
INDEX0 = first index where 0 = the rectangular coordinates [CX0,CY0,CW0,CH0] and n would equal the [CX0,CY0,CW0,CH0]

Note that user-define list "XL" is overwritten if it already exists

For example

Rectangles at: 

X = 10 
Y = 10 
W = 8 
H = 8 

Tested against others where: 

X = 15 
Y = 15 
W = 8 
H = 8 

X = 48 
Y = 32 
W = 16 
H = 16 

X = 8 
Y = 0 
W = 64 
H = 16 

Like so: 
 

The call would be: real(4,6,3,10,10,8,8,15,15,8,8,48,32,16,16,8,0,64,16 

And the result would be: 
Ans = 1
XL = {1,2,0,2 


Ans=1 = collision found
{1 = collision found (would be 0 if no collisions occured) 
2 = number of collisions found
0 = collision with index 0
2 = collision with index 2

Index 1 is the square for which there was no collision. 

You can check if there is a collision by using:

If Ans
If LXL(1)

Or by a similar method.


DRAWSPRITECHECKCOLLISIONB (USERVAR VALUES, DCSE8.1):
----------------------------------------------------
real(4,7,COUNT,X,Y,W,H,CX0,CY0,CW0,CH0....CXn,CYn,CWn,CHn
COUNT = number of coordinates to check against
X = master X to test list of coordinates against (uservar)
Y = master Y to test list of coordinates against (uservar)
W = master W to test list of coordinates against (uservar)
H = master H to test list of coordinates against (uservar)
CX0 = first X to test against master X (uservar)
CY0 = first Y to test against master Y (uservar)
CW0 = first W to test against master W (uservar)
CH0 = first H to test against master H (uservar)
CXn = nth X to test against master X (uservar)
CYn = nth Y to test against master Y (uservar)
CWn = nth W to test against master W (uservar)
CHn = nth H to test against master H (uservar)

This function is the same as above however it takes references to USERVAR values as opposed to values directly.


DRAWSPRITESEQUENTIALLISTA (TIOS VALUES, DCSE8.1):
-------------------------------------------------
real(4,8,X,Y,WIDTH,HEIGHT,XOFFSET,YOFFSET,TRANSINDEX,UPDATELCD,PICINDEXSTART,PICINDEX0
X = x value
Y = y value
WIDTH = width of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
HEIGHT = height of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
XOFFSET = offset for x value
YOFFSET = offset for y value
TRANSINDEX = transparent colour index, and colour in the sprite that matches this will be drawn transparent (0-255)
UPDATELCD = 0/1 to update LCD after drawing
PICINDEXSTART = pic index to start drawing from (in following list)
PICINDEX0 = pic index in sprite data sheet

This function will draw a sprite that of any size as per the same fashion as DRAWSPRITEA with the only difference
being that you DONT need to specify each PICINDEX for a largesprite, rather you only need to specify the FIRST PICINDEX.
This means that your 8x8 sprite chunks will need to follow each other in your TILEPIC in SEQUENTIAL ORDER. The makeup of
a large sprite is the same:

16x16 sprite list layout:

---------
| 1 | 3 |
---------
| 2 | 4 |
---------

24x24 sprite list layout:

-------------
| 1 | 4 | 7 |
-------------
| 2 | 5 | 8 |
-------------
| 3 | 6 | 9 |
-------------

For both of the above you only need to specifiy the PICINDEX '1' (along with appropriate WIDTH/HEIGHT ETC) to draw.

The advantage is that you save space in BASIC code, speed of execution and you can maximise the space in your TILEPICS.
The drawback is that the layout of sprites requires more work when creating your TILEPICS.

You can use the PICINDEXSTART argument to have largesprite 'frames' as each PICINDEX you supply will be the STARTING INDEX
for each frame so having:

real(4,8,10,10,2,2,0,0,248,1,0,10,20

Will draw a 16x16 sprite with the 4 '8x8 chunks' starting at INDEX 10 (10,11,12,13). If you change the PICINDEXSTART
argument to 1 then the 16x16 sprite will be made up of the 4 '8x8 chunks' starting at INDEX 20 (20,21,22,23).


DRAWSPRITESEQUENTIALLISTB (USERVAR VALUES, DCSE8.1):
----------------------------------------------------
real(4,9,USERVAR_X,USERVAR_Y,WIDTH,HEIGHT,XOFFSET,YOFFSET,TRANSINDEX,UPDATELCD,PICINDEXSTART,PICINDEX0
X = x value (uservar 0-255)
Y = y value (uservar 0-255)
WIDTH = width of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
HEIGHT = height of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
XOFFSET = offset for x value
YOFFSET = offset for y value
TRANSINDEX = transparent colour index, and colour in the sprite that matches this will be drawn transparent (0-255)
UPDATELCD = 0/1 to update LCD after drawing
PICINDEXSTART = pic index to start drawing from (in following list)
PICINDEX0 = pic index in sprite data sheet

This function is the same as above however it takes references to internal USERVARS as opposed to values directly


DRAWSPRITETILEBGLISTA (TIOS VALUES, DCSE8.1):
---------------------------------------------
real(4,10,LISTCOUNT,LISTWIDTH,HEIGHT,XOFFSET,YOFFSET,TRANSINDEX,UPDATELCD,MAPWIDTH,MAPSTRING,X0,Y0...Xn,Yn
LISTCOUNT = number of tiles in list
WIDTH = width of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
HEIGHT = height of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
XOFFSET = offset for x value
YOFFSET = offset for y value
TRANSINDEX = transparent colour index, and colour in the sprite that matches this will be drawn transparent (0-255)
UPDATELCD = 0/1 to update LCD after drawing
MAPWIDTH = width of tilemap
MAPSTRING = string variable holding tilemap data (0-10)
X0 = first X value to draw tile at
Y0 = first Y value to draw tile at
Xn = last X value to draw tile at
Yn = last Y value to draw tile at

This function will draw the tiles for width*height at the sprite coordinate listed from X0,Y0 to Xn,Yn. The resultant tiles
will be aligned to the map (it will only draw at intevals of 8-pixels). This is useful for restoring a tilemap background
that has been overwritten by a list of sprites. As mentioned this function is the same as DRAWSPRITETILEBG just witha list.


DRAWSPRITETILEBGLISTB (USERVARS VALUES, DCSE8.1):
-------------------------------------------------
real(4,10,LISTCOUNT,LISTWIDTH,HEIGHT,XOFFSET,YOFFSET,TRANSINDEX,UPDATELCD,MAPWIDTH,MAPSTRING,X0,Y0...Xn,Yn
LISTCOUNT = number of tiles in list
WIDTH = width of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
HEIGHT = height of sprite in 8x8 chunks (an 8x8 sprite is 1, 16x16 is 2, 12x12 is also 2 etc)
XOFFSET = offset for x value
YOFFSET = offset for y value
TRANSINDEX = transparent colour index, and colour in the sprite that matches this will be drawn transparent (0-255)
UPDATELCD = 0/1 to update LCD after drawing
MAPWIDTH = width of tilemap (uservar 0-255)
MAPSTRING = string variable holding tilemap data (0-10)
X0 = first X value to draw tile at (uservar 0-255)
Y0 = first Y value to draw tile at (uservar 0-255)
Xn = last X value to draw tile at (uservar 0-255)
Yn = last Y value to draw tile at (uservar 0-255)

This function is the same as above how it takes references to internal USERVARS as opposed to direct values in the call

=================================================================================================================

DISPLAYBGPIC32 (TIOS VALUES, DCSE8.1):
--------------------------------------
:"APPVARNAME
real(5,6,UPDATELCD
UPDATELCD = 0/1 to update LCD after drawing

This function will display a custom 32 colour 160x120 image (scaled to fullscreen) appvar (name stored as a string in ANS).

To display a bgpic named "BGTEST":
:"BG32TEST
:real(5,6,1

=================================================================================================================

FILLRORTATECOLOURSRECTANGLE (TIOS VALUES, DCSE8.1):
---------------------------------------------------
real(7,13,X0,Y0,WIDTH,HEIGHT,UPDATELCD
X0 = left x value
Y0 = top y value
WIDTH = width of rectangle
HEIGHT = height of rectangle
UPDATELCD = 0/1 to update LCD after drawing

This function draws a filled rectangle starting at X0,Y0 for WIDTH,HEIGHT. Any pixles that it overlaps
will be rotated according to the value of COLOUR_OFFSET (see SETUPCOLORMODE in the SETUP section)

20
TI Z80 / Re: Glib : a 3D graphics axe library
« on: June 09, 2014, 11:08:14 pm »
Wow looks great!

How big can the worlds be?

21
TI Z80 / Re: xLIB 84C Edition
« on: June 06, 2014, 04:41:53 am »
Good news, i fixed the Output( bug! Now xLIBC commands play nicely with the TIOS :).

Also i discovered that returning values into a List in Ans is SLOW. So slow that it halved the fps of the xLIBC DEMO :S. But the workaround is that I now create a user-defined list call "XL" that holds all the arguments needed. This is only for the Sprite Collision routines. But I probably should port it over to the getKey->List routine as well.

22
TI Z80 / Re: xLIB 84C Edition
« on: June 04, 2014, 02:23:15 am »
Well you can still draw to both sides of GRAM without setting half-res mode, you just need to do it in 2 calls.

23
TI Z80 / Re: xLIB 84C Edition
« on: June 02, 2014, 11:20:53 pm »
There is already sprite<->tilemap collisions but no facility for sprite<->sprite collisions.

24
TI Z80 / Re: xLIB 84C Edition
« on: June 02, 2014, 07:13:54 pm »
Brief explanation of sprite collision function, it tests for collisions between rectangular coordinates so if you have say a sprite that is:

X = 10
Y = 10
W = 8
H = 8

And you wanted to test if this 'rectangle' overlaps with an enemy sprite at:

X = 15
Y = 15
W = 8
H = 8

Like so:


Then you can use the function to check:

real(4,6,1,10,10,8,8,15,15,8,8

In which case they do collide so the result will be a list:

{1,1,0

{1 = collision found
  1 = number of collisions found
  0 = index of collision passed with real( statement

And since there was only 1 set of coordinates passed the first index that collided is 0 (the red square).

Another case:

Rectangles at:

X = 10
Y = 10
W = 8
H = 8

Tested against others where:

X = 15
Y = 15
W = 8
H = 8

X = 48
Y = 32
W = 16
H = 16

X = 8
Y = 0
W = 64
H = 16

Like so:


The call would be: real(4,6,3,10,10,8,8,15,15,8,8,48,32,16,16,8,0,64,16

And the result would be:

{1,2,0,2

{1 = collision found (would be 0 if no collisions occured)
  2 = number of collisions found (green and red)
  0 = collision with index 0 (red)
  2 = collision with index 2 (green)

Index 1 is the orange square for which there was no collision.

25
Gaming Discussion / Re: Is the 3DS worth it ?
« on: May 31, 2014, 11:40:23 pm »
Criticising a system because of its graphics .... on a calculator forum!?!

:D.

26
TI Z80 / Re: xLIB 84C Edition
« on: May 30, 2014, 05:35:56 am »
I have done a little more work on the enemy sprites, it can be quite challenging to get something recognizable at 8x8 and with only 2 frames for animation.



See if you can recognise: snail, beetle, jellyfish, scorpion, rat, cat, snake, crab, bat, spider & butterfly.

Still thinking up ideas to make the speed at little better (this is BASIC though).

27
TI Z80 / Re: xLIB 84C Edition
« on: May 28, 2014, 08:54:20 pm »
Well i think the next testing phase for DCSE8 is early June, and new xLIBC commands will be included.

28
TI Z80 / Re: xLIB 84C Edition
« on: May 28, 2014, 06:38:13 pm »
The animated tiles are a bi-product of having 2 GRAM areas, I take advantage of the 'replacetile' function so that i only need 1 tileset. Basically i do:

DRAWMAP GRAM1
REPLACE ANIMATED TILES
DRAWMAP GRAM2
RESTORE ANIMATED TILES

Then everytime you do an UPDATELCD, you get animated tiles!

The trick is to come up with animations that work with only 2 frames.

29
TI Z80 / Re: xLIB 84C Edition
« on: May 28, 2014, 09:09:57 am »
Nice!

Im working on the example BASIC RPG which helps me come up with functions to speed up gameplay.

One that im going to add is: DRAWTILEBGLIST, which will draw tiles as per a list of X/Y values. This will save time when drawing the backgrounds of onscreen sprites.

Screenie, note that the sprites dont flicker in the emu or on calc:


30
Computer Projects and Ideas / Re: MTD for the OUYA
« on: May 25, 2014, 08:53:03 pm »
Looks great! Ive been thinking about getting an OUYA ... but since i barely have time to play my Wii U ... :(.

But it would be good to dev for and especially to check out your games as well :)..

Pages: 1 [2] 3 4 ... 44