Jump to content
Sign in to follow this  
algarsoft

PACMAN Atari fixed

Recommended Posts

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!

  • Like 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

.dsk file finally attached. Sorry, could not spot the problem.

 

Cool addition for those without the cartridge .BIN icon_thumbsup.gif

 

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.

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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.

post-35324-0-10517100-1539719797_thumb.jpg

  • Like 1

Share this post


Link to post
Share on other sites

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:)

 

post-25598-0-51114400-1539726468.jpg

 

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!

  • Like 1

Share this post


Link to post
Share on other sites

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! icon_wink.gif

post-35324-0-88654200-1539733604_thumb.png

Share this post


Link to post
Share on other sites

 

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

 

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

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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...