Main Menu
Menu

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.

Show posts Menu

Messages - Vectrex32

#241
Code Swap / 3D Tie Fighter Demo
October 20, 2016, 11:00:28 AM
While adding 3D graphics features to the Vectrex32, I wrote a BASIC program to demo them. The program allowed you to create Tie fighters (like in the original vector graphics Star Wars arcade game) on the screen and rotate them. But there was a problem: the Tie fighter is such a complex drawing that the Vectrex exhibits the dreaded pen drift, and one side of the Tie fighter starts oscillating, being drawn in a slightly different position in each frame.

So I switched from Tie fighters to pyramids and that's what I included on the Vectrex32's USB drive (see the program Demo3D.bas).

However, some people might want to experiment with the Tie fighter or use it as a code example, so I'm posting it here. You must have Vectrex32 version 1.10 or later to use this.

- Bob

#242
Feature Requests and Bug Reports / Re: Frustrated
October 19, 2016, 10:43:30 AM
The bug fixes and new features are available. Please see http://forums.vectrex32.com/index.php/topic,28.0.html
#243
News and Updates / Version 1.10 Released
October 19, 2016, 10:42:19 AM
Version 1.10 of Vectrex32 is now available. The most notable change is that it now supports 3D graphics (similar to those in the Battlezone and Tail Gunner arcade games, not requiring 3D glasses). There are also significant bug fixes.

Version 1.10 makes 3D graphics easy. You define your shapes with (x, y, z) coordinates, set their rotation with pitch, roll, and yaw angles, and position the objects in a 3D world. Then, you specify the position and direction of the virtual camera to determine what the player sees. Throughout all of this, you don't need to do any trigonometry; the Vectrex32 does all the work of converting the 3D scene into an image on the screen.

A couple of users have run into bugs that cause Out of Memory errors. Those bugs have been fixed.

More information about the new features and bug fixes can be found at http://vectrex32.com/category/documentation/. The release notes describe more bug fixes and the Vectrex32 manual discusses programming 3D graphics.

If you already own a Vectrex32, you will probably want to upgrade the firmware. Vectrex32 has a built-in mechanism for upgrading the firmware but, sadly, it has fatal bugs. So I am going to have to do a recall and upgrade your cartridges myself. This is my fault, so I will cover the cost of your shipping. I apologize for the inconvenience.

If you are in the US and you send me your Vectrex32, I will refund $7 of your purchase price. This will cover your cost of shipping by USPS Priority Mail. You may buy insurance at your discretion. Remember to include your return address with the Vectrex32!!

If you are outside of the US, I will refund $15 of your purchase price. If this is insufficient to cover your shipping costs, please contact me. You may buy insurance at your discretion. Since you are returning the Vectrex32 for repair and it will be sent back to you, neither of us are legally required to pay customs fees. Please explain to your post office that you already paid customs and that you are returning this, and ask them how to mark the package to avoid customs charges. Remember to include your return address with the Vectrex32!!

Send your Vectrex32 to:
   Robert Alexander
   398 Bow Lake Road
   Northwood, NH 03261
   United States of America
#244
Feature Requests and Bug Reports / Re: Frustrated
October 18, 2016, 02:08:13 PM
Hi Pix,

Given that you've already paid customs and you're returning the item for repair, I don't think either of us are required to pay customs. If you take the package to the post office, tell them that you paid customs when it was imported and you're returning it. They might even have a checkbox on the form for this. Then when I send it back to you, I'll mark it "return of personal property" or whatever my post office recommends.

- Bob
#245
Feature Requests and Bug Reports / Re: Frustrated
October 17, 2016, 05:32:32 PM
Hi Pix. I'm sorry for the problem. I am able to reproduce it with your program on version 1.00 but the problem no longer occurs on the latest version of my code. So I believe I have fixed it.

I'm putting the final touches on the next version. In addition to bug fixes, it's going to support 3D graphics! But here's the bad news: my mechanism for upgrading the firmware is buggy in version 1.00 and I can not find a workaround. So when the new code is ready, I'm going to have to do a recall to upgrade the Vectrex32s that have already been sold. This is my fault and I will refund everyone's shipping costs.

When I'm ready to release the new code, I'll be announcing it in the Vectrex32 forums, the VFU facebook page, and on vectorgaming.proboards.com. I hope to do this in the next couple of weeks.

- Bob
#246
You still need a Vectrex to test or run the GSBASIC program.
#247
Feature Requests and Bug Reports / Re: Frustrated
October 01, 2016, 06:24:24 PM
Hi Malban,

Here's an update: I have fixed the memory problems. However, I'm having a problem with the firmware upgrade mechanism, so I need to work that out before I release the fixes.

Sit tight.

- Bob
#248
News and Updates / VIDE Supports the Vectrex32 SmartCart
September 26, 2016, 07:51:31 PM
Vide, the Vectrex Integrated Development Environment, has been enhanced to support the Vectex32 SmartCart. It provides a terminal emulator to give commands to the SmartCart, a file list that shows the files on the SmartCart's drive, and an editor window that shows the program you're working on.

You can read more about it and download the latest version (1.02) at http://vide.malban.de/what-is-vide

Many thanks to Malban for his work on Vide.
#249
Feature Requests and Bug Reports / Re: Frustrated
September 26, 2016, 03:03:38 PM
Hi Malban,

I'm sorry for the problems you're having.

First, the issue with the huge array initializer is that the statement (i.e. from "data = { _" all the way to the last end brace) is 19K. I did not anticipate a statement being this big. The code tokenizes the entire statement before compiling it, and I should see if I can re-architect that to tokenize on-the-fly.

I tried breaking up the huge initializer into multiple statements by initializing smaller arrays and appending them together (using AppendArray). That allowed the program to load. When I ran it, it started building the big array but crashed when it tried to allocate a 24K block of memory. I suspect memory fragmentation but I need to look into it more.

That "Invalid expression" error should have given you a line number. Other error messages print out line and column numbers. I have found this bug and it will be fixed in the next firmware release.

I should handle memory errors more gracefully and/or add a reset button to the SmartCart.

Again, I'm sorry for the bugs and the frustration. I'll work on fixing the former and hope time will heal the latter.

- Bob
#250
General Discussion / Re: Usb drive and RAM?
September 26, 2016, 08:04:20 AM
Hi Malban,

The USB drive space is in the SmartCart's flash memory. There's 2MB of flash and I've reserved 430K of that for the USB drive.

Separately, the SmartCart has 512K of RAM. It's true that you can't fit a BASIC program with 512K of data in it onto the drive, so you can't hard-code enough data to fill up that 512K. You could only make use of that space with generated data.

To anticipate your next question ("why only 430K bytes in the drive when you have 2MB available?"): I need to have all the SmartCart code, including the drive space, fit within 1MB. The reason is that when it comes time to upgrade the firmware, you will copy a compressed file with the new firmware onto the SmartCart's drive. Then, you'll give the upgrade command. It will decompress the file and burn it into the free 1MB section of flash. So basically, the 2MB is divided into two banks, one for the existing firmware and the second for the next version.

There are more sophisticated - and complex - ways of managing firmware upgrades and someday I might have to switch to them.

- Bob


- Bob


#251
General Discussion / Re: Alternate enclosure
September 24, 2016, 08:34:10 AM
I just experimented with plugging a USB into my phone and one of my cameras. They waggle too.

All USB jacks will allow the plug to waggle. To fix it, you need a case that fits snugly around the plug's plastic shell. AFAIK, there is no standard for the size and shape of USB plug shells, so you run the risk of making a case that will fit one USB cable perfectly, while allowing slimmer cables to waggle and preventing bulkier cables from being plugged in at all.
#252
General Discussion / Re: Alternate enclosure
September 21, 2016, 04:00:32 PM
Quote from: 50TBRD on September 21, 2016, 03:33:00 PM
Does the PCB seat better than the stock configuration?

It wouldn't. The issue is the PCB shape, not the enclosure.

I have never had a problem with the Vectrex32 being properly seated. I've heard of one person who had some problems and attributed it to seating. Has anyone else had problems?

- Bob
#253
General Discussion / Re: Simplest program - question
September 21, 2016, 12:43:58 PM
Thank you. I'll incorporate this into the next release of the firmware. (No, I don't know when that will be yet.)

- Bob
#254
General Discussion / Re: Simplest program - question
September 21, 2016, 12:10:28 PM
Quote from: Malban on September 21, 2016, 12:05:08 PM
Is there anything "special" done to the coordinates? I mean - you must translate from x,y to y,x and from absolut to relative...

Yes, I do those conversions, but they're done the same way whether the previous sprite was a Move or not. One sprite doesn't affect the other.

- Bob
#255
General Discussion / Re: Simplest program - question
September 21, 2016, 11:30:51 AM
Quote from: Malban on September 21, 2016, 10:57:41 AM
(Malban == Chris Salomon :-))

Oh... uh... hi Chris. BTW, thank you so much for the tutorial you wrote. None of this would've been possible without it.

Yes, a MoveSprite(0, 0) gets optimized out. Multiple intensity sprites do not get optimized out.

So if I want to get get rid of the Move sprite after the reset to 0,0, can I have a delay and then write $CE to VIA_Cntl?

I guess I don't understand why those lines don't draw right either. I've seen that behavior since I first started working on the SmartCart, so I assumed it was what you were talking about in your tutorial.

A Move sprite compiles to a Moveto_d:


          LDD #(y and x coordinates combined into one word)
          JSR Moveto_d


and a Lines sprite compiles to a Draw_VLp call:


          LEAX 3,PC           ; Loads the address of LineData
          LBRA AfterData   ; Skips over the data
LineData:
          (pattern, rely, relx data goes here)

AfterData:
          JSR Draw_VLp



If there are no sprites between the Move and the Lines, there will be no 6809 code between the snippets above.

- Bob