Jump to content
IGNORED

The Quest


Lewis2907

Recommended Posts

Bb Team,

 

As I have been asking for help here and there. I have started working on The Quest. I'm not 100% sure what this will morph into. I borrowed a lot of code from the others in the forum. I am using the Multisprite Kernel as you can have more sprites displayed. I will update this some more and post where I am making progress. Any suggestions on what to include in this game are welcomed, thanks.

The_Quest_(Multisprite).bas.bin

20180205 - The Quest (Multisprite).txt

  • Like 2
Link to comment
Share on other sites

Here is an update. He strangely looks like some else. I still can't figure out how to fully implement the code that Bogax did for the Standard Kernel so I can have 3 enemies at the bottom and you can shoot each one. I fixed the floor to fall correctly and added some score for testing purposes. Now that I simulated horizontal scrolling I plan to have simulated vertical scrolling . I can't recall if Vertical scrolling works with the multisprite. If not I can adapt what I have using the sprites.

20180206 - The Quest (Multisprite).txt

The_Quest_(Multisprite).bas.bin

Link to comment
Share on other sites

Update:

 

Changed the main player to a helicopter (Sprite needs work). Fixed the flying through the "hole" a little better. Level will not just keep going and going. I am using the below to count how far each level will run.

 

;****************************************************************
; pfscore sets the start and end of level
; "0 = 0" : "7 = 1" : "14 = 2" : "21 = 3"
; multiples of 3
;
if pfscore1 = 0 then gosub __Cant_go_Right bank7 : goto __Static_Floor
if pfscore1 = 21 then gosub __Cant_go_Left bank7 : goto __Static_Floor

 

;***************************************************************
;
; used to reset level and travel the correct way
; use below code for vertical scrolling
;

__Cant_go_Left
if joy0right then _Bit6_Flip_P0{6} = 0 : _Bit6_Flip_P0{7} = 0 : player4x = player4x - 1 : player5x = player5x - 1 : player3x = player3x - 1 : player2x = player2x - 1
if player4x = 0 then player4x = 144
if player4x = 60 then pfscore1 = pfscore1/4
return

__Cant_go_Right
if joy0left then _Bit6_Flip_P0{6} = 1 : _Bit6_Flip_P0{7} = 1 : player4x = player4x + 1 : player5x = player5x + 1 : player3x = player3x + 1 : player2x = player2x + 1
if player4x = 145 then player4x = 1
if player4x = 80 then pfscore1 = pfscore1*2|1
return

 

Still not really playable, but slowly coming along, thanks.

The_Quest_(Multisprite).bas.bin

20180207 - The Quest (Multisprite).txt

Link to comment
Share on other sites

  • 2 weeks later...

I have started the "Vertical Simulation" it is based upon the "Horizontal Simulation". For some reason player 4/5 will reappear and disappear even though the sprites are not on the same horizontal line. I think it's the code below from "bank 2" that needs adjusting.

 

if joy0up then player4y = player4y - 1 : player5y = player5y - 1 : player3y = player3y - 1 : player2y = player2y - 1 : player1y = player1y - 1
if joy0down then player4y = player4y + 1 : player5y = player5y + 1 : player3y = player3y + 1 : player2y = player2y + 1 : player1y = player1y + 1

if player1y < 4 then player1y = 78
if player1y > 79 then player1y = 5
if player2y < 4 then player2y = 78
if player2y > 79 then player2y = 5
if player3y < 4 then player3y = 78
if player3y > 79 then player3y = 5
if player4y < 4 then player4y = 78
if player4y > 79 then player4y = 5
if player5y < 4 then player5y = 78
if player5y > 79 then player5y = 5

 

Any ideas would be great. Also ideas for the game. I'm very sure the sprites will change as the game develops, thanks.

20180218 - The Quest (Multisprite).txt

The_Quest_(Multisprite).bas.bin

Link to comment
Share on other sites

  • 1 month later...

I started to work on this again. I am using Bogax Code "Fun with PLayer0height"

 

http://atariage.com/forums/topic/276819-fun-with-player0height/

 

I am trying to figure out why my code won't do pfread correctly when moving down. It works when moving up. Additionally i'm not sure why when going down the sprite gets stuck then move again. Thanks in advance if anyone can help.

 

****Update*****

I goofed up and posted the wrong code. Attached is what I am trying to do. I am trying to get the "Counter" to work properly and move the "Spikes" up and down on their own. I have attached a version that works, but has errors because I am using "player0" for the spike. I need to use "player1" / "player2" for the spikes that way I can reduce flicker and use pfread in the Multisprite Kernel. I am lose to solving this problem and move on with this game. Thanks ahead if anyone can assist me.

20180331 - The Quest (Multisprite).txt

20180331 - The Quest (Multisprite)v2.txt

20180331_The_Quest.bas.bin

20180331_The_Quest.basv2.bas.bin

Edited by Lewis2907
Link to comment
Share on other sites

Attached is a newer version of "The Quest". I'm making progress so far. My issue if someone can help is with my timer / counter. I have the "Spikes" go down and up at the start of the game and the floor opens up. What I want to do is have the spikes go up and down on their own. The object of the game is get through the floor before the spikes "retreat". If this happens you can't get to the bottom or top floors.

 

***Below is part of the code that I need some assistance on*** (I'm using "joy0right" to trigger the spike. I'm not sure how to implement the timer correctly to have the spike always moving up and down.)

 

Counter = Counter+1
if Counter = 3 then Counter=0
if Check_Point = 0 then goto __Spike_Moves_Up
if Check_Point = 1 then goto __Spike_Moves_Down
if Check_Point2 = 0 then goto __Spike_Moves_Up
if Check_Point2 = 1 then goto __Spike_Moves_Down

 

;***************************************************************
;
; Bottom Spike moves up
;
__Spike_Moves_Up
if player1height = 38 then Check_Point = 1 : goto __Spike_Moves_Down
if Counter=2 && player1height then player1height = player1height - 1

 

;***************************************************************
;
; Bottom Spike moves down
;
__Spike_Moves_Down
if player1height = 1 then e = (rand&63) + (rand&31) + (rand&15) + (rand&1) + 21 : player1x = e : Check_Point = 0
if joy0right && player1height < 31 then player1height = player1height + 1

 

__Skip_Moves

20180331_The_Quest.basv2.bas.bin

20180331 - The Quest (Multisprite)v2.txt

Edited by Lewis2907
Link to comment
Share on other sites

I'd just use a bit to tell the program which way they're supposed to move. For example, if the bit is on, that could mean they move up until they hit the limit. When the limit is reached, the bit is turned off and that tells the program to move them down until they hit that limit, then the bit is turned on and it starts all over again.

Link to comment
Share on other sites

RT,

 

Thanks. I thought about that, but I'm not that good with bits for this. I looked around the fourm and page and couldn't find much. If you have a sample code I'm sure I should be able to use it. Then I can move on to the other stuff I'm thinking about for this. Thanks again for helping.

Link to comment
Share on other sites

RT,

 

Thanks. I thought about that, but I'm not that good with bits for this. I looked around the fourm and page and couldn't find much. If you have a sample code I'm sure I should be able to use it. Then I can move on to the other stuff I'm thinking about for this. Thanks again for helping.

I'll see if I can add it to your code.

Link to comment
Share on other sites

RT,

 

Thanks again. Also thanks for the comments. I made a few adjustments based off of what you gave me. Is there a way to keep "player4x" from blinking when the spike retreat. I was playing with this the other day and noticed that "player2pointerlo" affected the blinking, but I could never quite get it right.

 

Also I'm trying to use pfscore to limit how many time you can go left and right. This way the player is not just going and going for ever. I plan use this for my future map location using "B/W". My plan here is to use the pfscore as a temporary marker to make sure that I am going left or right correctly. Once complete I remove the pfscorecolor.

 

;****************************************************************
; pfscore sets the start and end of level
; "0 = 0" : "7 = 1" : "14 = 2" : "21 = 3"
; multiples of 3
;
if pfscore1 = 0 then gosub __Cant_go_Right bank7 : goto __Static_Floor
if pfscore1 = 21 then gosub __Cant_go_Left bank7 : goto __Static_Floor

 

***bank 7***

 

;***************************************************************
;
; used to reset level and travel the correct way
; use below code for vertical scrolling
;
__Cant_go_Left
if joy0right then _Bit6_Flip_P0{6} = 0 : _P0_L_R = _P0_L_R + .5 : player4x = player4x - 1
if player4x = 0 then player4x = 144
if player4x = 5 then pfscore1 = pfscore1/4

 

;****************************************************************
; Flips player0 sprite when necessary.
;
if _Bit6_Flip_P0{6} then REFP0 = 8

 

return

 

__Cant_go_Right
if joy0left then _Bit6_Flip_P0{6} = 1 : _P0_L_R = _P0_L_R - .5 : player4x = player4x + 1
if player4x = 145 then player4x = 2
if player4x = 140 then pfscore1 = pfscore1*2|1

 

;****************************************************************
; Flips player0 sprite when necessary.
;
if _Bit6_Flip_P0{6} then REFP0 = 8

 

return

 

 

 

20180402_The_Quest_(Multisprite).bas.bin

20180402 - The Quest (Multisprite).txt

Link to comment
Share on other sites

Gemintronic,

 

That is correct. I am using a lot of borrowed code. I try to give credit in the notes and links to the page I found it at. Hopefully this will help other novice like me. I code in 80s basic style I leaned in school. Thus making it a little harder to decipher some of the code that I see online. I just try to put everyone's work together to make a finish project.

Link to comment
Share on other sites

Update: I got the floor to work correctly now. It will close when the spike are gone. When the floor closes you can not move through the floor. When open you can. I added some swimmers to save. I am currently still working on using pfscore as a marker to help keep the level from just running and running. That way you have a sense of direction (This will be on the Map Screen later)

 

;****************************************************************
; pfscore sets the start and end of level
; "0 = 0" : "7 = 1" : "14 = 2" : "21 = 3"
; multiples of 3
;
if pfscore1 = 0 then gosub __Cant_go_Right bank7 : goto __Static_Floor
if pfscore1 = 21 then gosub __Cant_go_Left bank7 : goto __Static_Floor

 

I am trying to use the below code to make the swimmer turn around when the spike appears or they about to run into it. Then I will figure out a way to make the swimmer move up and down slightly to make it look like they are really swimming.

 

;***************************************************************
;
; Direction of Swimmers / player4
; NUSIZ5{3} is used to reflect sprites
;
if player4x = 10 then player4x = 138
if player4x = 139 then player4x = 11
if (player4y + 5) >= player2y && player4y <= (player2y + 14) && (player2x + 5) >= player2x && player4x <= (player2x + 18) then _Bit_Player4 = 1 : goto __Reverse

if _Bit_Player4{5} then _P4_L_R = _P4_L_R + .3

 

__Reverse

if !_Bit_Player4{5} then _P4_L_R = _P4_L_R - .3 : NUSIZ4{3} = 1

 

__Skip_Reverse

 

Once I get this portion complete I think I handle the other portion to make level 1 playable. The other question I have is it possible to have multi-colored background to simulate the surface or going into deeper water. From what I can find and read it seems impossible. Thanks again if anyone can help or point me in the right direction.

20180410 - The Quest (Multisprite).txt

20180410_The_Quest_(Multisprite).bas.bin

Link to comment
Share on other sites

  • 1 month later...

Another Update:

 

I think I have the pfscore to measure the level so you are not driving the Sub endlessly. Working on the next step now. To change rooms once you reach the end of either side. That is still a WIP.

 

The question I have is as follows: Can you make player2 (upper spike) and player 4 (upper swimmer) have collision detection and when they touch or almost touch the swimmer goes the opposite direction to seem more like a real swimmer would do? I disabled the spikes for now to help with the detection.

 

I am using this as a trial and error (more errors than I thought). I maybe over thinking it again, thanks again for any guidance or thoughts on what I should do next.

 

;***************************************************************
;
; Direction of Swimmers / player4 / Player 2 collision
; NUSIZ5{3} is used to reflect sprites
;
if player4x = 10 then player4x = 138

if player4x = 139 then player4x = 11

 

if (player4y + 5) >= player2y && player4y <= (player2y + 5) && (player4x + 5) >= player2x && player4x <= (player4x + 5) then _Bit_Player4 = 1

 

if _Bit_Player4{5} then _P4_L_R = _P4_L_R + .3

if !_Bit_Player4{5} then _P4_L_R = _P4_L_R - .3 : NUSIZ4{3} = 1

 

 

 

20180521_The_Quest_(Multisprite).bas.bin

20180521_The_Quest_(Multisprite).bas

20180521 - The Quest (Multisprite).txt

Edited by Lewis2907
Link to comment
Share on other sites

Attached is another update for Level I.

 

What works:

 

Proximity Detection for the Sub. This means when you are above or below a spike your ship will turn "Red" to warn you to move out the way. (Option A will not have this feature to make the game "harder")

 

The Swimmers 90% of the time will swim the other direction as a normal person would. (Eventually you will have to save them...Similar to an Old Game I loved to play as a kid)

 

The level does't run on for ever and ever. I'm trying to use the pfscore1 to track the level, but I'm still running into some issues to have it clean and smooth.

 

Next Update Hopefully:

 

Save the Swimmers and have some enemies to fight. I have one Missile left as I used Missile1 and the ball as markers for the swimmers. My thought here is that Missile may be shot, but takes some time to recharge so the enemy can shot a missile or the missile will be Oxygen or Fuel etc. Not sure on this one yet. Any ideas are welcomed.

 

Start to design level 2. It will run north and south. I'm going to try and use Gemintronic's code is used here smoothcrl2.bas and see where it goes.

 

My goal is to have as many levels and variations as possible to play and see what this morphs into.

 

Current issue as stated is the pfscore1 being used to track the level. I could remove the color, but the player would know exactly where they were. If I do this it would play into the map screen any ways, but it may throw off where you are and have the map off as well.

20180522 - The Quest (Multisprite).txt

20180522_The_Quest_(Multisprite).bas.bin

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

Another Progress Update:

 

***What Works / Fixes:

 

Proximity Detection for the Sub on the Top Level is fixed now. I was off a few numbers.

 

Swimmers now swim up and down to simulate current or movement.

 

Sub has a propeller and does not move when idle.

 

I was able to to get the Ball and Both Missiles back for later use instead using them as Markers.

 

There is now score to use. Just save / touch the swimmer for 1 point.

 

***Future Plans (Hopefully):

 

Use pfscore2 as a shield for when touching spikes.

 

If you shot a swimmer you loose points. Go negative or loose shield game over.

 

Have enemy Subs / Swimmer (Color Based) that will shoot at you (AI maybe an issue here)

 

Title Screen (I still have trouble with the title screen. is there at YouTube video or something), Pause Feature, Map Screen, Cut Scenes, Game Over Screen and Sound. Exit for Level I into Level 2. Add more possible enemies.

 

Test on AFP (Hopefully it will work. One reason I left DPC+ for now until that is fixed)

 

Try to add any feedback from the Forum to make the game better.

 

Thanks.

20180523_The_Quest_(Multisprite).bas.bin

20180523 - The Quest (Multisprite).txt

  • Like 1
Link to comment
Share on other sites

Bb Team,

 

Another update / progress.

 

What works (needs more testing):

 

1. Game Play: Move the Sub around and save the blue swimmers (I plan to have in the next update if you shoot them you loose a point). Don't get shot of course, loose a point. Touch a Red Swimmer loose a point. Touch a spike and loose some shield strength.

 

2. Missile0 is long for some reason. I'm still looking for the reason why.

 

3. Red Swimmers will shot at you if you are on their floor

 

4. Touch the spike and loose some shield strength. (Trying to fix it where it will replenish for every 5 blue swimmers you save). I'm using the code below as a start.

 

;***************************************************************
;
; Save 5 Swimmers to replenish one slot on shield
; pfscore2*2|1
;
if _sc1 = $00 && _sc2 = $00 && _sc3 = $08 then pfscore2 = pfscore2*2|1

 

RevEng has something sort of on this at:

 

dim fifties=m
if fifties>0 then fifties=fifties-1:score=score+50

 

I'm not sure how I will get this to work or maybe think of something else.

 

5. It's starting to look and feel more like a game now. If you run out of shields or points hit zero I have a "temporary" game over screen for now.

 

As always any help or feedback is welcome, thanks.

 

***edit***

 

I forgot to turn the spike back on after some testing. Just change the 3 to 4 to have spike up for testing, thanks.

 

;```````````````````````````````````````````````````````````````
; Skips section if counter isn't ready.
; "3" is used to adjust the speed of the spikes
;
if Counter < 3 then goto __Skip_Moves

20180525_The_Quest_(Multisprite).bas.bin

20180525 - The Quest (Multisprite).txt

Edited by Lewis2907
Link to comment
Share on other sites

Another update:

 

1. Title screen is working, but I want it look better than what I have. I plan to work on this some more. Currently I am using Palindromes since the playfield is mirrored.

 

2. Level 1 is basically complete. Game play is as follows:

 

a.) Touch a "Blue Swimmer" get 1 point

 

b.) Touch a "Red Swimmer" loose a point

 

c.) Get shot by a "Red Swimmer" loose a point

 

d.) Touch a "Spike" loose a portion of your shields

 

e.) You can "Reset" the game at any portion of game play e.g TitleScreen, Game Play, Pause and Game Over

 

f.) You can pause the game by using the "Select" switch

 

g.) Tips / Hints: If you ship turns Red that means your "Proximity Detection" is on and spike is on it's way out to hit you.

 

h.) Tips / Hints: Swimmers will turn around (90%) of the time to not hit a spike even it's in.

 

i.) Your shield strength is on the right of the player score. The level marker is on the left of the score. (Level Markers is off sometimes, still working out the bugs).

 

3. Future Updates:

 

I plan to start on Level 2 (not sure what I want this to be yet) and a Map Screen using the B/W Switch. Work on bugs that I find or someone tells me about. Better Titlescreen etc. Have a goal to complete to win the game. Find a way to replenish your shields for every 5 Blue Swimmers you save.

 

 

20180530_The_Quest_(Multisprite).bas.asm

20180530 - The Quest (Multisprite).txt

Link to comment
Share on other sites

Another update:

 

Fixed the Game Over Screen to reset back to the start of the game. Every 5 points your shields will replenish. Working on just making it work for every 5 blue swimmers. Missile shouldn't pass through the spikes, but they do every blue moon. I think it's because of all the "gosub" I am using.

20180601 - The Quest (Multisprite).txt

20180601_The_Quest_(Multisprite).bas

20180601_The_Quest_(Multisprite).bas.bin

Edited by Lewis2907
  • Like 1
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...