Jump to content
IGNORED

Legends Help


Recommended Posts

This has happened to me twice now in about 6 months.   Seems to only happen when I am really playing the game for a while.  Before this I could play the game for ...4...6? hours with no problems.  Now if I am approaching an hour or more...(drops back to XB)

 

Any ideas on a fix?  Appreciate any insights.  

 

 

20240504_134204.jpg

Link to comment
Share on other sites

Thanks for your help!  I am using XB 2.4 running off a Final Grom cart.  You think it's a problem with XB or the Legends program itself?  Any other information I can provide?  Any recommendations?

Link to comment
Share on other sites

I am running version 1.1 of Legends.   Instead of a normal 32k I have a SAMS card that @Ksarul made several years ago and offered here.  I think it has a jumper on it for either 1mb or 4mb of RAM.  Should I run some sort of test on either my legends disk or XB or ram?

Link to comment
Share on other sites

26 minutes ago, budz2355 said:

I am running version 1.1 of Legends.   Instead of a normal 32k I have a SAMS card that @Ksarul made several years ago and offered here.  I think it has a jumper on it for either 1mb or 4mb of RAM.  Should I run some sort of test on either my legends disk or XB or ram?

I've not tried it myself, but you might try this after your error occurs.  https://github.com/jedimatt42/ti994a-memtest/releases

 

Link to comment
Share on other sites

Posted (edited)
27 minutes ago, InsaneMultitasker said:

Have you looked at line 771?  For each line referenced by a GOTO or GOSUB or any means, is there a corresponding line?  That would be a good place to start.  

I don't have their disk image, but I looked at a version 1.1 that I have.  Line 771 exists in two files, ISLAND and LGDN/MON.  Both files are almost the same but have some differences.  But the lines in question are the same in each.

 

island
771 CALL AT(P3$,K3,P,TD) :: @C=@C-K3 :: IF @C<1 THEN GOSUB 7640 :: IF @N=0 THEN 1500 :: NEXT V :: GOTO 898
898 NEXT X
7640 DISPLAY AT(15,1):"    THE MONSTER IS DEAD" :: @I=@I+1 :: @N=@N-1 :: @C=@H :: CALL LINK("A",2) :: FOR N=1 TO 10 STEP 2 :: CALL LINK("A",0)       
1500 CALL LINK("A",0) :: CALL LINK("A",6) :: CALL W("  ALL THE MONSTERS ARE DEAD ooooooTHE PARTY GAINSooooooo",14)                                        
lgdn_mon
771 CALL AT(P3$,K3,P,TD) :: @C=@C-K3 :: IF @C<1 THEN GOSUB 7640 :: IF @N=0 THEN 1500 :: NEXT V :: GOTO 898
898 NEXT X
7640 DISPLAY AT(15,1):"    THE MONSTER IS DEAD" :: @I=@I+1 :: @N=@N-1 :: @C=@H :: CALL LINK("A",2) :: FOR N=1 TO 10 STEP 2 :: CALL LINK("A",0)
1500 CALL LINK("A",0) :: CALL LINK("A",6) :: CALL W("  ALL THE MONSTERS ARE DEAD ooooooTHE PARTY GAINSooooooo",14)

 

Since they ran the program fine for months and apparently for 6-8 hours at a time, and I ASS-U-ME they haven't changed anything to the system over that time frame, this makes my hardware spider-sense tingle. 

 

Edited by chris36
Link to comment
Share on other sites

When the error occurs you should LIST 7640 and then LIST 898 and then list 1500 to make sure they are all still in memory

They might all be on file but get corrupted in memory once it is loaded.

Link to comment
Share on other sites

54 minutes ago, chris36 said:
771 CALL AT(P3$,K3,P,TD) :: @C=@C-K3 :: IF @C<1 THEN GOSUB 7640 :: IF @N=0 THEN 1500 :: NEXT V :: GOTO 898

I'm assuming this program disables prescan.  The use of NEXT V in this manner is not valid but without prescan, it will pass through and work.  Barring any other explanation, including a problem with the program or hardware, it might be wise to reconstruct this line. 

Link to comment
Share on other sites

1 hour ago, InsaneMultitasker said:

I'm assuming this program disables prescan.  The use of NEXT V in this manner is not valid but without prescan, it will pass through and work.  Barring any other explanation, including a problem with the program or hardware, it might be wise to reconstruct this line. 

It pairs with the FOR statement on line 770.  Would that be valid then?
 

770 FOR V=1 TO Z :: K3=((W3+_3+J3)*RND)+_W :: CALL C(@A+@B,A3+_A-P,H) :: IF H=1 THEN 771 ELSE GOSUB 2550 :: GOTO 775
771 CALL AT(P3$,K3,P,TD) :: @C=@C-K3 :: IF @C<1 THEN GOSUB 7640 :: IF @N=0 THEN 1500 :: NEXT V :: GOTO 898

 

  • Like 1
Link to comment
Share on other sites

38 minutes ago, chris36 said:

It pairs with the FOR statement on line 770.  Would that be valid then?
 

770 FOR V=1 TO Z :: K3=((W3+_3+J3)*RND)+_W :: CALL C(@A+@B,A3+_A-P,H) :: IF H=1 THEN 771 ELSE GOSUB 2550 :: GOTO 775
771 CALL AT(P3$,K3,P,TD) :: @C=@C-K3 :: IF @C<1 THEN GOSUB 7640 :: IF @N=0 THEN 1500 :: NEXT V :: GOTO 898

 

I didn't want to send anyone down a rabbit hole and in the process, failed to explain myself. Sorry about that.

 

Extended BASIC does not allow FOR..NEXT statements to be coupled with IF..THEN..ELSE statements.  The "IF @N=0 THEN 1500::NEXT V::GOTO 898" portion of line 771 would normally generate a syntax error.  It is possible that there is also a second NEXT V associated with this loop, which would also be considered 'illegal'.   

 

The reason this caught my eye is that I have encountered similar inconsistent errors/crashes in programs where prescan masked incorrect syntax. I don't know if this illegal usage is benign or if over time it causes a stack or memory issue; I have never tried to determine the effects, if any.  What I do know is that you can check for prescan sins by removing the statement that disables prescan, namely, any instance of "!@P-", then run the program and see if XB complains. 

 

Here are a few relevant excerpts from the 99er.net online XB manual (quite handy) via TI Extended Basic Manual with links.doc (99er.net)

 

image.thumb.png.726fa99c5354053131f4158d091f495d.png

 

image.thumb.png.758764550a877090636bf51d0f438541.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Posted (edited)

I confirm that "!@P-" exists at the top of the BASIC code files along with "!@P+" at the end.

 

Edit: And yes, the next line 775 has another NEXT V :: GOTO 898 combo.

 

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

More, probably useless, trivia.  LOAD has comment that it was generated by SysTex V1.0 By Barry Boone.  From ninerpedia, "Systex (used to embed Assembler code into XB so that you could load an XB file which would then push the embedded assembler routines into Low memory expansion without having to use the horribly slow XB object code loader)".  So there's that.

Link to comment
Share on other sites

Hi everyone!

 

I apologize for the delay in responding and really appreciate everyones help!  Yesterday I was able to replicate the error, but this time it was a different.  Still seems to only happen during combat.   I did some LIST of the lines I thought might be relevant, hoping these clues help?  I also looked at the memtest link, but the description on that github link says it's for fixing a conflict between corcomp and Myarc cards.  Should I still try to run that?

20240512_211156.jpg

20240512_211348.jpg

Link to comment
Share on other sites

That was a description of changes made to that particular release of the software.  The link I posted is directly to the last compiled release.  The file ending in bin is the one you want to run from Final Grom.  Here is the link to the "front page" of the memtest utility with full description. 

https://github.com/jedimatt42/ti994a-memtest

  • Thanks 1
Link to comment
Share on other sites

Is the disk image (that you are using) posted somewhere?

 

I downloaded LEGENDS2.DSK (not Legends1) and there are two files with similar lines.  Removing prescan reveals that in both LDN2/MON and ISLAND, lines 634, 708, 771, and 858 contain syntax errors.  After the IF statement, the "::NEXT V::GOTO 898" statements should be removed.   See first screenshot.

image.thumb.png.c7700eb187e9c147505653c8ca230a48.png

 

A quick test also shows that an ELSE in this case is implied, which isn't what I expected. 

image.thumb.png.b77540242439fe99f4264c05d4b24d41.png

If we replace "200" with a PRINT statement, the logic flow is different. I don't remember if this particular flow is called out as a bug in XB or is truly expected. For the two programs, this logic difference doesn't matter because in all four lines, the next line number contains the needed "NEXT V ::GOTO 898" statements.  I don't know that this will fix your gameplay but it can't (shouldn't) hurt anything. 

 

image.thumb.png.28970f63815fac8d0fcc554cfa91c0f3.png

 

 

 

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