Jump to content

The Maxx

Members
  • Posts

    90
  • Joined

  • Last visited

Posts posted by The Maxx

  1. They are games I am working on. I can't figure out what I am doing wrong. I will post three ROMs here. Each are VERY early in development, but I can't see the point in continuing development if they are unplayable on real hardware. :/

     

    I haven't stripped the skating game back to see if I can isolate the bug, but the other two are pretty bare and I still haven't a clue.

     

    skate d.bin

    pseudopods d.bin

    TEST3.bin

     

    They all work well enough in Stella. On my Harmony, the skate game crashes after a second or two. Pseudopods, i believe, crashes while you are rotating your ship. TEST3 crashes when scrolling to the next screen on your left.

     

    I don't know if it is crappy code and maybe Stella is very forgiving...? Maybe my Harmony is not completely compatible. It is an earlier model, I believe. I got it back before I dropped out of the scene for awhile. Has something changed with the newer Harmony cartridges?

  2. Thanks. :)

     

    I couldn't find a cable to try that last night, but I discovered one today (attached to an old wireless receiver) and re-flashing it did the trick.

     

    Now if I could only figure out why my games crash on the Harmony Cartridge, but not in Stella. :/

    • Like 1
  3. Mmmkay.

     

    So, I have some code that works in an emulator, but crashes on real hardware. It is a simple calculation to decide which stage to load when the player passes specific coordinates in the play area:

     ; scroll | change screen
    
     if player0x<16 then player0x=136 : xPos=136 : scrollFlag{0}=1
     if player0x>136 then player0x=16 : xPos=16 : scrollFlag{1}=1
     if player0y>200 then player0y=160 : scrollFlag{2}=1
     if player0y>160 && player0y<200 then player0y=0 : scrollFlag{3}=1
    
    
     ; scrollFlag{0} left, {1} right, {2} up, {3} down
    
     temp1=stage/4 : temp2=temp1*4 : temp3=stage-temp2  
    
     if !scrollFlag{0} then goto skipLeft 
     if temp3>0 then stage=stage-1 else stage=stage+3
    skipLeft
    
     if !scrollFlag{1} then goto skipRight
     if temp3<3 then stage=stage+1 else stage=stage-3
    skipRight
    
     if !scrollFlag{2} then goto skipUp
     if stage>3 then stage=stage-4 else stage=stage+12
    skipUp
    
     if !scrollFlag{3} then goto skipDown
     if stage<12 then stage=stage+4 else stage=stage-12
    skipDown
    
    
     if scrollFlag{0} || scrollFlag{1} then goto loadStage bank4
     if scrollFlag{2} || scrollFlag{3} then goto loadStage bank4
    
    stageLoaded
    
    

    the "loadStage" routine simply directs the program to load a new playfield and then jumps back. (I'll only include one pf here to conserve space...

     if stage<>0 then goto skip0
    
     playfield:
     ................................
     ................................
     .............XXX................
     .............X.X................
     .............X.X................
     .............X.X................
     .............X.X................
     .............X.X................
     .............XXX................
     ................................
     ................................
    end
    
     ;  Other playfield data with nearly identical event code here.
    
     ;  Now that the stage is loaded, turn the stageLoaded scrollFlag on and jump back to the game
     
     scrollFlag{0}=0 : scrollFlag{1}=0 : scrollFlag{2}=0 : scrollFlag{3}=0 : goto stageLoaded bank3
    

    K, so (queso?) loading a new playfield works fine when the player moves up, right, or down. If the player moves to the left, the program crashes. Any ideas?

  4. I sent SeaGtGruff a message already, but I'll repost it here to see if you guys can help.

     

    http://atariage.com/forums/topic/171024-quick-yes-or-no-question-on-variable-arrays/?p=2116346

     

    I think a read/write array would be beneficial to keep track of collectibles in my platformer.

    My problem is, I don't really understand the read/write part.

    So, I dimmed the array in bank1:

     dim arrayW=$F000
     dim arrayR=$F080
    

    then within the game loop (bank3), i have the player pick up an item:

     if player0x>player1x-4 && player0x<player1x+12 && player0y>player1y-4 && player0y<player1y+12 then player1x=227 : player1y=227 : arrayW[0]=1
    

    To change screens, I jump to another bank to load the stage data:

     player1x=240 : player1y=240
     arrayR[0]=arrayW[0]
    
     if stage<>0 then goto skip0
    
     if arrayR[0]=0 then player1x=32 : player1y=128
    
    skip0
    
     goto stageLoaded bank3
    

    So if it isn't obvious, I only want to place player1 on the screen if it hasn't yet been collected.

     

    I am (obviously) doing something wrong. I don't understand how you write to one address, and read that value from another... if you cannot write to the address you are reading from... am I making sense?

    • Like 1
  5. Aha! Now, this is something that I'm pretty sure I understand. I've been wondering how to use tables and it appears that it is easier than I thought... kind of like a 1d (read only?) array... that can be used with multiple objects.

     

    Thanks!!! Now, I just need to put it to use. :D

  6. Okay, so... sometimes I do things the long and tedious way. Then I go back and tidy things up when I can see a broader picture of where the patterns are. However... I started putting together a 32 direction subpixel movement and found that, even though the pattern is obvious, I am unable to multiply the floats the way that seems most obvious in order to shrink the code down to something less ridiculous (bB hangs).

     

    This is what I got... it works fine, but it's BLOOAATED. Ha! Thanks in advance if there is anyone who could give me some advice:

     

    my variables are set like:

     

    dim xVel = a.b
    dim yVel = c.d

     

    I have tried creating my own "temp variables" to do the multiplication ahead, but that failed as well

     

    dim temp2 = e.f ; etc

     if direction=0 && joy0up then xVel=xVel+0.032 		
     if direction=1 && joy0up then xVel=xVel+0.028 	: yVel=yVel-0.004
     if direction=2 && joy0up then xVel=xVel+0.024 	: yVel=yVel-0.008
     if direction=3 && joy0up then xVel=xVel+0.020 	: yVel=yVel-0.012
     if direction=4 && joy0up then xVel=xVel+0.016 	: yVel=yVel-0.016
     if direction=5 && joy0up then xVel=xVel+0.012 	: yVel=yVel-0.020
     if direction=6 && joy0up then xVel=xVel+0.008 	: yVel=yVel-0.024
     if direction=7 && joy0up then xVel=xVel+0.004 	: yVel=yVel-0.028
    
     if direction=8 && joy0up then yVel=yVel-0.032		
     if direction=9 && joy0up then xVel=xVel-0.004  : yVel=yVel-0.028
     if direction=10 && joy0up then xVel=xVel-0.008 : yVel=yVel-0.024
     if direction=11 && joy0up then xVel=xVel-0.012 : yVel=yVel-0.020
     if direction=12 && joy0up then xVel=xVel-0.016 : yVel-yVel-0.016
     if direction=13 && joy0up then xVel=xVel-0.020 : yVel=yVel-0.012
     if direction=14 && joy0up then xVel=xVel-0.024 : yVel=yVel-0.008
     if direction=15 && joy0up then xVel=xVel-0.028 : yVel=yVel-0.004
    
     if direction=16 && joy0up then xVel=xVel-0.032 	
     if direction=17 && joy0up then xVel=xVel-0.028 : yVel=yVel+0.004
     if direction=18 && joy0up then xVel=xVel-0.024 : yVel=yVel+0.008
     if direction=19 && joy0up then xVel=xVel-0.020 : yVel=yVel+0.012
     if direction=20 && joy0up then xVel=xVel-0.016 : yVel=yVel+0.016
     if direction=21 && joy0up then xVel=xVel-0.012 : yVel=yVel+0.020
     if direction=22 && joy0up then xVel=xVel-0.008 : yVel=yVel+0.024
     if direction=23 && joy0up then xVel=xVel-0.004 : yVel=yVel+0.028
    
     if direction=24 && joy0up then yVel=yVel+0.032
     if direction=25 && joy0up then xVel=xVel+0.004 : yVel=yVel+0.028
     if direction=26 && joy0up then xVel=xVel+0.008 : yVel=yVel+0.024
     if direction=27 && joy0up then xVel=xVel+0.012 : yVel=yVel+0.020
     if direction=28 && joy0up then xVel=xVel+0.016 : yVel=yVel+0.016
     if direction=29 && joy0up then xVel=xVel+0.020 : yVel=yVel+0.012
     if direction=30 && joy0up then xVel=xVel+0.024 : yVel=yVel+0.008
     if direction=31 && joy0up then xVel=xVel+0.028 : yVel=yVel+0.004
    
  7. Wow, that's way over my head. It's good information to have for later when I understand this stuff more. Thanks!

     

    Is there a simple example of a routine that passed a pointer from a variable? I have looked around on the interwebz, but I don't really get the pointer stuff yet.

  8. There must be a way to do it without entering a data set for each color change. I think I'm going to continue on with my game in monochrome and hope that an answer comes. If not, I may just end up hardcoding the colors for each change, but that seems like a waste of space and I can't imagine the transition would look nearly as cool.

     

    Whoah, your avatar just changed color and I thought I was hallucinating. :o Hahah!

  9. Thanks, RT! You're a swell guy, you know? I'm really digging the quick and friendly support!

     

    k, so (queso?)... I have a new question:

     

    I have a small program that cycles through colors:

       dim changeColor = a.b 			; cycling color variables
    
    start
    
       player0x = 16 : player0y = 20		; set player position
    
     player0:
      %01111110
      %11100111
      %11000011
      %10000001
      %11111111
      %11011011
      %11011011
      %01111110
    end
    
    main
    
       changeColor = changeColor + 0.66		; cycle through
    
       COLUP0 = changeColor 			; change player color
    
       drawscreen					; drawscreen
    
     goto main			
    

    ^ That works with the default bB kernel, but if I try to use similar code to change the colors of a sprite in the DPC+ kernel, it changes it to a pale yellow color and doesn't cycle:

    dim changeColor = a.b                ; cycling color variables
    
    start
    
    player0x = 16 : player0y = 20        ; set player position
    
    player0color:                        
    changeColor
    changeColor
    changeColor
    changeColor
    changeColor
    changeColor
    changeColor
    changeColor
    end
    
    player0:
    %01111110
    %11100111
    %11000011
    %10000001
    %11111111
    %11011011
    %11011011
    %01111110
    end
    
    main
    
    changeColor = changeColor + 0.66      ; cycle through
    
    drawscreen                    
    
    goto main            
    
    
    
    

    I'm probably trying to do something majorly dumb. Hah!

  10. The colors look a little funny on my Atari, but that might be because I'm playing on a squished tiny little 8 inch screen.

     

    <edit>

     

    I tore open my Atari and adjusted the potentiometers. The picture is better, but not exactly as nice as I'd hoped. What can I expect though, this machine is as old as I am... my colors aren't so pretty either.

    • Like 1
  11. I thought I might try the titlescreen kernel. I made a crappy little titlescreen and then started through the .pdf guide, but my Visual bB doesn't seem to have the options listed in the manual : "Title Kernal 96x1", "Title Kernal 48x1", "Title Kernel 48x2", etc.

     

    Here is my version of visual bB compared to the one in the TSKernel manual.

     

    post-48779-0-25398400-1481986814_thumb.png

×
×
  • Create New...