Jump to content
IGNORED

Type-in game runs from tape but not from disk


Recommended Posts

Hi, I need some techie help.

I have a type-in program "Wild Strawberries" which I have on a cassette image. The game works perfectly fine on an emulated Atari 400 in Altirra when I CLOAD it with the BASIC cartridge image installed.

I want to transfer the game to an ATR so I can auto-boot it. To transfer the listing to a disk I have inserted a fresh copy of an auto-boot disk image (containing autorun.sys, dos.sys and dup.sys) and used SAVE "D:AUTORUN.BAS" to save the listing. For other type-in games, following this process works perfectly and auto-boots the game.

However, Wild Strawberries decides to freeze shortly after initialisation, but only when I load and run it from disk. I've tried to debug and narrowed it down to these lines which occur near the start of the program:

 

FOR A=0 TO 511:POKE 10240+A,PEEK(57344+A):NEXT A

FOR A=0 TO 127:READ B:POKE 10240+A,B:NEXT A

FOR A=0 TO 55:READ B:POKE 10448+A,B:NEXT A

 

I half understand that the first line is moving something from ROM to RAM(?), something to do with redefining the character set(?), and the other two lines read some bytes from DATA statements. If I remove these three lines, the game works fine but the graphics are nonsense, as expected.

When I run the game intact, it freezes shortly after doing the above. It lets me break the code, but when I LIST the code, it either freezes or most of the program code is missing or corrupted.

I've tried changing to 800XL, adding more RAM, etc. but it doesn't help. I'm presuming that DOS is taking up some of the RAM and causing the issue perhaps?

How can I fix this?

Link to comment
Share on other sites

You are correct: the three lines in question move the character from ROM to RAM, then redefine a total of 16 + 7 characters.  There's a line somewhere that includes  "POKE 756,40"; if you remove that as well, then I suspect the program will run but not have the redefined graphics.

 

There's a version at Atarimania: https://www.atarimania.com/game-atari-400-800-xl-xe-wild-strawberries_16753.html

 

Question: Which DOS are you running?  On an emulated 400, with 16K of RAM, once you've got a DOS loaded there's not a heck of a lot of RAM available; I suspect the program is clobbering itself.

 

 

Link to comment
Share on other sites

The program is quite small, on an 800XL you can make the following changes and it should run ok.

 

BASICally (excuse the pun), lower RAMTOP to a nice free space  and move the character set there

I've used the 32K boundary

 

65 FOR A=0 TO 511:POKE 32768+A,PEEK(57344+A):NEXT A
70 FOR A=0 TO 127:READ B:POKE 32768+A,B:NEXT A
75 FOR A=0 TO 55:READ B:POKE 32976+A,B:NEXT A

 

100 GRAPHICS 17:POKE 756,128

 

image.thumb.png.52f6dc13ec131e331543e24db0cd88aa.png

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

17 hours ago, David_P said:

You are correct: the three lines in question move the character from ROM to RAM, then redefine a total of 16 + 7 characters.  There's a line somewhere that includes  "POKE 756,40"; if you remove that as well, then I suspect the program will run but not have the redefined graphics.

 

There's a version at Atarimania: https://www.atarimania.com/game-atari-400-800-xl-xe-wild-strawberries_16753.html

 

Question: Which DOS are you running?  On an emulated 400, with 16K of RAM, once you've got a DOS loaded there's not a heck of a lot of RAM available; I suspect the program is clobbering itself.

 

 

Hi, thanks for your response. TGB1718 has provided a working solution, but to answer your questions, I have no idea what DOS is being used (I never had a disk drive for my 400 or 800XL when I was little, only tape decks). The emulator is running in 400/800 mode with 48K RAM so technically there's enough there, but the program appears to be copying the character set to a location which was being used by something else (guesswork). TGB's solution of moving the charset to elsewhere in memory fixed it :)

Link to comment
Share on other sites

5 hours ago, TGB1718 said:

The program is quite small, on an 800XL you can make the following changes and it should run ok.

 

BASICally (excuse the pun), lower RAMTOP to a nice free space  and move the character set there

I've used the 32K boundary

 

65 FOR A=0 TO 511:POKE 32768+A,PEEK(57344+A):NEXT A
70 FOR A=0 TO 127:READ B:POKE 32768+A,B:NEXT A
75 FOR A=0 TO 55:READ B:POKE 32976+A,B:NEXT A

 

100 GRAPHICS 17:POKE 756,128

 

 

 

Ah thank you so much! This worked perfectly with the default 48K RAM mode in the emulator :) :) 

I'm having a similar issue with Doctor Who Adventure (I know there's a downloadable version but that's slightly different to the type-in version I want to transfer to disk) so I'll see if I can apply the same solution.

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