I've wanted a Vectrex ever since they came out - 30 years later I finally got one. I won it yesterday on eBay and was surprised when it arrived today via UPS! Turns out the seller is located in Beaumont, a mere 84 miles to the east of Houston.
The unit came with Fortress of Narzod and it's overlay, but not the overlay for the built in game Mine Storm. It also has 2 controllers though one of them auto-centers horizontally, but not vertically, and rattles a bit when moved (this was not
fixed the synchronized rotation issue with large asteroids
When I first started coding Space Rocks, I set it up to support an arbitrary number of styles for each size of asteroid as I didn't know how many would end up in the game. So I wrote the original InitWave routine like this to select a random asteroid style, rotation and speed:
gSpriteAnimSeqID[i] = LARGE_ASTEROID_SEQ_ID + ((LARGE_VARIATIONS * (Random32() & 0xff)) >> ;
gSpriteAnimControl[i] = RandomRotation();
L
Attract mode has been fixed
update to the second easter egg
added third easter egg, No Man's Land, which will start every wave with 12 large asteroids
The problem with Attract mode was caused by moving InitSpriteShotDatastreams() from Vertical Blank to Overscan. When the attract mode was triggered, that function wasn't called so the display kernel datastreams were not initialized. Part of the content of the data streams is indirect jump addresses that are used to to select the play
I believe my last two issues have been resolved.
1) On the collision problem, the original collision logic for wrap-around sprites was handled this way:
hitsomething = Collision(item, x, y)
if (hitsomething == 0 && x < 18) // 18 because the double-wide asteroids hmove left & right
hitsomething = Collision(item, x+160,y)
if (hitsomething)
handle collision
...
The +160 code was in place for the shots, but not the ship or UFO which is why they had the coll
Well, this might be an easy fix. VerticalBlank used to look like this:
void VerticalBlank()
{
InitSpriteShotDatastreams();
DisplayShots();
DisplaySprites();
PrepScoreDatastream();
}
it now looks like this
void VerticalBlank()
{
DisplayShots();
DisplaySprites();
}
I built a special Stress Test ROM that starts out every wave with 12 asteroids. Initially I was seeing a few screen rolls at the start of each wave while destroying asteroids. Once enough had been shot the r
fixed a problem where shots on the left side of screen would pass thru asteroids if they were wrapped around the left & right border. Noticeable with large asteroids, but affected smaller asteroids as well
fixed a "burnt out" bottom segment of player 2's lives display
fixed a bug where using hyperspace would make the Magna-Mines leave the screen
2 players 1 gamepad now works correctly if the controls is set to Left=gamepad, Right=joystick
updated easter egg
Manga-Mines and sa
I'm heading out for dinner with some friends, but got quite a bit done that I wanted to get online for feedback (plus to have my "offsite source code backup"!).
heartbeat timer - changed to use fractional decrement w/9 entry table so that each wave (4-12 asteroids) starts and ends at the same speed.
could start shields and hyperspace after getting killed, fixed
saucer targeted an empty spot at end of round, fixed
Magna-Mine speeds revised, level now taken into account
fixed bug wit
Magna-Mines are no longer tied to the level, there's now a menu option to control them.
Gamepad option.
The Magna-Mines need to have some tweaks to their speed, for one they're much too fast for the Kids level. I also had to modify the launch condition for the Magna-Mines, originally they appeared when 3 asteroids were onscreen, but that meant Kids and Easy levels started right away with a Magna-Mine because they began with 2 and 3 asteroids respectively. I changed it so the launch co
freed up enough ROM to add the two-section Magna Mines
fixed a problem in collision detection that could make the Magna Mine destroy the ship when it was still a pixel away from it
fixed a problem where "split" Magna Mine could appear
revised shot processing so that a single shot cannot take out multiple targets. This is to prevent the player from herding the Magna Mines together to more easily take care of them.
after hit
ROMs
spacerocks20120926_NTSC.bin
spaceroc
updates to sound effects
new menu sound effect
updated Magna Mine graphics
Magna Mine breakup changed to match new graphics
Magna Mine "leave screen" logic revised (should fix the glitch Omegamatrix encountered)
additional space savings (most of which was used by the changes listed above)
54 bytes by replacing SLEEP # with JSR WasteTime#
19 bytes by replacing SLEEP 5 with DEC SLEEP5
183 bytes by making easter egg uppercase only, 3x5 font instead of 3x6, and only having grap
Sound effects by Bob DeCrescenzo!
Added a hyperspace cool-down timer to eliminate infinite-hyperspace. Before you could hold down and continually warp out/warp in w/out risk of collision and only let go of the joystick once you warped into a safe spot. Cool-down time is currently 5 seconds.
A couple of the small killer satellites could explode in the wrong color in monochrome games. This has been fixed.
Fixed a couple minor issues in the menu - the kids down option wasn't always forc
I've fixed it so that the new enemy works in 2-player games. I've also revised the speed as well as fixed a number of minor issues.
All that freed up ROM is almost gone, so I'll have to see what I can do to free up even more space. If successful I'll be able to add the double-section intermediary step.
ARM free = $10(16 bytes)
Bank 5 free = $6b (107 bytes)
Display Data free = $db (219 bytes)
The Display Data free really isn't - Nathan's working on the "XOR data" for the on-the
Phase one of the new enemy. He moves fairly slowly at the moment. The routines are not 2-player aware, so odd things may happen if you play a 2 player game.
Originally I was trying to use unique graphics for the new enemy, and I had some test graphics in place, but there was only room for 16 rotations and it look really chunky compared to the rest of the game. So I decided to reuse the ship graphics with an on-the-fly revision to it so we would have 32 rotations. For now it's just a sma
ARM free increased to $4a0 (1184)
Bank 5 free now at $19c (412)
Display Data free increased to $9b (155)
That's 410 bytes freed up since the last post.
Please let me know if you spot anything odd, and that including messed up graphics as I've been overlapping graphic data to save space.
ROMs
spacerocks20120830_NTSC.bin
spacerocks20120830_PAL.bin
Source
spacerocks20120830.zip
new enemy test
I rewrote PrepScoreDatastream(), BreakAsteroids() and made some other changes (thanks cd-w!). The ARM free has increased to $41C (1042) while Display Data decreased to $14 (20). Much better than the $30 (48)and $30 of a few days ago, and there's still more optimizing to be done.
If anybody else spots anything that can be optimized, don't hesitate to post it Also I'd appreciate any play testing of the latest build in case any of the optimizations broke something.
ROMs
spacerocks20120
heartbeat now alternates between 2 "samples"
fixed heartbeat for alternating 2 player games
stopped the UFO from respawning during the 2 second delay between waves
init the ship merged image buffers to 0. The ship images and thrust flames are stored separately and merged when needed into the image buffers.
ARM and Display Data are both down to just $30 (48) bytes free, so I'm going to work on freeing up some ROM space. As such, the next update may be in a week or so.
ROMs
heartbeat sound (sound itself is a placeholder)
turn off saucer shots when swapping players
saucer respawn time now tied to LEVEL setting
maxed out time of invisible frame during ship explosion for a slightly longer delay before changing players.
ROMs
spacerocks20120821_NTSC.bin
spacerocks20120821_PAL.bin
Source
spacerocks20120821.zip
Menu changed so only option name is highlighted. This was done so it's easier to see the color values when you're changing them.
highlight is now a white gradient, START changed to a red gradient so you can tell when it's selected
fixed a bug where an extra grey selection would show up before multicolor when using joystick-right on the color option.
luma value changed to 8 for monochrome asteroids. Previously it was 14. This should make flicker less noticeable.
Ship explosion slow
For 2 player alternating games you can now select from 1 or 2 joysticks
Select-a-color for monochrome games. Select from the 16 base colors for NTSC (13 base colors for PAL).
respawn window size shrinks every 45 frames instead of every 60 frames.
Fixed a bug introduced in the last update that allowed the players to respawn on top of each other.
Fixed shield luma-cycling for monochrome games.
Changing the PLAYERS menu option caused a lot of code to be changed, so let me know if
revised the respawn logic.
ship can once again respawn while saucer is on screen.
respawn zone shrinks every 60 frames (once per second).
in 1 and 2-player-alternating games, respawn now always occurs in the middle of the screen.
[*]fixed warp-in offset problem
[*]ship explosion back to displaying each image in the animation sequence for 4 frames. Other explosions still display for 3 frames per image.
For fun I uploaded "debugging builds" so y'all could like to see what I
the ship & saucer explosions now color-cycle when playing with colored asteroids. They luma-cycle for the monochrome game variations as the color cycling looked out of place.
In alternating 2 player games, if you die when UFO is onscreen the UFO is turned off so the next player doesn't have to wait.
The moving-UFO-fragments were deadly, they are no longer
When ships appear on screen, they now "warp-in".
ROMs
spacerocks20120809_NTSC.bin
spacerocks20120809_PAL.bin
Source
fixed explosion bug in FIGHT mode
fixed bug were player 1's HMOVE shift data (for large asteroids) was getting wiped out, causing the large asteroids to occasionally be drawn "chunky style"
sped up the explosion sequences
ROMs
spacerocks20120806b_NTSC.bin
spacerocks20120806b_PAL.bin
Source
spacerocks20120806.zip
respawn window:
new explosion graphics
explosions now continue moving along the object's original trajectory
new small asteroid graphics
fixed a bug with the sprite driver1
fixed a bug where temporary immunity would last longer than it should if the UFO appeared while immunity was in effect
updated respawn location table
score lines and the score itself follow the selected color2
1 the sprite driver was confused with the new explosions and their large sections of "nothing" in the midd