                                 .                                             
                          /%%%&&&@@@@@#                                        
                      ./%@@@@@@@@@@@@@@@(                                      
                     /(&@@@@@@@@@@@@@@@@@&                                     
                    */(&@@@@@@@@@@@@@@@@@@                                     
                    */#@&%@@@@@@@@#@@@@@/                                    
                    /((&%(/***,..,**/(%@@@                                     
                    ,(((((/**,.,,,***//@@*                                     
                     /((//(%(,,/((/**//#,,                                     
                     .(((****/.,,*,,.**/*                                      
                      (((/*,**.,*,..,*/(((/(///,                               
                  ,((#&@((/**/*,,.,**/(((/***,,,**//*                          
              .*/((#&@@@@(@///////**/(((/*/%@@&&&&%*****/*                     
            ,**#&&&@@@@@@%*@(//****(////*&@&@@&&&&&&%*****/,                   
          .,,*##%@&@@@@@&,,*/(%%#(////*(@#@&@@@@&&&&&%(,,**//                  
          .*,/%%&@@@&@&*,,*/*******//***@@@%@@@&*,&@&&%(,,**/*                 
          ,,,(%%&@@@&/***/*********//*****@%@&@%%&&@&&%##,,**/                 
          ,***%%@@@@%**/*****,*,,,,******,&@@@&&@&@@@%%.,*//                 
          ,**, &&&@@%,**/*,,,,,,,,*(/***,,*,,,,@&&&@@@@&,.,*//                 
          ,*** &(### *,,(/*,,,,,,,*//*****,,,,,,/@&&@@%  #,*//*                
          .*///*,,*,*,.,*(/***,,,,(//***,,,,..,**##%%&. //**/,               
           *//**,,,/,..,*(//***,.,/((/***,.,,,***@.&&, ,****////               
          ,//(**,,,**..,*(((//*****((//**,,******///#&/*,*****///              
          *//(*/*,,,*/,*/((((((/***/////**,,****////(@#*******////,            
          *//(//**,,,*////(/((///******,,*,,,*****//((%/****/**///(            
          ,/((//**,,,**/ .(((((/**/****,,,,,,,****//((#(/****////((.           
           /(((//***,**/  ((((((////****,,,,,,***///((#(/****////(,            
            /(////***/(  .((((((///(///**********///(((((//////*//             
             ////****/   (((((((((((/(/*****/****///((((((((((///,             
              ,///.      ((%@#/(////(//**********///%@  ./(((*,                
                         .((&@@(,   .,/##(#((#%&@@@@&&.                        

						 
"Extreme Super Underdog Pro Boxing Simulator" a.k.a. "Extreme S.U.P. Boxing Simulator" by 5ace
--------------------

"PUR-80", Commodore64, Microsoft BASIC V2



Story:
------

You arrived at the peak of your career.
As an underdog in the last round of the title fight nobody sees a real chance for you.
You hear the audience mocking and laughing.
Believe in yourself and defeat the reigning super world heavyweight champion.
Restore your honor and show the world what you are made of!
There are only a few seconds left...




Instructions:
-------------

The fight starts immediately, so be prepared.


Use cursor left and cursor right to move left or right.

Use key "a" to throw a left jab.
Use key "s" to throw a right jab.
Use key "d" to block attacks.

Every time you hit your opponent, you get a point.
Every time your opponent hits you, he gets a point.
The points are an equivalent to the "Landed"-statistics shown in a real boxing match.

You can hit your opponent only if you are directly in front of him.
Every punch he throws hits you and counts as landed, if you don't block the punch.

The game starts in the middle of the final round, so there are only 90 seconds left to turn the outcome.

You win the game if you have more hits than your opponent after the timer reaches zero.
Press a key to restart the game when its over.




How to start this game in the emulator:
---------------------------------------
1.) Download "vice" emulator from http://vice-emu.sourceforge.net/
2.) Execute "vice" and Drag and Drop "last-outpost.prg" into the "vice" window.
This will autostart the game.

Alternatively select "File"->"Autostart Disk/Tape Image" from the menu.
Select the file "Extreme Super Underdog Pro Boxing Simulator.prg" and click on attach.




Trivia/additional notes:
-------
- The scoreboard is updated using {home} instead of {clear} which is faster but leads to some artifacts.
- The player/opponent sprite x-positions are limited to the left portion of the screen, because the ninth bit is not taken into account.
- There is a modification of this game in the "bonus" directory included, which moves the player directly.



Code:
-------------

0 v=53248:x$="{255}{128}{ct c}{255}{192}{15}{255}{240}{31}{255}{248}{63}{255}{252}{63}{255}{252}{127}{255}{254}{127}{255}{254}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{255}{127}{255}{254}{127}{255}{254}{63}{255}{252}{63}{255}{252}{31}{255}{248}{15}{255}{240}{ct g}{255}{192}{ct c}{255}"
1 fori=1to61:poke832+i,ASC(MID$(x$,i,1)):nexti:fori=0to7:poke2040+i,13:pokev+39+i,10:nexti:y=99:h=16
2 pokev+21,255:pokev+39,6:pokev+40,6:pokev+41,2:pokev+42,2:pokev+33,0:t=360:j=127:g=24:print"{clear}"
3 p=58:q=139:x=p:pokev+15,y:pokev+13,y+h:pokev+11,y+32:pokev+9,y+32:pokev+7,y+h:pokev+5,y+h
4 print"{home}{white}"int(t/4)"{blue} "u"{red} "r" ":a=INT(RND(1)*4):x=x-h*(a$="{left}")+h*(a$="{right}"):t=t-1
5 d=(a$="a"):e=(a$="s"):f=(a$="d"):z=67+d+e*2-(a=2)*4-(a=3)*8:pokev+23,z:pokev+29,z
6 x=(x+INT(RND(1)*16)-8)andj:pokev+14,x+28:pokev+12,x+h:pokev+10,x+58:pokev+8,x:pokev+4,x+8:l=f*20
7 pokev+6,x+50-(a=4)*-g:pokev+0,p+d*-40:pokev+1,q+d*g+l:pokev+2,p+64+e*h:pokev+3,q+e*g+l:geta$
8 b=(a>1)*-(f+1):c=((dORe)AND(p+g>x)AND(p<x))*-1:pokev+32,b*2+c*6:r=r+b:u=u+c:ift>0thengoto4
9 dimz$(1):z$(0)="win":z$(1)="lost":print"you "z$((u>r)+1)" {white}key!":POKE198,0:WAIT198,1:goto0
 
 
 
 
Code-Description:
-------------
line 0-1: Draw sprite to block 13 and set sprite pointers accordingly.

line 2: Enable sprites, set sprite colors and clear screen.

line 3: Set y positions of sprites which are not changed during the game.

line 4: Print timer and scores. Generate random next opponent move. Check cursor keys to move player (here enemy) left or right.

line 5: Cache checks for keys. Set sprite expansion registers accordingly to moves.

line 6-7: Move opponent randomly to left and right and draw opponent. The getkey-function is moved here for memory reasons.

line 8: Check for hits and count points. Jump to line 4 (=gameloop) if time is left.

line 9: This line displays the ending, waits for space and jumps to line 0.
