/*-------------------------------------------------------------------------------------------
PINBALL,
motherfucker!
(Version 2, 'cause Computers BITE)
(c) Jason
David Ditmars 1997
-------------------------------------------------------------------------------------------*/
/* Input/Output definitions:
Sounds
(PORTC) Pussy Control (PORTA, PORTD)
quiet 0xFC clit LED A:0x08
winner! 0xFD vibrator D-to-A bit 1 A:0x10
disco soundtrack 0xFE bit
2 A:0x20
spinner 0xF8 bit
3 A:0x40
start-up 0xF4 cum/lube pump D:0x04
spell C-U-M 0xEC
spell F-U-C-K 0xDC
bumpers 'n' drops 0xBC
loser 0x7C
Outputs
(PORTB) Inputs (PORTE)
score up 0x01 all C-U-M drops 0x01
score reset 0x02 clit button (start) 0x02
C-U-M reset 0x04 tits 'n' drops 0x04
ballhole solenoid 0x08 K spinner 0x08
K light 0x10 F slot 0x10
C light 0x20 U slot 0x20
U light 0x40 C slot 0x40
F light 0x80 lose ball switch 0x80
*/
#include
"mytimer.h"
#include
"mystdlib.h"
void wait(int); void
score(int);
void fuckslots(unsigned char); void
demo(void);
void cream(void); void
blinkfuck(int);
int rand(void); void
srand(unsigned int);
int checkball(void);
near volatile int
soundoff,thescore = 0;
void main(void){
unsigned char inputs;
hc11setup();
while(1==1){
inputs = PORTE;
if (RTICntr > soundoff){ /* back to soundtrack */
if (thescore>50)
PORTC
= 0xFD; /* "Oh boy, you did it!
" */
else PORTC = 0xFE; /* otherwise disco */
}
if (PORTA != 0){
if (PORTA == 0x60)
PORTA
= 0x18; /* run pussy by shifting 2
bits */
PORTA <<= 1; /* across port A */
}
if ((inputs & 0x08) == 0){ /* if K spinner... */
PORTB
|= 0x11; /* score
& K light */
PORTC = 0xF8; /* "Goddamn you're
good" */
RTICntr = 0; soundoff
= 300;
inputs = 0xFF;
}
else PORTB
&= 0xF0; /* score off
*/
if ((inputs & 0x01) == 0){ /* if C-U-M drops... */
wait(200);
PORTC
= 0xEC; /* "You're
gonna make.." */
RTICntr = 0; soundoff
= 750;
score(10); /* rack 'em up!! */
PORTB |= 0x04; /* RESET C-U-M */
wait(100);
PORTB &= 0xF0;
cream(); /* ejaculate! */
inputs = 0xFF;
}
if ((inputs & 0x04) == 0){ /* if TiTs or CUMdrops... */
PORTC = 0xBC; /* "Oooh ah oh" */
RTICntr = 0; soundoff
= 40;
score(1); /* one lousy
point */
inputs = 0xFF;
}
if ((inputs & 0x10) == 0) /* F slot */
fuckslots(0x80);
if ((inputs & 0x20) == 0) /* U slot */
fuckslots(0x40);
if ((inputs & 0x40) == 0) /* C slot */
fuckslots(0x20);
if ((inputs & 0x80) == 0){ /* LOSER */
PORTC = 0x7C; /* you suck */
wait(800);
demo(); /* run the
demo 'til clit button */
PORTA = 0; PORTB =
0x04; /* reset CUM */
wait(50);
PORTB = 0x02; /* reset score */
thescore = 0;
wait(50);
PORTB = 0x08; /* let ball through hole */
wait(50);
PORTD = 0x08; /* switch to low-current
sol coil*/
PORTB = 0; PORTC =
0xF4; /* play BUGLE sound */
cream(); /* give em
some cumlube */
wait(400);
PORTC = 0xFE; /* play disco soundtrack */
while(checkball() ==
1); /* shoot your load! */
PORTD = 0;
}
}
}
void cream(void){ /*
spew cumlube! */
PORTD |= 0x04;
wait(150); /*
not too long or it will */
PORTD &= 0xFB; /*
get all over everything */
}
void fuckslots(unsigned char slot){
int i;
PORTB |= slot;
score(3);
if ((PORTB & 0xF0) == 0xF0){ /* "F-U-C-K
spells FUCK!" */
PORTC = 0xDC; /* "Fuck me harder..." */
RTICntr = 0; soundoff = 900;
score(20); /* wow, jackpot */
for(i=0;i<7;i++) /* Blink
F-U-C-K lights */
blinkfuck(10);
PORTA = 0x18; /* make that clit cherry red */
}
}
void score(int points){ /*
yar dude, score! */
int i;
for(i=0;i<points;i++){
PORTB |= 0x01; /* upsydaisy */
wait(15);
PORTB &= 0xF0;
wait(8);
thescore++;
}
}
void demo(void){ /*
if she's just sitting there.. */
int i=2,c; long j; unsigned char k;
PORTB = 0x80;
srand(thescore);
while ((PORTE & 0x02) != 0){ /* wait for START
button */
if (PORTB == 0x10)
PORTB = 0x80;
else PORTB
>>= 1; /* chase
F-U-C-K lights */
j = RTICntr;
while((RTICntr < (j+30)) &
((PORTE & 0x02) != 0));
if ((i % 500) == 1){ /* play a random
quote every */
k = 0x01; /* few minutes */
PORTC = (0xFC ^ (k
<<= (rand() % 8))); /* fat
algorithm! */
if ((PORTC | 0x03) !=
0){
if
((PORTC & 0x01) != 0)
cream();
/* pour baby pour */
wait(1200);
PORTC
= 0xFC;
}
}
if ((i % 5) == 0){ /*
Blink clit, run vibe */
if ((PORTA &
0x78) == 0x78)
PORTA
= 0;
else{ k = ((PORTA >>= 3) + 1); /* add 1
and shift left */
PORTA
= (k <<= 3);
}
}
if ((i % 2010) == 0){ /*
get her a little wet */
PORTC = 0xFD;
for(c=25;c>-50;c--) /* blink FUCK
faster & */
blinkfuck(c);
/* faster &
faster */
PORTC = 0xBC;
cream(); /*
cum here */
PORTB = 0x80;
}
i++;
}
}
void blinkfuck(int c){
PORTB = 0xF0; PORTA = 0x78;
if (c>0) wait(c*6);
else wait(4);
PORTB = 0; PORTA = 0;
if (c>0) wait(c*5);
else wait(4);
}
int checkball(void){ /*
makes sure you shoot your ball */
while((PORTE & 0x80) == 0); /* wait till switch
goes off */
wait(100); /*
debounce that sucker */
if ((PORTE & 0x80) == 0) /* check switch again */
return(1);
else return(0); /*
yeah I'm too lazy to build a */
} /*
555, you nerd */
void wait(int dur){
long i = RTICntr;
while(RTICntr < (dur+i));
}
/*-------------------------------------------------------------------------------------------
*** Yes, there are
lots of magic numbers.
***
*** Props to:
J.K.Reeder, A.T.Duffey, B.Dinkins&Kat H., Jimbo Brenner,
Ronen Mintz, L.Wells, Tadd Fernee, Mas n' Pops, Steve
Waldeck, D.Miller,
Barbara DeGenevieve, Carolyn Ottmers, Shawn Decker,
Ed Bennett,
Jerry Saltz, Chris Bratton, Janis Plastics, Greg
Mowery & CityNEON,
Cupid's Treasures & Marilyn Star, and in the final
hour -- Matt Akers
***
*** Keep bouncin'!
-------------------------------------------------------------------------------------------*/