Jump to content

ZackAttack

Members
  • Content Count

    785
  • Joined

  • Last visited

Posts posted by ZackAttack


  1. It's impressive how well this tells a story.

     

    One more suggestion I'd like to make about the animation. The parts with high jumps are awkward because the speed is very linear. I know you're very space limited and this may not be feasible, but maybe you could fit a small lookup table or approximation algorithm so the speed decreases with the height and then increases as the object falls back down.


  2. I think you may be referring to source level debugging where the breakpoint is set directly in the basic source file. That's not available, but you can use the built in debugging tools in stella to set breakpoints and inspect variables. However, stella's debugger is based on 6507 ASM not basic. As with any debugger, there needs to be some type of symbol file to map the labels and variables to their hardware locations. Since bB is directly translated to assembly it can be done. You just need to place the files in the same folder as the bin and give them the appropriate file extensions. I was playing around with this the other day and posted my findings here

     

    Note: the stella debugger can be accessed by simply pressing ` (the key below escape) while the game is running.


  3.  

    I haven't really used the Stella debugger all that much to be honest. After reading your comments I think it would be a really nice addition that many people would find useful as long as it was well documented how to use it. I've spent hours of time troubleshooting in the past simply wondering what in the heck value a bB variable currently had, and setting specific breakpoints would be incredibly useful. I would certainly use any integrated Stella bB debugging facilities in future projects.

    There aren't any bB debugging features in stella. However, the asm debugging tools are fairly applicable since the bB source is mapped to assembly. Did you try the the modification to 2600bas.bat to see if you could get the symbols to load properly?


  4. Finally conquered the platform tile. It now scrolls off the top and left sides properly. Now it can be used as a template for the more difficult tiles like the loop.

     

    The level data format was changed to allow horizontal placement at any location and allow for a single parameter. Fortunately this won't take any more RPM space than the previous format.

     

    The video is a little choppy because my gpu can't seem to handle stella and bandicam recording simultaneously.

     

    http://youtu.be/8ICIDswdJnY


  5. So far I've only used the Stella debugger to make a batari Basic program stop if it goes over 262 and to look at the sound effects of classic games.

     

    Is there more that I could be doing?

    The stella debugger offers a lot of cool features to track down the hard to find bugs. You can set breakpoints for execution, writes, and reads at specific locations. You can inspect the current values of variables. It allows you to trace through each instruction as it's executed and will highlight the registers and memory locations that changed in red. When the proper lst and sym files are provided, stella will use friendly names instead of hex values to represent labels in the disassembly and memory sections. I modified my 2600bas.bat to create the files correctly for visual bB and was able to break on labels from the bas source file as well as see the variable names in the disassembly and memory label section. In the screen shot below you can easily see that the Velocity variable has a value of 1 and execution is at the .ChangeDirection label.

    post-40226-0-46703400-1427857543_thumb.png

    If anyone is interested in making a similar change to their 2600bas.bat file you can change the dasm line to this:

    dasm "%~f1.asm" -I"%bB%"/includes -f3 -l"%~p1\bin\%~n1%~x1.lst" -s"%~p1\bin\%~n1%~x1.sym" -o"%~f1.bin" | bbfilter
    

    For regular bB (non-visual) I think all you would need to do is fix the lst and sym file extensions on that same line.

    • Like 1

  6. The creator of VbB (jwierer) has been very busy and so has batari (the creator of bB) and RevEng (who unofficially took over bB for a while to fix bugs and make improvements). Looks like we'll be mostly on our own for a while.

     

    The change is easy to make. I just need to know that it's the right thing to do first. I think I'll take a poll to see if anyone even would benefit from such a change.


  7. Here's what 2600bas.bat contains.

    dasm "%~f1.asm" -I"%bB%"/includes -f3 -l"%~f1.list.txt" -s"%~f1.symbol.txt" -o"%~f1.bin" | bbfilter
    
    

    Sure I could easily adjust it to use lst and sym extensions respectively, but that won't benefit anyone else besides me. Maybe I need to figure out who currently maintains bB and visual bB and ask them directly. It's surprising to me that this hasn't been brought up before. Could it be that no one is using the debugger for their bB programs, or am I just missing something?


  8. I grabbed the source for princess rescue and built it locally so I could test some changes to how stella handles debugging banked carts. This has raised the following questions.

     

    1. Why aren't the lst and sym files saved in the bin folder next to the bin file with lst and sym file extensions? Is there a setting to make this happen?

     

    2. Is there a way to keep all the extra labels from being defined in the lst file? For example, the location at 1eba should only have the .MarioJump label instead of all 3 of these:

       3487  1eba				   .
       3490  1eba				   .MarioJump
       3493  1eba				   .L0323		;  player0:
    
    

  9. Multiplying by 2 can be accomplished by a left shift (ASL) and is most likely faster than adding a memory location to itself. You could verify this with stella by simply implementing both solutions and then comparing the cycle count in the debugger. If you put a label just before and just after each section of code it should be easy to determine which asm instructions correspond to which basic statements.


  10. I'd rather just do what I know I'm excellent at and that is game design and music.

    Then pair up with someone who's good at ASM coding.

    But it seems most here are already paired up/have a sound/design guy already. 8)

     

     

    If you're interested, I could definitely used some assistance with the sound for my current project. Supporting 8way scrolling with single pixel resolution takes up all the CPU time during the picture scanning, but there are plenty of available cycles during overscan and a ton of ROM space available. I would be interested in any ideas you may have.


  11. I've definitely seem some occasions where holding the button just continually fires the moth instead of it hanging out in front of you. Seems to happen most often when you take damage while holding up and button.

     

    I miss having the variety of enemies that the previous build had. Maybe you could introduce new enemies each time you add a butterfly to the tree screen. It might help hint to the player that should keep collecting more fruit even though they're going in circles. Just a thought. Either way I still enjoy playing it.


  12. What would really rock is if voice.asm could be changed to read data across multiple banks so that there's

    only 1 "play" routine and the banks can be filled entirely with audio data. I assume that could nuke the delay also.

    Each bank has to have it's own "play" routine because that banking scheme only allows a single bank to be in scope at a time and you need to access both code and data simultaneously. The routine could be enhanced to do the bank switching itself to avoid the small delay between sound clips. However, the delay I was referring to was the one that's embedded in the play routine between each sample.

     

    Also, you shouldn't get too optimistic about what could be done together. It's possible to have some very impressive sound or very impressive graphics, but having both at the same time isn't all that feasible. DCP+ and assembly can be used to produce some very impressive results but then you would lose the ease and productivity of programming in bB. If that was something you wanted to pursue I'd start by checking out the asm tutorials on here and then check out the blog SpiceWare is working on about programming DCP+ in assembly.


  13. I'm glad I was able to help. That demo is really interesting and it ran a lot longer than I expected it to.

     

    If you look at the assembly you'll see that there is a fairly large delay between each update to the AUDV0 register. I wonder if the extra cycles could be used to either add another channel, support data compression, display some dancing sprites, or maybe even a combination of them. Of course that would need to be done in assembly in order to keep the timing correct.

     

    I wanted to build a 512KB banking scheme for the harmony but I could find documentation on it. I ended up just creating a new custom banking scheme that can support up to 256MB. Once I complete my game and finalize the hardware I plan on making it available for others to use. That's going to be a long time from now though.


  14. Finally got a chance to try the latest build. I only beat the boss once. I thought it crashed until I read your post and didn't have time to try again. Here's some more feedback.

     

    1. The only enemy I encountered was the wasp. Is that all you get on level one?

    2. Using a sprite for the fruit is a huge improvement. Stands out much better now.

    3. There is some inconsistent behavior when firing the moth. Sometimes pressing fire is all that is needed, other times you have to hold a direction too. I may not fully understand the controls.

    4. I think you should force the player to remain on the screen when the butterflies are pulling the tree out of the ground.

     

    Looking forward to your next update.


  15. Due to the way that negative numbers are stored you can just have a single variable to hold the sprites velocity and then simply assign the velocity to the REF register as well. I think you'll find this code is concise and easy to read. It also allows you to control the speed of the sprite which I've demonstrated in the attached bas file. Of course you could do a lot more with the speed such as increasing enemy speed when the player is inline with it.

      ;******** DONE ONCE ON START/RESTART *********
      ; Use dim to give 'a' a friendly name. Any available var can be substituted in place of 'a'
      dim HorizontalVelocity = a
      ;Initialize the velocity. Postive means moving right & negative is moving left
      HorizontalVelocity = 1
    
    
      ;******** DONE EACH FRAME *********
      ;Move the sprite
      player0x = player0x + HorizontalVelocity
    
      ;Change velocity
      if player0x > 150 then HorizontalVelocity = -1
      if player0x < 10 then HorizontalVelocity = 1
      
      ;Update sprite's reflection
      REFP0 = HorizontalVelocity
     

    default.bas


  16. Another option would be to add a frame buffer and a GPU. Something similar to what the NES has. I'm sure some purpose built graphics hardware would produce better graphics than an overclocked 6502. If you think about it, a 6502 would need to run at over 5 times the speed of the TIA and have a huge amount of RAM to update the TIA once per color clock. It would be much more effective to just have a frame buffer and update the COLUBK register once per color clock with it.


  17. Ok, try this one. You can get rid of ALL of the dim statements because I changed the routine to use stack memory instead. I moved the data to the beginning of the asm file. Make sure it is included first in the bank before everything else. There is room for up to 15 pages (3840 bytes) of data. Just make sure to modify the CMP at the bottom (see code below) if you use less than 15 pages. I didn't address the scanline count though. That's going to be too time consuming and I need to get back to work on sonic.

    CMP (#>HelloStart + 15) ;<--- Change this if using less than 15 pages

    voice.asm


  18.  

     

    One example that adds to the confusion is that "include fixed_point_math.asm" is supposed to go at the beginning of a program and it doesn't have asm and end wrapped around it. We have include, includesfile, and inline that are for various jobs and the bB page telling us things like this:

     

    "With the include command, bB will place the module where it sees fit, typically in the first bank. If you want to have more control over where the modules go, you can use an includes file or the inline command."

     

    And this:

    "The include command must typically precede all other commands (at the beginning of your program, before anything else)."

     

    But if we can ignore that and stick include between asm and end anywhere in a program, the bB page needs to be updated.

    I think the bB page is correct as it is now. An include statement inside the asm statement is a completely separate thing from what I can tell.

    • Like 1
×
×
  • Create New...