Jump to content
ti99iuc

Snake Snake for Mini Memory (a Nibbler Arcade Version in Assembly)

Recommended Posts

Hello!
 

During the preservation phase, I stumbled upon this beautiful version of the famous arcade game, Nibbler.

 

1075004860_SnakeSnake-0.thumb.png.017dc35c6802e0ee3e39134bd5270633.png  661380788_SnakeSnake-1.thumb.png.cb00d26cce666922871de492edecb956.png  1904949746_SnakeSnake-4.thumb.png.611c5b2a00da60868753aafc29209b3e.png

 

It has been published on an Italian Magazine in 1985 and it is written purely for the Mini Memory cartridge and consists of two parts, the first loaded using option 2 EasyBug and the second loaded by TI-BASIC but through the instruction CALL LINK ("LOAD").

 

It would be really nice to save everything in a digital format more usable than the .WAVs files.

I tried to load them with the MAME/MESS emulator and they work fine.

In my opinion it's a beautiful version and deserves to be played by everyone in an easy way.

I never thought that with the Mini Memory cartridge you could get such a complete game loaded from a cassette tape. I am really surprised.

is there in the community someone that would have the ability to convert it to a better format, maybe .BIN or at least, a disk format? Could be nice!

There are the link to the game page and the .ZIP file containing the material that I was be able to put together.

 

Page:
https://www.ti99iuc.it/web/index.php?pageid=database_cerca&archivioid=883

 

Download:
(Ita)-(Game)-(Snake Snake)-(1985)-(MM)-(by M.M.G. Software)-(from TI99NewSoft).zip

Edited by ti99iuc
  • Like 12

Share this post


Link to post
Share on other sites

I will look at this tonight. If the RAM at >7000 to >7FFF is only used to hold the program (i.e. workspaces are in the scratchpad and variables are in the scratchpad or VDP ram) then you should be able to make a normal cartridge from this program. Otherwise, you'd probably have to load the code, then disassemble and relocate it to the 32K memory. Or possibly you could use a supercart with RAM at >6000 to >7FFF, but not everyone has one.

Edited by senior_falcon
  • Like 5

Share this post


Link to post
Share on other sites

Can this be loaded with Classic99? I tried loading it with EasyBug and heard the cassette player chirping away, but nothing appears anywhere in memory.

Any ideas?

Share this post


Link to post
Share on other sites

cl052a.thumb.jpg.c26b63f0af350be231932e8ab1e83644.jpg

 

cl052b.thumb.jpg.d2eba405638c8dd95dfff47c5d0fbe74.jpg

 

Spoiler

Loading Instructions:
---------------------

Once the computer is turned on with the Mini Memory cartridge inserted, 
select option 2 EASY BUG, then press any key and, when the exclamation
mark appears, press the letter 'L'.

Then follow the steps to load the first part of the program:
SnakSnake-MM_1part_EasyBug.wav 
(this will be inserted into the memory of the cartridge).

After the first program has been loaded, the question mark will appear
again and, at this point, you will need to reset the computer by means
of FCTN + '=' keys, (QUIT function).

Then enter the TI BASIC (option1) and load the second 
file SnakSnake-MM_2part_Basic.wav by typing:

CALL LINK ("LOAD")

At the end of the loading process the game will start automatically.

(more at: https://www.ti99iuc.it/web/index.php?pageid=database_cerca&archivioid=883)

 

  • Like 1

Share this post


Link to post
Share on other sites

This software seems to utilize many system resources, including:

 

PAD, MEDIUM MEMORY, VDP RAM(all), BASIC's INTERPRETER, EASYBUG's GROM(CALL LINK), and perhaps others.

 

One issue(making a .bin) is the need for RAM at >7000...
Another, is that CALL LINK hands off execution with WS set to >70b8.

 

I've been fooling around with this for a while now... I'd like to believe that I've cleared a few hurdles... still no dice. I think I'll need to use my own resource for reloading VDP, I'm not sure that what I've been using is fully capable.

  • Like 2

Share this post


Link to post
Share on other sites
32 minutes ago, senior_falcon said:

I have followed those steps and it does not work. 😞

Speaking in Tursi's voice... Are you using the latest version?;)

  • Like 2
  • Haha 2

Share this post


Link to post
Share on other sites

First of all, thanks for your time and the trials you are doing for it to try to obtain a better and easier way to load this game 🙏 :) 🙏

 

Honestly I havent tried to load it in classic99 because Tursi always said that cassette tape is not so accurate, then I use Mame/Mess for it. Anyway I have seen that 'Home Automation' tried it and seems to work, maybe just a version problem then?

 

anyway, hoping it can helps, I had success in saving the first EasyBug program in an Object file thanks the tutorial that by @senior_falcon and the SaveMM utility.

 

Load-Screen_OK.thumb.png.b75e9dbf8c03539c117c072e4653f788.png  SNAKE-O

 

At least with this one, should make the loading procedure shorter but I do not know if it can help to obtain a totally digital version of the game.



 

Edited by ti99iuc
  • Like 2

Share this post


Link to post
Share on other sites

Just a comment that the volume of the wav files was very low. I could not read them into js99er.net without increasing the volume.

  • Like 3

Share this post


Link to post
Share on other sites

The SNAKE-O file loads code into the minimemory.

When I go to BASIC I can now CALL LINK("LOAD") and I am given the cassette prompts. I select the WAV file per Tursi's instructions and it chirps for a while, then reports "ERROR - NO DATA FOUND"

I am out of ideas on this one.

Share this post


Link to post
Share on other sites

Ok, well, as suggested by Rasmus I have amplified the WAVs and attached here, so you can check if they will not reports the same error?

 

[Edit]
I have tested on Classic99 and I can confirm it works with this.image.thumb.png.ddf3a5ae20c9d88d6eb7fd8a721c8d4c.png

 

Snake Snake-WAVs Amplified.zip

Edited by ti99iuc
added screenshot of classic99
  • Like 2

Share this post


Link to post
Share on other sites

Doesn't work for me - I still get "ERROR - NO DATA FOUND"

 

I feel silly. I thought I was using the latest version of Classic99, but after downloading the latest one I can get this to run.

I have hopes that this will be something that can be made to be easily loadable.

Edited by senior_falcon
  • Like 2

Share this post


Link to post
Share on other sites

I believe this is a hybrid program. At least some of it seems to be written in BASIC. The Easy Bug portion seems to load the assembly part of the program and then the CALL LINK("LOAD") loads the BASIC program in a different way than OLD CS1. I'm not yet totally sure of this, but if so, then the trick is to figure out how to extract the BASIC program.

  • Like 2

Share this post


Link to post
Share on other sites

I was able to extract the BASIC program from SnakeSnake. It is in the spoiler below. I do not know if other things are used in the VDP memory besides this program. I don't understand the program completely, but judging from the pause when the snake turns the corner, I'm guessing the program returns to BASIC to make a decision, then back to the assembly sub.

I also extracted the assembly code from >7000 to >7FFF. Itis in this format:

AORG >7000

BYTE (8 bytes)

x512

END

I have a crummy homebrew disassembler that is not really capable of dealing with this. I understand there are diassemblers that can read a disk and produce a source code listing.

Spoiler


100 CALL LOAD(-32658,14,0,"",-32732,13,248)
110 DIM R1$(21),R2$(21),R3$(21),R4$(21),R5$(21),R6$(21)
130 GOSUB 705
140 FOR C=1 TO 16
150 CALL COLOR(C,16,1)
160 NEXT C
180 CALL COLOR(1,10,1)
190 DATA 62524A46464A5262,00FF18244281FF,464A526262524A46,00FF81422418FF
200 DATA 6253484442417F,46CA12224282FE,00FE82422212CA46,007F414244485362
210 FOR C=128 TO 135
220 READ A$
230 CALL CHAR(C,A$)
240 NEXT C
250 CALL CHAR(34,"FF888888FF888888")
260 CALL CHAR(35,"F8888888F8888888")
270 CALL CHAR(36,"FF888888FF")
280 CALL CHAR(37,"F8888888F8")
300 RESTORE
310 FOR C=136 TO 143
320 READ A$
330 CALL CHAR(C,A$)
340 NEXT C
350 RESTORE
360 FOR C=144 TO 151
370 READ A$
380 CALL CHAR(C,A$)
390 NEXT C
400 CALL CHAR(152,"183C5A99995A3C18")
440 CALL CHAR(153,"")
450 DATA  
001028285428281,0038546C5438,000018342C18,000028545428,00386C5428381,00002C142834
460 FOR C=100 TO 105
470 READ A$
480 CALL CHAR(C,A$)
490 NEXT C
540 A$="00183C66663C1800"
550 FOR C=120 TO 123
560 CALL CHAR(C,A$)
570 NEXT C
580 DATA 7E7E3C3C18181818,00C0F0FFFFF0C,181818183C3C7E7E,00030FFFFF0F03
590 FOR C=112 TO 115
600 READ A$
610 CALL CHAR(C,A$)
620 NEXT C
621 DATA 16,10,9,11,5,14,13,15
622 FOR C=9 TO 16
623 READ A
624 CALL COLOR(C,A,1-8*(C=12))
625 NEXT C
627 CALL LINK("NIBBLE",R1$(),R2$(),R3$(),R4$(),R5$(),R6$())
630 DATA ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†,€                          ‚,€ ‡ ƒƒƒƒƒ  
ƒƒƒƒƒƒƒ ‡ƒƒdƒƒƒ† ‚
640 DATA € €       d             d‚ ‚,€ „ … € ‚ ‚,€   d      d     
 d  €    ‚ ‚
650 DATA € † ƒƒƒƒd‚d€ ƒƒ ‚ € „†d‚ ‚,€ €   d  ‚ €    ‚ €d     ‚ ‚,€ „…  
„… „ … ‚
660 DATA €                          ‚,„†d‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‡ƒƒƒ…,‡ƒƒƒ…  
„…d„†
670 DATA €                          ‚,€ ‡ƒƒƒƒdƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ‚,€ €d        d    
    d      ‚
680 DATA € € € ‚d‡ƒƒƒ ƒƒƒƒƒƒƒƒƒƒ† ‚,€ € €d  ‚ €          d  d‚ ‚,€ € „… €  
‡ƒƒƒƒ†dƒƒƒƒƒ ‚ ‚
690 DATA € €d  d  d‚d€ d d‚  d    ‚ ‚,€ „… € „d… ‚
700 DATA €                          ‚,„…
705 RESTORE 630
710 FOR C=0 TO 21
720 READ R1$(C)
730 NEXT C
740 DATA ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹Ž,ˆ                          Š,ˆ ‹‹‹‹  
‹‹‹‹‹‹‹‹‹ ‹‹‹‹‹‹‹‹ Š
750 DATA ˆ ˆe              e      e Š,ˆ ˆ ‹‹‹‹‹‹‹e‹‹‹‹‹Ž ‹‹‹ ‹‹Ž Š,ˆ ˆ    e         
 Š e    eŠ Š
760 DATA ˆ ˆ ‹‹ ‹‹‹‹‹Ž ˆ Š ‹‹‹‹‹ Š Š,ˆ   ˆe    e  Šeˆ Š       Š Š,ˆ ˆ ˆ ˆ ‹‹‹Ž Š  
ˆ Š ‹‹‹‹‹ Š
770 DATA ˆ ˆ ˆ ˆe  eŠ   Š Šeˆ    e  Š,ˆ ˆ ˆ ‹‹Ž Š Š e Š ˆ ‹‹‹Ž Š,ˆ ˆeˆ Œ‰‰ Š Š  
ˆ Š  eˆ  eŠ Š
780 DATA ˆ ˆ ˆ e     eŠ ˆ Š ‰‰ Š Š Š,ˆ ˆ Œ‰‰‰‰‰ ‰‰ ˆ e    eŠ Š Š,ˆ ˆ e        e  
ˆ Š ‹Ž ŠeŠ Š
790 DATA ˆ Œ‰‰‰‰‰‰‰‰‰‰Ž ˆ Š ˆ Š Š e Š,ˆ       e    Š ˆ Š ˆ Š Š Š Š,ˆ ‰‰‰‰‰‰‰‰‰‰eŠ  
ˆ Š Œ‰ Š Š Š
800 DATA ˆ            Š   ˆe    Š Š Š,ˆ ‰‰‰‰‰‰‰‰e‰‰ Š Œ‰‰‰‰‰ Š Š,ˆ                
           Š
810 DATA Œ‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰
820 FOR C=0 TO 21
830 READ R2$(C)
840 NEXT C
850 DATA —“““““““““““–  —“““““““““““–,         f ’             ’, ˜f˜ ˜ ˜f˜ ’   
˜ ˜ ˜f˜ ˜ ’
860 DATA            ’  f         ’, ˜f˜ ˜ ˜ ˜f’  ˜ ˜ ˜f˜ ˜ ’,    f      ’   
     f     ’
870 DATA ˜ ˜f˜ ˜ ˜ ’  f˜ ˜ ˜ ˜f˜ ’,    f      ’  f         ’,f˜ ˜ ˜f˜ ˜ ’   
˜f˜ ˜ ˜f˜ ’
880 DATA            ’         f   ’, ˜ ˜f˜ ˜f˜ ”‘‘• ˜ ˜ ˜f˜ ˜ ’,                
           ’
890 DATA ˜ —‘‘‘‘‘‘– ˜ ˜ ˜ —““– ˜  ’,"         ’         ’    ’","         ’  
˜ ˜ ˜   ’ ˜  ’"," ˜ ”““““““•       ”‘‘•    ’"
900 DATA              —““–         ’, ˜f˜ ˜ ˜f˜ ˜   ’ ˜ ˜ ˜f˜ ’,              
 ’         ’
910 DATA ˜f˜ ˜ ˜f˜ ˜ ”‘‘• ˜f˜ ˜f˜ ’,                           
’,”‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘•
920 FOR C=0 TO 21
930 READ R3$(C)
940 NEXT C
950 DATA ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†,€   g               g      ‚,€ ˜ ˜ ˜ ‹‹Ž ‡ƒ†  
‹‹‹‹‹‹‹‹Ž ‚
960 DATA €         Šg€ ‚ ˆ       gŠ ‚,€ ˜g˜ ˜ ˆ Š € ‚ ˆ g“““– Š ‚,€        gŠ €  
‚gˆ     ’ Š ‚
970 DATA € ˜ ˜g˜ ‰‰ € ‚ ˆ ‡†g’ Š ‚,€ g         € ‚ ˆ g€‚ ’ g ‚,€ ˜ ˜ ˜ ˜g˜ € ‚  
g €‚ ’ Š ‚
980 DATA €           € ‚ ˆ €‚ ’ Š ‚,„… ‚ ˆ g€‚ ’ Š ‚,‡ƒƒƒƒƒƒƒƒƒƒƒƒƒ…  
ˆ €‚ ’ Š ‚
990 DATA €     g         ˆ €‚ ’ Šg‚,€ ˆg‰‰‰‰‰‰‰‰‰‰‰‰ „… ’ Š ‚,€ ˆ      g       
  g   ’ Š ‚
1000 DATA € Œ‰Ž ‰ ‰‰‰ ‰‰‰Ž ”‘‘‘‘• Š ‚,€   Šg  ˆg     gˆ        Š ‚,€ Œ‰ ‰  
—“““– Œ‰‰‰‰‰Ž ‰ ‚
1010 DATA € g      g  ’ g     Š g  ‚,€ ”‘‘‘‘‘‘‘• ‘ ”‘‘‘‘‘‘gŒ‰‰‰ ‚
1020 DATA €g                         ‚,„…
1030 FOR C=0 TO 21
1040 READ R4$(C)
1050 NEXT C
1060 DATA ™™™™™™™™™™™™™™™™™™™™™™™™™™™™,—““““““““““““““““““““““““““–,h              
            ’, ˜h˜ ˜h˜ —“““ “““““““h““– ’
1070 DATA          h             ’ ’, ˜h˜ ˜ ˜ ˜ ˜  h˜  h—– ’ ’,      h       
h  h   ”•   ’
1080 DATA ˜ ˜h˜ ˜   ˜h˜   ˜     h’ ’,  h          —““““““ ‘‘• ’, ˜ ˜ ˜ ˜ ”‘‘‘  
           ’
1090 DATA h           h —‘‘‘‘‘‘‘‘‘•,”‘‘‘‘‘‘‘‘‘– —““• ”“““““““““–,—“““““““““•  
h            ’
1100 DATA        h   “““– ˜h˜ ˜ ˜ ’, —““ ““““““•    ’         ’,      ˜   ˜  
—–   ˜ ˜ ˜h˜ ’
1110 DATA    —“–  h  h ’h’    h    ’, ”‘• ˜  h˜ ”• ’ ˜ ˜ ˜ ˜ ’, h   h        
  ’  h    h ’
1120 DATA ”‘‘ ‘‘‘‘‘‘‘ ‘‘‘• ˜ ˜ ˜ ˜ ’,                           
’,”‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘•
1130 FOR C=0 TO 21
1140 READ R5$(C)
1150 NEXT C
1160 DATA ™™™™™™™™™™™™™™™™™™™™™™™™™™™™,™™™™™™™™™™™™™™™™™™™™™™™™™™™™,™               
            ™,™ ™ ™i™ ™ ™ ™i™ ™ ™ ™ ™ ™  ™
1170 DATA ™            i             ™,™  ™ ™ ™ ™ ™ ™ ™ ™ ™i™ ™ ™ ™,™      i        
 i          ™
1180 DATA ™ ™i™ ™ ™ ™ ™ ™ ™i™ ™ ™ ™  ™,™    i                 i   ™,™  ™ ™ ™ ™ ™ ™  
™ ™ ™ ™i™ ™ ™
1190 DATA ™                          ™,™ ™ ™ ™ ™i™ ™ ™ ™ ™ ™ ™ ™  ™,™  i         i  
            ™
1200 DATA ™  ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™,™ i     i           i      ™,™i™ ™ ™ ™ ™  
™i™ ™ ™ ™ ™ ™  ™
1210 DATA ™ i        i         i     ™,™  ™ ™ ™i™ ™ ™ ™ ™ ™ ™i™ ™ ™,™ ii       i    
        i   ™
1220 DATA ™ ™ ™i™ ™ ™ ™ ™i™ ™ ™ ™ ™  ™,™                           
™,™™™™™™™™™™™™™™™™™™™™™™™™™™™™
1230 FOR C=0 TO 21
1240 READ R6$(C)
1250 NEXT C
1260 CALL LINK("LOAD")
1262 CALL CLEAR
1265 CALL SCREEN(2)
1270 FOR C=96 TO 144 STEP 8
1280 CALL CHAR(C,"")
1290 NEXT C
1310 DATA 16,8,10,13,11,5,9
1320 FOR C=9 TO 15
1330 READ A
1340 CALL COLOR(C,A,A)
1350 NEXT C
1351 FOR C=1 TO 8
1353 CALL COLOR(C,16,1)
1355 NEXT C
1360 PRINT TAB(9);"M.M.G  
SOFTWARE":TAB(12);"PRESENTA"::::::::::::::::::TAB(14);"BY":TAB(7);"MATTIAZZI   
MAURO":TAB(15);"&":TAB(7);"BOTTIN GIANPAOLO"
1380 RESTORE 1390
1390 DATA  
4,6,96,4,5,96,4,4,96,4,3,96,4,2,96,5,2,104,6,2,112,6,3,112,6,4,112,6,5,112
1400 DATA  
6,6,112,7,6,120,8,6,128,9,6,136,10,6,144,10,5,144,10,4,144,10,3,144,10,2,144,10,2,
144
1410 DATA  
6,8,112,7,8,120,8,8,128,9,8,136,10,8,144,7,9,120,6,10,112,6,11,112,7,11,120
1420 DATA  
8,11,128,9,11,136,10,11,144,6,13,112,6,14,112,6,15,112,6,16,112,7,16,120,8,16,128
1430 DATA  
9,16,136,10,16,144,8,15,128,8,14,128,8,13,128,9,13,136,10,13,144,10,14,144
1440 DATA  
10,15,144,4,18,96,5,18,104,6,18,112,7,18,120,8,18,128,9,18,136,10,18,144,5,21,104
1450 DATA 6,20,112,7,19,120,8,20,128,9,21,136,10,21,144,8,24,128,8,25,128,8,26,128
1460 DATA  
7,26,120,6,26,112,6,25,112,6,24,112,6,23,112,7,23,120,8,23,128,9,23,136,10,23,144
1470 DATA 10,24,144,10,25,144,10,26,144
1480 FOR C=1 TO 75
1490 READ A,B,D
1500 CALL HCHAR(A,B,D)
1505 CALL SOUND(30,247,9)
1510 NEXT C
1520 RESTORE 1390
1530 FOR C=1 TO 75
1540 READ A,B,D
1550 CALL HCHAR(A+8,B+2,D)
1555 CALL SOUND(30,247,9)
1560 NEXT C
1690 FOR C=1 TO 500
1700 NEXT C
1900 CALL CLEAR
1910 RESTORE
1920 RETURN

 

 

  • Like 3
  • Thanks 2

Share this post


Link to post
Share on other sites
On 11/12/2021 at 12:16 AM, HOME AUTOMATION said:

I think I'll need to use my own resource for reloading VDP, I'm not sure that what I've been using is fully capable.

The resource I was using(Tursi's) to reload VDP, does seem to work well enough. The next hurdle was that the GROM address is different when returning from the TI's main menu than it is when returning from CALL LINK.:roll:

 

Some issues making this game into a cart, since the game itself requires a cart ...and 994As don't like 2 carts at once!:razz:

 

I focused on recreating the environment more than re-writing things, but I believe that a little of both are needed to do much better.

 

Some issues with restarting the game after a QUIT ...apparently the game is very picky about the WS register's values when starting ...and doesn't want to re-start after it has completed(leaving them altered). I'll try and look into re-initializing these values on re-starts.|:)

 

Maybe let me know if there are any other issues, as I haven't actually played the game.:twisted:

         

SNAKESNAKETESTS.zip

  • Like 2
  • Thanks 4

Share this post


Link to post
Share on other sites
2 hours ago, HOME AUTOMATION said:

The resource I was using(Tursi's) to reload VDP, does seem to work well enough. The next hurdle was that the GROM address is different when returning from the TI's main menu than it is when returning from CALL LINK.:roll:

 

Some issues making this game into a cart, since the game itself requires a cart ...and 994As don't like 2 carts at once!:razz:

 

I focused on recreating the environment more than re-writing things, but I believe that a little of both are needed to do much better.

 

Some issues with restarting the game after a QUIT ...apparently the game is very picky about the WS register's values when starting ...and doesn't want to re-start after it has completed(leaving them altered). I'll try and look into re-initializing these values on re-starts.|:)

 

Maybe let me know if there are any other issues, as I haven't actually played the game.:twisted:

         

SNAKESNAKETESTS.zip 14.47 kB · 2 downloads

 

How to run it? It's not starting in Classic 99 nor in MAME.

 

  • Like 1

Share this post


Link to post
Share on other sites
39 minutes ago, tmop69 said:

How to run it? It's not starting in Classic 99 nor in MAME.

I made it to run from the FinalGROM 99.

It does seem a bit ironic that it doesn't run from Classic99, which I used to make part of the image. But, the image wants RAM at >7000. Not sure how to do that, except on FG99.:ponder:

  • Like 2

Share this post


Link to post
Share on other sites
18 minutes ago, HOME AUTOMATION said:

I made it to run from the FinalGROM 99.

It does seem a bit ironic that it doesn't run from Classic99, which I used to make part of the image. But, the image wants RAM at >7000. Not sure how to do that, except on FG99.:ponder:

Just tested on MiSTer and is working fine if you set the cart type to MiniMemory. 🙂 

  • Like 3

Share this post


Link to post
Share on other sites

@HOME AUTOMATION, @senior_falcon

It is a magic nice community 😊

You are like magicians for me, 

Many thanks for your time and help. 

I am vary happy to see this game added in the finalgrom and also very curious of the original TI Basic listing 🤩 incredible. 

 

 

  • Like 2

Share this post


Link to post
Share on other sites

It is indeed a hybrid BASIC/Assembly program. I have made some tiny changes to the program so it will run from disk on Classic99.

 

With MiniMemory in the slot and the disk containing these two files in disk 2:

Press 1 for BASIC

CALL FILES(0)     (CALL FILES(1) does not save enough memory. this precludes running it from a real TI)

OLD DSK2.SNAKEBX

RUN

It should start up.

 

Change line 90 in SNAKEBX if you want to use a different disk drive.

 

This uses CALL LINK, so it needs MiniMemory or Editor/Assembler BASIC. 

If SNAKE-O were disassembled then it should be possible to port this over to XB, which would at least start up faster and maybe run a little faster as well.

 

In the original program, I believe CALL LINK("LOAD") loads up the BASIC program after the prescan has been done, so it will start up promptly. I am not sure this a performance enhancer because of the extra time needed to read the additional bytes from cassette.

 

(The I,J,K,M keys are used to control the snake)

 

SNAKEBX SNAKE-O

Edited by senior_falcon
  • Like 3
  • Thanks 3

Share this post


Link to post
Share on other sites

Well, for just a moment, I did have illusions of, international monetary exchange,💰 intrigue,👀 espionage,🕶️🤿 and perhaps even some extracurricular activities!🧑‍🤝‍🧑

 

However, I suppose posterity could be viewed as a worthy machination.:twisted: ...:cool:

 

Besides, it was as much luck as it was skillful prestidigitation. 🎰/🎩   ...:grin:

 

:evil:

  • Haha 1

Share this post


Link to post
Share on other sites

Thanks @ti99iuc for posting this and all the work by @HOME AUTOMATION , @senior_falcon for making the game accessible. I got this working on my real TI-99/4A with StrangeCart working as minimemory (which actually is it's default mode for me). I used the disk version to run it, with my ET-PEB working as the disk subsystem. I had to update the firmware of it, since it did not handle the incrementing of the record number in the PAB automatically (the Peripheral Access Block, used by CALL LINK("DSK3.SNAKE-O" in my case, there is a record counter which seems to automatically incremented by the TI disk controller). All the more rewarding once I got it working! My TI has now three ARM cores assisting it, one in the ET-PEB doing disk handling and two in the StrangeCart cartridge  :) 

  • Like 3
  • Thanks 3

Share this post


Link to post
Share on other sites
On 11/14/2021 at 4:14 PM, senior_falcon said:

...

CALL FILES(0)     (CALL FILES(1) does not save enough memory. this precludes running it from a real TI)

...

 

@Tursi I'm curious how you implemented this command mod. Is a change in the disk/basic rom? Since it's a very useful addition it would be nice to add also in the MiSTer TI99 core.

 

 

  • Like 1

Share this post


Link to post
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...