algarsoft Posted October 16, 2018 Share Posted October 16, 2018 Hail to the TI-99 community! I've recently purchased a CF7+ with parallel interface and I've reviewed my OLD TI99 programs. I've learnt my first assembler on the TI-99 when I was 13. I've found here on atari age, the links to a lot of interesting stuff, among which the Atari port of PacMan, by Howard E. Scheer. In my humble opinion, It's the BEST port of an arcade for the TI-99 and it's VERY playable and responsive (even with the original TI Joysticks). Played on "real iron" it's VERY fun and addictive! Unfortunately, the disk version had two annoying bugs: 1) The high score was trashed at startup with a very high number, not allowing ANY user score to be recorded. 2) The screen flickered every now and then while playing and sometimes the game crashed after the flicker. I've studied in my spare-time the binary and found that: 1) The high score was trashed because the scratch-pad area was not properly initialized by the loader (originally it was a Solid State Cartridge) 2) The original system interrupt routine blanked the screen every 9/10 minutes without pressing a key and, sometimes, trashed some VDP registers restoring the screen. So I've simply added a by-pass fragment on startup that clears the scratch pad area and installs an user ISR that loads the blank screen count-down at >83D6 with >8000, thus disabling the screen blank for keyboard inactivity. Now You can load the binary with an option 5 loader (E/A, XB, Beaxs) and play the game without problems. You can use the .dsk attached: with E/A: choose 5 and then type DSK1.PACMAN with XB: let the XB loader run and type DSK1.PACMAN By the way, my personal hi-score (played on a real TI99) is 170.460 points at the 16th screen. Anyone knows the official one? Cheers! 2 Quote Link to comment Share on other sites More sharing options...
+FarmerPotato Posted October 16, 2018 Share Posted October 16, 2018 Awesome! Hacking a 35 year old binary to make it fully compatible with its host OS! Quote Link to comment Share on other sites More sharing options...
algarsoft Posted October 16, 2018 Author Share Posted October 16, 2018 the .dsk attachment was missing. I Retry with this.... Quote Link to comment Share on other sites More sharing options...
algarsoft Posted October 16, 2018 Author Share Posted October 16, 2018 .dsk file finally attached. Sorry, could not spot the problem. PACMAN_FIX.zip 3 Quote Link to comment Share on other sites More sharing options...
algarsoft Posted October 16, 2018 Author Share Posted October 16, 2018 I don't thik this is the original SolidState version, but an hacked OPT5 version for PEB/disk drive... Maybe, who originally ripped the cartridge forgot the blanking and scratch-pad init... Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted October 16, 2018 Share Posted October 16, 2018 So I've simply added a by-pass fragment on startup that clears the scratch pad area and installs an user ISR that loads the blank screen count-down at >83D6 with >8000, thus disabling the screen blank for keyboard inactivity. Though your solution of loading >8000 at >83D6 at every interrupt certainly does the trick, slightly faster than loading with something like MOV @H8000 @>83D6 (?) would be to set >83D6 to >FFFF with SETO @>83D6 Even though faster, I suppose it is doubtful it would really make a difference in game-play, but you never know. ...lee Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted October 16, 2018 Share Posted October 16, 2018 .dsk file finally attached. Sorry, could not spot the problem. Cool addition for those without the cartridge .BIN On a side note, I love the way the TIPI browser application handles the DSK image. All you have to do is upload the DSK image to the TIPI and it "automagically" creates a folder for it, extracts the files and drops them in it. There is no longer a need to use TI99Dir! I don't think from download to putting it on the TIPI took longer than 20 seconds. 1 Quote Link to comment Share on other sites More sharing options...
+9640News Posted October 16, 2018 Share Posted October 16, 2018 HexaCoreRunner, I have not explored the use of DSK images at this point in time with the TIPI as I have focused on Telnet work. What do you mean by "upload the DSK image to the TIPI" and them automatically extracts the files and drops them in it? I'm still learning........... Beery Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted October 16, 2018 Share Posted October 16, 2018 What do you mean by "upload the DSK image to the TIPI" and them automatically extracts the files and drops them in it? I'm still learning........... Yeah, it's really cool.... 1) Download the ZIP file. 2) Slide the Disk Image out of it to your desktop. 3) Load your PC's Browser 4) Choose your TIPI shortcut which takes you to: http://tipi:9900/files 5) Click the UPLOAD icon, then click on "choose files" 6) Click on the file to upload and then click on the UPLOAD BUTTON on your PC THAT'S IT! In this case of the program above it creates the directory folder and drops those files into it. 1 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted October 16, 2018 Share Posted October 16, 2018 Or open a folder and type in \\tipi\TIPI in the box at the top.. or map a network drive to that (I use T:) then you can just drag and drop the dsk to the drive.. or folder of your choice I will also say that the DSK unpack feature is in the last or next to last revision of the TIPI software, so run TIPICFG and make sure you have the latest! 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted October 16, 2018 Share Posted October 16, 2018 Or open a folder and type in \\tipi\TIPI in the box at the top.. or map a network drive to that (I use T:) Good idea! I forgot to map the drive on my new pooter, so I took care of that, and used T as well! Quote Link to comment Share on other sites More sharing options...
algarsoft Posted October 17, 2018 Author Share Posted October 17, 2018 Though your solution of loading >8000 at >83D6 at every interrupt certainly does the trick, slightly faster than loading with something like MOV @H8000 @>83D6 (?) would be to set >83D6 to >FFFF with SETO @>83D6 Even though faster, I suppose it is doubtful it would really make a difference in game-play, but you never know. ...lee Yes, nice suggestion! After more than 30 years I didn't recall that the counter is incremented BY TWO, not by one. (To be honest, I didn't even recall if the counter was incremented or decremented and so, I felt safe with >8000) As a matter of fact, I've checked the system ISR in ROM and (once decided that the current interrupt is from VDP) it will land at: 0A8A LWPI >83C0 ; Interrupt workspace 0A8E INCT 11 ; Increment BY TWO counter 0A90 JNE >0AA8 ; jump if counter is not 0 0A92 .... ; blank the screen if ==0 .... 0AA8 LWPI >83E0 ; GPL workspace .... ; increment tick at @>8379 ; call user ISR, if any so it's definitely more efficient (and without potential side-effects) performing a: SETO @>83D6 than a clumsy: LI R0,>8000 MOV R0,@>83D6 The forced >FFFF will always be >0001 at the next vertical screen blank interrupt, thus disabling the system screen saver. (Moreover, the game has ITS own screen saver for user inactivity) Thanks a lot Lee... 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.