Jump to content

algarsoft's Photo

algarsoft

Member Since 13 Jul 2018
OFFLINE Last Active Nov 16 2018 11:42 AM

#4135437 PACMAN Atari fixed

Posted by algarsoft on Wed Oct 17, 2018 5:21 AM

 

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




#4134753 PACMAN Atari fixed

Posted by algarsoft on Tue Oct 16, 2018 10:05 AM

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

Attached Files




#4134737 PACMAN Atari fixed

Posted by algarsoft on Tue Oct 16, 2018 9:53 AM

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!