Jump to content
IGNORED

Night Stalker - (XB256 compiled) FINAL VERSION


LASooner

Recommended Posts

FINAL VERSION. I've included source code and graphics, if anyone wants to improve the playability.



XwLo1eL.png

 

Thanks to TI99IUC For the cartridge label design
ga1hzv6.jpg

 

msg-24673-0-56119200-1545087119_thumb.pn

 

 

 

Uses Joystick 1, check your ALPHA LOCK before playing.

 

Updated 12/14/2018

 

 

NIGHTSTK8.bin Cartridge version (No Title Splash Screen)

NIGHTSTALK.dsk XB Disk Version (Includes Splash Screen)

Nightstalker - Manual.pdf Game Manual

Nightstalker-Source Files.zip All the source files to make the game.

Edited by LASooner
  • Like 21
Link to comment
Share on other sites

As an aside, does anyone know how to keep the DISPLAY AT from adding a blank character to the left and the right of the value? IS DISPLAY AT USING the only way? Because that function doesn't compile. And unfortunately XB256's CALL LINK("DISPLAY") only uses character strings not values.

Link to comment
Share on other sites

As an aside, does anyone know how to keep the DISPLAY AT from adding a blank character to the left and the right of the value? IS DISPLAY AT USING the only way? Because that function doesn't compile. And unfortunately XB256's CALL LINK("DISPLAY") only uses character strings not values.

Sadly RXB is not supported by XB256 and RXB has CALL HPUT(row,column,string,...) or CALL HPUT(row,column,number,...) {this is the same as HCHAR}

 

CALL HGET(row,column,string-variable,...) {this is the opposite and gets stirngs off the screen that XB does not allow}

 

To bad XB256 does not have a RXB256 versions as this would solve a ton of issiues people have making games.

  • Like 1
Link to comment
Share on other sites

As an aside, does anyone know how to keep the DISPLAY AT from adding a blank character to the left and the right of the value? IS DISPLAY AT USING the only way? Because that function doesn't compile. And unfortunately XB256's CALL LINK("DISPLAY") only uses character strings not values.

 

A few things come to mind... I am out and about so only going from memory at the moment, but think I am on the right track. If you use something like the following this is likely causing the spaces;

 

 

DISPLAY AT(1,1):"SCORE";A

 

Whereas the following should give you a better display;

 

 

A$="SCORE "&STR$(A)::DISPLAY AT(1,1)SIZE(LEN(A$)):A$

 

I think using the same A$="SCORE "&STR$(A) should allow you to use the XB256 feature. Again, only going from memory.

 

Game looks great by the way! :)

  • Like 2
Link to comment
Share on other sites

 

A few things come to mind... I am out and about so only going from memory at the moment, but think I am on the right track. If you use something like the following this is likely causing the spaces;

DISPLAY AT(1,1):"SCORE";A

Whereas the following should give you a better display;

A$="SCORE "&STR$(A)::DISPLAY AT(1,1)SIZE(LEN(A$)):A$

I think using the same A$="SCORE "&STR$(A) should allow you to use the XB256 feature. Again, only going from memory.

 

Game looks great by the way! :)

 

 

Ahh so I can use STR$ to apply the numeric value into a string that can be displayed, that's what I was looking for.

 

Thanks!

Link to comment
Share on other sites

BUGS:
Bullet still registers hits after dying if player doesn't shoot
Bats will start shooting at player after 5000 points, when the bats are supposed to become robots after death

Robot not switching to higher level robots after 15000 points

Fixed the issue with the score not drawing correctly (thanks Bones-69)

Also changed the spider color to light green, it looks better on a CRT

Edited by LASooner
Link to comment
Share on other sites

I think I have a solution, All point values are hundreds or thousands, if I just add two zeros to the converted string, "200" Points would actually be 2 points internally. This means one could theoretically score up to 3,276,700 before you flip the score. I now return you to your regularly scheduled programming.

  • Like 4
Link to comment
Share on other sites

Update uploaded to first post.

 

 

Memory is getting tight, so I'm optimizing as much as I can. But I may lift my skirt in the next week or so and get other eyeballs on my code to see what can be done to improve speed and space

 

 

 

COMPLETED:

Bats and Spiders stun player

Add hit points to Level 3+ robots

BUGS:

Characters are being defined after the title screen comes up

STILL NEED TO COMPLETE:

Bats and Spiders die from bullet hits from either player or robots

Level 2+ Robots pursue player through maze

Level 4 Robot destroys bunker
Level 4 Robot shots kill player bullets

Add an attract screen mode, to give the player time to start the game and explain scoring
Bats start hanging from ceiling
Add delay before player and robot respawn

Link to comment
Share on other sites

Updated Rom image in Post 1:

 

Bats and Spiders die from bullet hits from player

 

This is the last major hurdle, but in getting this working the delay for the robot respawn seems to have broken

 

Game is playable but too slow, I need to optimize some more, also running up against memory limits, lots of if/then statements that I'll need to see if I can do it better, Notepad ++ reports 178 IF/THEN Statements

 

 

If anyone wants to take a crack at improving speed and memory, I've included the code. I program in TIdBit so the comments are in that format.

 

Be nice, Code is not my strong suit.

 

EDIT:

Updated in a later message, just didn't want people trying to fix problems I fixed

 

http://atariage.com/forums/topic/276268-night-stalker-in-progress-xb256-compiled/?p=3985398

Edited by LASooner
  • Like 3
Link to comment
Share on other sites

I now have level 2 or higher robots chasing the player, it's working pretty well.

 

However, I'm running out of memory after the game is compiled, I don't know why, but I'll have to look into optimizing it. In extended basic, the memory left is roughly 4.6k remaining before I run it, and roughly 3.6k remaining after running it, so I'm not sure what's happening after compiling that's causing me to lose that 3.6k, but that doesn't seem right.

 

because of this I have not uploaded a new rom image since it doesn't run.

Link to comment
Share on other sites

 

 

Updated the Rom image in 1st post.

 

Had to remove my title screen to make room, just so the game can run compiled. Will look into trying to free up memory, or just make a simple title.

 

Bats and Spiders die from bullet hits from player

Level 2+ Robots pursue player through maze

Add delay before player and robot respawn

 

Game is more or less feature complete, lots of debugging and performance issues to sort out. Level 4 robot features aren't critical as I don't think many will get there yet.

 

Has anyone played it?

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

Played it a bit ago. Was reserving feedback after you finished, as you already had all my issues covered. :) BTW - the new video doesn't work. One thing I'm a bit concerned about, however, is your intersection tracking. That's a lot of logic... You could put all the check 1, check 2, resetTo variables in an array and then iterate on the array. That'd save a lot of memory.

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

Yeah arrays could be used as kind of a "look-up-table" to be checked on each update the game makes, you'd be hitting the stack then, rather than program space.

 

I must say , very good game. Something I've all-too-often struggled with is making sprites recognize character wall boundaries.

  • Like 1
Link to comment
Share on other sites

Video should be working now YouTube marked it private for some reason

 

So put the sprite positions for the robots and bats in a 2 dimensional array and check against that? Is that what you guys are saying?

 

Something like XX(ROW,COL), Storing all the the intersection locations in that to check against. Do I have that right?

 

And would that improve speed as well?

Edited by LASooner
Link to comment
Share on other sites

I'm wondering about the XB code above and how it's being compiled. How are you able to get the IF-THEN statements to compile without using line numbers? I see things like

1870 IF DR(1)=1 THEN RETURN
2100 IF (BS1=2)*(M=2) THEN DS=1

...and am wondering how those compile properly since one of the limitations of the compiler is that IF-THEN-ELSE will only work with line numbers.

 

Also, not sure that this will save much memory, but one quick one that can be changed, based on the valid values of DS per your comment in the above code, would be

380 IF DS=1 THEN GOSUB 1020::RETURN
390 IF DS=2 THEN GOSUB 1050::RETURN
400 IF DS=3 THEN GOSUB 1240::RETURN

reduced to

380 IF DS=0 THEN 410
390 ON DS GOSUB 1020,1050,1240::RETURN

Anyway, sorry I'm not much help at this time (at work and checking your code on my downtime) but will continue to look it over. Again, great looking port!

  • 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...