Jump to content

skywaffle

Members
  • Posts

    212
  • Joined

  • Last visited

Everything posted by skywaffle

  1. Hello everyone, I have been playing around with some different methods to condense data being stored. I typically would store information in various look up tables that would be accessed to help set up levels among other things, however, many values only need to be between 0 and 1, or 0-15, or 0-255. It seems that regardless of the size of the value in these tables, they still take up 16-bits worth of data which was eating a bit of extra ROM space. I found that I could save space by combining usually two 4 bit values and an 8 bit into a 16-bit value, but was wondering if there was an easier method to retrieve the data that would use less overhead. Currently I have a subroutine like this: DECODE_VALUE: PROCEDURE #VALUE1 = #ENCODEDVALUE / 256 #VALUE2 = ((#ENCODEDVALUE - (#VALUE1 * 256)) / 16) #VALUE3 = #ENCODEDVALUE - ((#VALUE1 * 256) + (#VALUE2 * 16)) RETURN END I will store the value of the data to be retrieved in #ENCODEDVALUE, and GOSUB the code above to return three separate values that I then will copy to other variables. I just was curious if I was going about this all wrong, and maybe there was a much more efficient method. Saving every bit of space is useful, and I was even contemplating for other game ideas to try to store some values into single bits to avoid having arrays that only need to hold a 0 or 1, but want to avoid using lots of unnecessary computations. Thanks in advance, Matthew
  2. Thank you! I'm glad other people have gotten some enjoyment from some of these songs ported over to the Intellivision. I figure I would eventually upload the source for some of the other songs that I had posted on Youtube if anyone is interested. I just keep finding myself busy with the Castlevania project, but it is finally shaping up to be a fairly playable feeling game, I just need to work on some little bugs here and there and some polish mostly.
  3. Hello, Just felt like taking a break from working on Castlevania to mess around with some music and ideas of games that may work in some shape or form on the Intellivision. I figured I would post this here for anyone that wants to have a listen. NEMO.BAS NEMO.bin
  4. I have only dedicated the third sound channel (sound 2) to sound effects, and tried to just get away from using the noise channel and keeping it reserved for percussion. I had been rewriting all the music to utilize only two channels, while keeping the drums. Honestly just using "play simple" works well enough in most cases, especially now that the drums work in conjunction. Logic to disable channels of the music is overkill.. I already have enough CPU cycles being eaten with various game logic. Nevertheless, I am always impressed to see what the Intellivision can do.
  5. Thank you! That fixed the issue for me!
  6. Thank you for the response. I have played a bit with using 4 channels for music, and playing sound effects on a less overall used channel (or even one that was not used, but with "Play Full"), but for me, the sound effects and/or music becomes distorted during the sound playback. I have tried moving my sound routines before and after the wait command just to see if it would help, but either way did not sound ideal. I was hoping that there may be a way to achieve something along the lines of sharing a channel with the music, but have not personally figured out a a way that sounded pleasing.
  7. I was able to compile my Castlevania project with the new IntyBASIC with no issues. The MUSIC GOSUB commands are something I am really excited to have access to and have already begun reworking the music to take advantage of
  8. Oh, I thought that Play Simple still supported drums. There is also a Play Simple No Drums command. I thought maybe leaving the third argument in the music statement as a dash and having the fourth argument as drums would still work for playing drums, while still keeping one sound channel available for sound effects. I was previously using Play Full, however playing sound effects get cut off or sound choppy.
  9. Hello, I have been experimenting with consolidating music to two channels to leave room for sound effects. Initially I was planning to also reserve the noise channel for sound effects and remove all drums, however I recently was trying to add them back and use "Play Simple" instead of "Play Simple No Drums" After doing this the percussion still does not play, despite being in the music statements. Any idea what I might be doing incorrectly? Thank you, Matthew
  10. I think having two player cooperative play in Life Force would make things very difficult to achieve with good results. I would think certain compromises could be made, but two ships, missiles, bullets, options would use most of the sprites. Multiplexing would help on things like bullets and missiles; even the NES game did that extensively. Bosses could be done in a similar fashion to the NES port as well (using the backtab for the boss graphics and scrolling to create movement). Power ups and even specific enemies could likely be done just using the backtab.
  11. While playing around with ideas of what to make while initially trying to understand IntyBASIC, Gradius was something I really wanted to see. I am just not sure how doable it would be. I am sure you could restrict options/multiples and cut down things to make it work though. The biggest issue I see is working with 8x16 maximum resolution sprites. Horizontal shmups just won't look very good with a double wide 8 pixel ship. Although maybe one day; I had made some mockups while toying with the idea of a shmup, and would be curious to see some more effort put in.
  12. I am very impressed with what the Intellivision can do, especially for 1979. The hardware scrolling just sets it apart from everything else; Compared to other consoles of the time, like the Odyssey 2, and Bally Astrocade, the Intellivision feels like it has aged rather well. The smooth hardware scrolling really stood out in many games.
  13. When I think of classic Intellivision games, I always remember games like Mission X where the score would scroll past the screen, or Super Cobra. I was even thinking back to AD&D Cloudy Mountain, where the number of arrows are represented by audible clicks. They really thought of interesting compromises when dealing with the hardware. Somehow I overlooked Bump N Jump. Looking at that, it seems as if they are using at least 7 sprites for the cars, and road hazard indicator, but can't understand how they managed to position 3 digits in a stationary position with everything else going on. The border color is something I had not thought of, but will definitely look into that too.
  14. Originally I had just stored the data as it was created with Intycolor. however, I opted to save space by creating 1x6 segments of grams, and then the maps would reference those 1x6 strips (one for the top half, and one for the bottom half, and as wide as the level) Fortunately many levels will reuse the same 1x6 sections, which ended up saving quite a bit of rom space. There is little overhead in the software, and I ended up changing all collision routines to reference backtab as opposed to the raw level data as I had originally done. There was some trade off since now enemies can't roam off of the screen as they used to, however, that is not a big issue since I need to continually swap out enemies to stay within sprite limits. It seems with the original NES game, 16x16 tiles are constructed of 4 8x8 characters, and then 4 16x16 tiles are grouped in 2x2 clusters and referenced throughout the levels. I was considering trying to replicate that these 2x2 tile clusters, but was weary that there would be too much overhead when dealing with scrolling.
  15. For the video I just tried to use the Nostalgia emulator. The framerate seems to be a little better on this old laptop, and you can easily map a controller. However for all my testing, I use JZIntv, it is a lot more convenient to load the game quickly. In fact I just use a batch file to compile, assemble, and run my intybasic programs on JZintv. I may try using the video recording option next time, although I will have to see how much it affects the video, there is a bit of multiplexing and sprite colors changing on odd/even frames. Right now I am using all the memory locations mentioned in the 42k sample file, although I am only using just over 36k. I still need to create bitmaps and level data for the last stage, as well as more routines for enemies / bosses. I have wondered about altering Simon's color based on his health, or maybe have his outline flash a color. Whenever he takes damage, his health is displayed on the screen briefly. Another idea was maybe a button to pause the game and display a screen that could show health, number of hearts, and available time (although currently there is no in game timer). Having a boss health bar is something I have considered, I also had thought about having the boss begin flashing (similar to Konami's arcade beat em ups) after the health is below a certain amount. Right now my biggest issue is trying to fit everything I would like without exceeded the 42k limit. I had reached it a month ago, and since then reworked a large amount of the game to reduce the size.
  16. Hello again, For anyone that may be interested; I have posted an updated video showing some of the progress for the game I have been working on. There is a lot to do, but I felt that it was shaping up a bit over the past few months. https://youtu.be/qD1VROfOuB8
  17. Sorry for my ignorance on this. I still use Constants.BAS, and probably would not have managed to get far in IntyBASIC without it. Nanochess made a suggestion of optimizing my code to improve performance because of all the comparison statements that I use. I just thought that the addition of things like HIT + VISIBLE might have been less efficient than $0300.
  18. I would have assumed that it would be having to add those, just as it would in a BASIC interpreter. I should be looking at the assembly code as Carlsson has suggested to see if there is or not and not make assumptions, but was just describing what I had previously done before I had asked the first question.
  19. Thank you for the quick replies. Initially I was dealing with performance issues, but after following some advice from Nanochess, I was able to get things working much more smoothly by changing statements like: IF A > 0 AND B = 4 AND C <= 15 THEN to statements like: IF A > 0 THEN IF B = 4 THEN IF C <= 15 THEN I have also tried eliminating unnecessary addition on things like sprites, such as HIT + VISIBLE to $0300. I am sure these changes offer little benefit, but with more logic to add to the program, every bit of savings might help.
  20. Hello, I was just wondering about improving the way I am writing routines in IntyBASIC and had an unusual question. The question I have is, if I have a statement such as: "IF A > 0 OR B > 0 OR C > 0 OR D > 0 THEN" would there be any performance improvement to rewrite the statement like this? "IF A+B+C+D > 0 THEN" I was not sure if adding variables would be more CPU intensive than using OR Thanks in advance!
  21. Thank you! I honestly was not quite understanding how to produce great drum sounds, but did notice that when using m1 or m3 combined with low octave bass (Z), I seemed to get something closer to a drum sound. I was unaware of the tempo affecting the drum sound, but will need to play around with them more. Trying to get songs playing at the correct speed has been a big challenge as well. It seems to be just trial and error. Between switching tempos, or even adding delays every so many lines seems to have helped get things where they need to be.
  22. I was wondering if having GOSUBs or GOTOs would be faster, but in my mind jumping forward and backward sounded more intensive. Of course, I have no understanding of what is happening on the back end. I have been trying to find different ways to reduce the overhead from the program since posting that video. Doing things like skipping specific logic entirely when on stairs, or while jumping, not to mention replacing redundant calculations with individual variables that store the calculation once. I see there is a ways to go though. Currently I do something very similar to your example with each enemy type (If enemy_type = 1, = 2, = 3, etc). Naturally each enemy needs separate logic, so I was not sure if having an ON enemy_type GOTO , versus having them in separate IF statements. Being inside of a loop, I was not sure if using GOSUB would cause any issues or not. I appreciate the insight and will continue to work towards better program efficiency.
  23. I was contemplating using backtab for candles, among other things possibly. I was also redefining sprites for things like the whip animation (3 frames), that way I am not just occupying cards, but not sure if it is worth the potential performance hit. I was doing the same for the character animation, but instead just stored 16 cards for the three animation frames and kneeling graphics to hopefully improve overall performance. I figure even for that I could refine some of those for stair animation and getting hit, but have not attempted that yet. Without music things seemed to run at a consistent 60 frames per second with up to 4 enemies / projectiles using hardware sprite collision. However when I add music and have 2 enemies on the screen, the performance drops substantially. This has made me reconsider if I should focus on adding secondary weapons and all the other things that make Castlevania feel like Castlevania. I am happy to see that I should be good on space. 84kb is a long ways away!
  24. It did not take long before hitting that 16kb mark which I had thought would have ended development. It was not until finding that 42k demo in the Contrib folder that helped overcome that. I can't imagine that taking too long to reach though once level maps are a more reasonable length. Is there a different technique required to get to 84kb?
  25. Hello, thanks everyone for the compliments on my Castlevania project. It is nice to see so much enthusiasm towards something that started out as something just to learn various IntyBASIC commands. The original character in the first video was from the game Spelunker, which was what I started out trying to mimic, but then as I continued making mock up art, decided to go for Castlevania instead. The game is not taking advantage of ECS or anything special. The limitations are becoming more clear with enemy design and the 8 sprite limit. (2 sprites used for the character, 1 for the whip, leaving 5 for enemies and projectiles, however things like candles, hearts, and secondary weapons would not be possible at this point, so I may make additional sacrifices). So far with one song, and 4 very short and basic stages, the project compiled weighs in at 26kb. I could see space becoming another issue. I have not had as much time the past week to make much progress over what was shown in that last video, as I have been messing around more with music on the Intellivision which you can see on my channel. In another thread on the Intellivision Programming forum I released some of the work in progress music if anyone wants to take a look. In the future I will try to get a small demo created for everyone to play with as well as uploading the source code once I get things cleaned up more.
×
×
  • Create New...