Jump to content
IGNORED

Trolling / Reading / I've now got my idea!


unhuman

Recommended Posts

Well, a variant of the game I'm doing now has been on the TI, but it's a variant. Assuming I can get to it this weekend (and or remember to bring my laptop when I visit my folks)... Hopefully there's something to be seen....

 

Anyhow... I'm glad this topic has spawned some fun discussion.

 

Pretty sure Battlezone only had 2 colors... No white. Unless the version you had someone pulled off the green filter.

 

And, if I don't have anything to combine it with, it's not worth doing. I'm already doing something not combined.

 

:)

Link to comment
Share on other sites

Well BATTLEZONE only has wire frame graphics and three colors on screen. (Green/White/Black)

 

That is about as minimum graphics wise as you can get.

 

I believe we have already concluded that vector graphics games on the TI would run too slow:

http://atariage.com/forums/topic/228142-atarisoft-missing-in-action/page-2?do=findComment&comment=3043483

Link to comment
Share on other sites

Maybe my mind is playing tricks on me-but I seem to remember some Atarisoft advertisments where a TI99/4a Joust box was shown which probably indicated that there was a conversion intended at some point, I definately remember a UK company "Parco" who advertised Robotron for sale, I know I have a copy of the ad somewhere.

Link to comment
Share on other sites

Maybe my mind is playing tricks on me-but I seem to remember some Atarisoft advertisments where a TI99/4a Joust box was shown which probably indicated that there was a conversion intended at some point, I definately remember a UK company "Parco" who advertised Robotron for sale, I know I have a copy of the ad somewhere.

 

Hope this link works, but yes, Joust was advertised for the TI (as well as Jungle Hunt).

 

http://books.google.co.uk/books?id=bWYEAAAAMBAJ&pg=PA7&lpg=PA7&dq=atarisoft+all+the+hits+your+computer+is+missing&source=bl&ots=ggWS7hqw_Q&sig=yV_bJ8oIPtqkxM6GrgwRs7vBCpY&hl=en&ei=mDn2TeSwOI7Msgaq8sCkBg&sa=X&oi=book_result&ct=result&resnum=3&ved=0CCMQ6AEwAg#v=onepage&q=atarisoft%20all%20the%20hits%20your%20computer%20is%20missing&f=false

  • Like 2
Link to comment
Share on other sites

There's nothing special about Joust. Excellent ports/clones have appeared on consoles and computers far less powerful than the TI-99/4a.

Actually, there is something special about Joust. Not necessarily from a game-play standpoint, but on the hardware side the Williams computer that runs Joust, Robotron, Defender, Stargate, Bubbles, and a few others has 48K of RAM backing a 308x256 visible pixel display, using 4-bits (16 colors) per pixel. Board revisions running Joust and Robotron also had a custom blitter chip (two chips actually) that could push around 1M to 2M pixels per second. That makes it very hard to do a *good* accurate port IMO.

Link to comment
Share on other sites

There is one game that has been in DEMO status for awhile... I've been quietly waiting... but I've seen nothing new. It looks like it could be the BEST game ever for the TI.

 

Are we waiting for the F18A to go to 1.6 first? Just curious.

Probably. The 1.6 firmware will have some serious layer changes that were worked out based on the needs and feedback from Rasmus. He is waiting on me to finish the final implementation and get him something to test with. However, I've been unable to allocate time for hobbies for a few months, but I hope to get it finished soon.

  • Like 3
Link to comment
Share on other sites

I second that sentiment. The F18A bitmap layer and the GPU's PIX instruction would be perfect for this. :-)

 

Here's the code for a F18A GPU/PIX based line drawing algorithm if anyone's interested. Note that BSTK and RSTK are WinAsm99's names for the F18A GPU opcodes CALL and RET.

*********************************************************************
*
* Draw a line from (x1,y1) to (x2,y2)
*
* Translated from C version at:
* http://rosettacode.org/wiki/Bitmap/Bresenham's_line_algorithm#C
*
* void line(int x1, int y1, int x2, int y2) {
* 
*  int dx = abs(x2-x1), sx = x1<x2 ? 1 : -1;
*  int dy = abs(y2-y1), sy = y1<y2 ? 1 : -1; 
*  int err = (dx>dy ? dx : -dy)/2, e2;
* 
*  for(; {
*    setPixel(x1,y1);
*    if (x1==x2 && y1==y2) break;
*    e2 = err;
*    if (e2 >-dx) { err -= dy; x1 += sx; }
*    if (e2 < dy) { err += dx; y1 += sy; }
*  }
* }
*
* R0	x1 value
* R1	y1 value
* R2	x2 value
* R3	y2 value
* R13   Color (0-3)
*
* Modifies registers R0-R10
*
LINE   
*	   Setup variables	   
	   CLR	R6				* R6 is sx = 0
	   MOV	R2,R4				* R4 is dx = x2
	   S	R0,R4				* dx = x2 - x1 
	   JGT	DXPOS
	   DEC 	R6				* sx = -1
	   JMP  LINE1
DXPOS      INC 	R6				* sx = 1
LINE1      ABS	R4				* dx = abs(dx)b
	   CLR	R7				* R7 is sy = 0
	   MOV	R3,R5				* R5 is dy = y2
	   S	R1,R5				* dy = y2 - y1 
	   JGT	DYPOS
	   DEC 	R7				* sy = -1
	   JMP  LINE2
DYPOS      INC	R7				* sy = 1
LINE2      ABS	R5				* dy = abs(dy)
	   C	R4,R5				* Compare dx to dy
	   JGT	DXGTR
	   MOV 	R5,R8				* R8 is err = dy
	   NEG 	R8				* err = -dy
	   JMP 	LINE3
DXGTR      MOV	R4,R8				* R8 is err = dx
LINE3      SRA  R8,1				* err = err / 2
	   MOV	R4,R10				
	   NEG	R10				* R10 = -dx
*	   Main loop
LINEL      BSTK	@PLOT	   			* Plot (x1,y1)
	   C	R0,R2				* Compare x1 to x2
	   JNE	CONT				* Continue if x1 != x2
	   C    R1,R3				* Compare y1 to y2
	   JNE	CONT				* Continue if y1 != y2
	   RSTK					* Break
CONT       MOV	R8,R9				* R9 is e2 = err
	   C	R9,R10				* Compare e2 to -dx
	   JLT	LINE4				* Jump if e2 < -dx
	   S	R5,R8				* err -= dy
	   A	R6,R0				* x1 += sx
LINE4      C	R9,R5				* Compare e2 to dy
	   JGT	LINEL				* Loop if e2 > dy
	   A	R4,R8				* err += dx
	   A	R7,R1				* y1 += sy
	   JMP	LINEL				* Loop
*// LINE

*********************************************************************
*
* Plot a pixel at (x,y)
*
* R0	x value
* R1	y value
* R13	color
*
PLOT       MOV	R0,R12
	   SWPB	R12
	   SOC	R1,R12
	   XOP	R12,R13				* PIX
	   RSTK
*// PLOT
  • Like 3
Link to comment
Share on other sites

I've got my idea for my next project. I'll be doing a Compiled XB game. I got my idea reading other threads and... It might just work. It might not given that there's potentially a lot of characters moving around... You may guess. If you guess, I'll fess up. Otherwise... Wait and see!

There are a couple of things you should do.

1 - be sure to use the compiler posted in "Extended BASIC game developers package" in post #1

2 - before doing anything, make the change described in Post 48 in that thread

Then read the part in the manual about sound lists and the COMPRESS utility When your program is finalized, you can use COMPRESS to make images of the VDP memory and store it in DATA statments. Then you can delete the XB lines that created the screen, defined the characters etc. and read that from DATA statements and write directly to VDP with CWRITE. This is way faster and way more compact, and can be used in both XB and compiled programs. Then work through the sound list section of the manual. Sound lists run off the interrupt and once started do not need any intervention by the XB or compiled program. Also you can have 2 sound lists, say background music and then have an explosion sound when desired without interrupting the background music.

Link to comment
Share on other sites

@senior - thanks for pointing that out. I grabbed it from the 2.1 compiler thread since I noticed the one on the development thread was out of date (and commented on that thread as such). I'll fix my comment.

 

I'm going to do audio last. I'm going to make the game "work" in XB first and then endure the pain of making it more compiler friendly. It's just easier to develop that way, especially since I'm rusty...

 

And the 4 way scrolling is in there - fantastic. I had an idea to work around not having that, but looks like I'll be happy.

 

-H

Link to comment
Share on other sites

Just to give you an idea of what can be done, take a look at post #46 in XB Game Developers Package. It shows 1980 gamer's Frogger demo running normally in XB, then writing compressed DATA statements to the screen, character definitions and color table. Note that this is not compiled at all, but still running in XB. The program is 1/5th the size and loads the screen 75x faster!

  • Like 1
Link to comment
Share on other sites

  • 5 years later...

Is this routine meant to run on the f18a gpu directly? I'm trying to access such a routine from c that would do this very thing on a coleco

 

On 10/4/2014 at 5:26 PM, Asmusr said:

 

Here's the code for a F18A GPU/PIX based line drawing algorithm if anyone's interested. Note that BSTK and RSTK are WinAsm99's names for the F18A GPU opcodes CALL and RET.


*********************************************************************
*
* Draw a line from (x1,y1) to (x2,y2)
*
* Translated from C version at:
* http://rosettacode.org/wiki/Bitmap/Bresenham's_line_algorithm#C
*
* void line(int x1, int y1, int x2, int y2) {
* 
*  int dx = abs(x2-x1), sx = x1<x2 ? 1 : -1;
*  int dy = abs(y2-y1), sy = y1<y2 ? 1 : -1; 
*  int err = (dx>dy ? dx : -dy)/2, e2;
* 
*  for(; {
*    setPixel(x1,y1);
*    if (x1==x2 && y1==y2) break;
*    e2 = err;
*    if (e2 >-dx) { err -= dy; x1 += sx; }
*    if (e2 < dy) { err += dx; y1 += sy; }
*  }
* }
*
* R0	x1 value
* R1	y1 value
* R2	x2 value
* R3	y2 value
* R13   Color (0-3)
*
* Modifies registers R0-R10
*
LINE   
*	   Setup variables	   
	   CLR	R6				* R6 is sx = 0
	   MOV	R2,R4				* R4 is dx = x2
	   S	R0,R4				* dx = x2 - x1 
	   JGT	DXPOS
	   DEC 	R6				* sx = -1
	   JMP  LINE1
DXPOS      INC 	R6				* sx = 1
LINE1      ABS	R4				* dx = abs(dx)b
	   CLR	R7				* R7 is sy = 0
	   MOV	R3,R5				* R5 is dy = y2
	   S	R1,R5				* dy = y2 - y1 
	   JGT	DYPOS
	   DEC 	R7				* sy = -1
	   JMP  LINE2
DYPOS      INC	R7				* sy = 1
LINE2      ABS	R5				* dy = abs(dy)
	   C	R4,R5				* Compare dx to dy
	   JGT	DXGTR
	   MOV 	R5,R8				* R8 is err = dy
	   NEG 	R8				* err = -dy
	   JMP 	LINE3
DXGTR      MOV	R4,R8				* R8 is err = dx
LINE3      SRA  R8,1				* err = err / 2
	   MOV	R4,R10				
	   NEG	R10				* R10 = -dx
*	   Main loop
LINEL      BSTK	@PLOT	   			* Plot (x1,y1)
	   C	R0,R2				* Compare x1 to x2
	   JNE	CONT				* Continue if x1 != x2
	   C    R1,R3				* Compare y1 to y2
	   JNE	CONT				* Continue if y1 != y2
	   RSTK					* Break
CONT       MOV	R8,R9				* R9 is e2 = err
	   C	R9,R10				* Compare e2 to -dx
	   JLT	LINE4				* Jump if e2 < -dx
	   S	R5,R8				* err -= dy
	   A	R6,R0				* x1 += sx
LINE4      C	R9,R5				* Compare e2 to dy
	   JGT	LINEL				* Loop if e2 > dy
	   A	R4,R8				* err += dx
	   A	R7,R1				* y1 += sy
	   JMP	LINEL				* Loop
*// LINE

*********************************************************************
*
* Plot a pixel at (x,y)
*
* R0	x value
* R1	y value
* R13	color
*
PLOT       MOV	R0,R12
	   SWPB	R12
	   SOC	R1,R12
	   XOP	R12,R13				* PIX
	   RSTK
*// PLOT

 

Link to comment
Share on other sites

23 minutes ago, Asmusr said:

Yes the routine must be uploaded to VDP RAM and executed by the GPU.

Ok so I have done that previously with the tile scroll routine so I can find that again.

 

i compiled this using asm994a. almost worked for me. i got 1 error

 

 *** Warning #1: Missing END directive
  91  005E 0000         END   * WinAsm99 Supplied Directive

 

edit: i just realized that i don't need to alter that asm994a already added the end statement for me.

 

 

 

 

how do I set in memory these variables does that mean register0 of the f18a?

* R0	x1 value
* R1	y1 value
* R2	x2 value
* R3	y2 value
* R13   Color (0-3)

 

Edited by digress
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...