Jump to content
IGNORED

Flying Shark


Asmusr

Recommended Posts

The XJ-500 is a good joystick :-) You can add in it a LM555 (and very few resistors/caps) for the autofire. There is enough room in this joystick for this simple hack.

 

I would not dare violate the sanctity of its cherry innards. The mere suggestion triggers me :)

  • Like 1
Link to comment
Share on other sites

Okay, this is fun as hell on the projector but I need to find a better joystick than my beloved XJ-500. Kills my finger to keep firing and the game lacks an auto-fire (which I think is just fine.)

i was using the TI Pain-Sticks- i ought to switch to either my gamepad or my trusty CX40 and see if they're better on my hands :)

Link to comment
Share on other sites

post-35226-0-45185500-1521474420.png

 

I need to figure out what do do with the sprite patterns on level 2. The above shows the patterns for level 1, but on level 2 I need to add boats with rotating guns (9 patterns) as well as a bigger plane (4 patterns) in addition to all I have on level 1. Uploading the patterns on the fly is not really an option since all the patterns can theoretically be present on the screen at the same time. And alternating between sprite tables is not an option either since the animations need to work independently (e.g. the guns should not all point in the same direction).

 

A tank consists of a green chassis with one of the black outlines/guns on top. If I could use 3 sprites to build a tank I could have saved a lot of patterns by making the gun separate from the outline, but 3 sprites out of the possible 4 on a line is too much to spend on a single tank. I will probably have to sacrifice the horizontal direction of the tanks in order to add the boats.

 

For the bigger planes I could perhaps re-use the patterns of the boss tank and restore them again before the boss, but it's a pain to have to add exceptions like that to the code.

 

I could also save 2 patterns by making the player's plane the same pattern as the attacking planes, but I don't think it's worth the sacrifice.

 

Note that the last pattern is required to mask sprites when they enter from the right side border.

 

Any good ideas?

Edited by Asmusr
  • Like 1
Link to comment
Share on other sites

What I did in Mario Bros, although this may be too much of a change to your engine now, was to assign each sprite pattern to a sprite and update the patterns every frame based on what each sprite needed. Mind you, I only had 16 sprites in that engine and I didn't need to scroll as well. ;)

Link to comment
Share on other sites

attachicon.gifSprites level 1.png

 

I need to figure out what do do with the sprite patterns on level 2. The above shows the patterns for level 1, but on level 2 I need to add boats with rotating guns (9 patterns) as well as a bigger plane (4 patterns) in addition to all I have on level 1. Uploading the patterns on the fly is not really an option since all the patterns can theoretically be present on the screen at the same time. And alternating between sprite tables is not an option either since the animations need to work independently (e.g. the guns should not all point in the same direction).

 

A tank consists of a green chassis with one of the black outlines/guns on top. If I could use 3 sprites to build a tank I could have saved a lot of patterns by making the gun separate from the outline, but 3 sprites out of the possible 4 on a line is too much to spend on a single tank. I will probably have to sacrifice the horizontal direction of the tanks in order to add the boats.

 

For the bigger planes I could perhaps re-use the patterns of the boss tank and restore them again before the boss, but it's a pain to have to add exceptions like that to the code.

 

I could also save 2 patterns by making the player's plane the same pattern as the attacking planes, but I don't think it's worth the sacrifice.

 

Note that the last pattern is required to mask sprites when they enter from the right side border.

 

Any good ideas?

 

 

 

The outlines could be filled in and be lower priority sprites, so they would be under the color sprite, that way you could use the same outlines for the good guy as well as the bad guys, because the differences would be in the color sprite. They appear to have the same silhouette. That saves you one sprite anyway. But it means your shadow sprite could be solid. Frame 4 and 5 of your explosion are similar enough, I think you could get away with removing one of those.

 

If you do something similar with the tank sprites, IE. solid backing sprites, detail in the color sprites, you might be able to save a sprite or two.

Link to comment
Share on other sites

Here's an idea for the score with some background on why I'm suggesting it....

 

In my last game I had 27,000+ before I got killed, but the game switched to the title screen so fast I did not have time to take a photo for posterity.

 

One suggestion would be to include a high score list, say 10-15 scores.

 

From a programming perspective it would logically scan for a high score file at startup, if none present try to create one. If a second error occurs (trying to create a high score file) it would assume it's a system without a drive and continue with the regular code. If a list is found or created, it would trip a variable to save the scores and even show the list on demand... possibly by pushing the joystick down at the title screen. Just a suggestion from a fan.

Link to comment
Share on other sites

Thanks for the input. This made me think about a generic, optimal approach to updating sprite patterns on the fly. It would ensure that new patterns are only uploaded when they are not already present in VDP RAM.

 

You would maintain two lists:

 

The first would be a simple list of words that map CPU space patterns numbers to VDP space pattern numbers, where -1 means 'not present'. To find the VDP pattern number for a given CPU pattern you would look up the CPU pattern# entry in this list, and if you find a number >= 0 you would use that number. This would be a simple, fixed time operation.

 

If you find that the pattern is not present in VDP RAM (-1) you would check the second list, which would be a list of words indicating how many sprites are currently using each VDP pattern. You would need to search sequentially through this list to find an available entry, where the number of sprites using the pattern is 0. You would then upload the CPU pattern to this VPD RAM entry, increment the counter, and update the first list with the VDP pattern number. Once a sprite is deallocated you would have to remember to decrement the counter in the second list again.

 

The search for an available entry would be a bit slow (up to 64 entries to check for 0), but it should be rare compared to how often you find that a pattern is already present, so this method should be much more efficient than updating the sprite patterns each frame. Whether I'm going to implement this method for flying shark is another story, because rewriting assembly code is always a pain.

  • Like 2
Link to comment
Share on other sites

The main sprite for player's plane can be safely defined on fly.

This would save 4 sprite positions.

Also bonuses can be updated on fly, as it is difficult you find more than one bonus at time (B, 1up and S).

This saves 2 sprite positions.

The large tank can be loaded only when needed. You cannot have boats and large tanks at the same time.

This saves 4 positions.

  • Like 2
Link to comment
Share on other sites

Looking really good this, any plans for future games Rasmus?

 

I was thinking a port of Uridium might look similar to the MSX version if it were possible :-

 

https://www.youtube.com/watch?v=g9xi5iobIHw

 

<< CLICK HERE >> You'll see the thread Rasmus started on his Titanium development.

It's the closest so far... but currently he is currently developing an awesome new game.

Link to comment
Share on other sites

Looking really good this, any plans for future games Rasmus?

 

I was thinking a port of Uridium might look similar to the MSX version if it were possible :-

 

https://www.youtube.com/watch?v=g9xi5iobIHw

 

Artrag has done a tremendous job with Uridium, I would definitely like to port it to the TI at some point if artrag will support me. It could even be my next project. I just hope the TI is fast enough.

 

@artrag, I assume you suggest to port the Coleco version because it's using less RAM than the MSX version?

 

I believe the work on Flying Shark is perhaps 2/3 done.

 

Regarding the sprite patterns I have decided to go with a simple solution where I swap boats with vertical tanks on the fly, and big tanks with big planes on the fly. In the beginning of level 3 there are actually both boats and horizontal tanks on the screen at the same time.

  • Like 7
Link to comment
Share on other sites

 

Artrag has done a tremendous job with Uridium, I would definitely like to port it to the TI at some point if artrag will support me. It could even be my next project. I just hope the TI is fast enough.

 

@artrag, I assume you suggest to port the Coleco version because it's using less RAM than the MSX version?

 

I believe the work on Flying Shark is perhaps 2/3 done.

 

Regarding the sprite patterns I have decided to go with a simple solution where I swap boats with vertical tanks on the fly, and big tanks with big planes on the fly. In the beginning of level 3 there are actually both boats and horizontal tanks on the screen at the same time.

 

No need either to tell, I will support you at my best ! I can comment line by line all sources and document all algorithms if needed.

I can also regenerate the game data in non compressed formats to avoid you to port decompression routines if your rom mappers can provide sufficient room.

One could also avoid to port the music player keeping just SFX (or resort to log playback if the rom is big enough)

(this would save both porting work and CPU time).

 

The Coleco version needs a 32K ram extension (SGM), so the ram usage in the two version is almost the same (probably the actual game could be adapted to work with 16K ram, but not less than that I think).

I've suggested the coleco version because it has more enemies, bonuses, shields, ending sequences and in game speech using the SN76489A (about the same of the TI99/4A!)

But please, complete Flying Shark first !

 

About boats and big planes, I second your choice!

Edited by artrag
  • Like 6
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...