Posted on

was content type chapter – introduction

Would you like to play a game?

If you exist as a sentient being in the year 2015, then you have strong memories of electronic gaming from your childhood. Most likely, those experiences made a profound and lasting impact, even if only latent and now largely expunged from memory. The most forgotten conscious memories may be as deeply ingrained in the psyche as the most profound of human experiences: traveling to foreign lands, falling in love, breastfeeding as an infant. I’m not kidding.

Now that neuroscientists have discovered that sensory brain regions store emotional memories
This suggests sensory information — a particular sound — is coupled with emotional information — a memory of fear — and stored in the auditory and visual cortices as a bundle – allowing the sounds and sights to acquire an emotional meaning.

“The same part of the brain that’s in charge of processing our senses is also responsible, at least in part, for storing emotional memories.” (

Does the sound of thunder make you inexplicably happy? When you re-experience the colors, animation,

Until 2010 when neuroscientists found a probable link between emotional memories and sensory triggers. (

Not only did you take in otherworldly sounds, vibrant visuals, but you had the

Retro gaming is not only a good brain exercise. It’s crazy fun.

Here’s the book

If you want to bring your retro gaming memories back to life and experience them anew, you’ve found your guide.
This tome contains your step-by-step guide to bring the joys of arcade gaming back to life. and bringing back gaming fun even the flashiest modern games can never hope to create.

Any age may apply / what was the “killer app” of your youth?

The game we’re playing is open to members of any living generation: Baby Boomer, Gen X, Millennial, & even those generations not yet named, or whose name is not to be spoken. No matter what the killer app of your childhood: whether Burger Time, Pinball, Super Mario World 3 on the Nintendo Entertainment System (NES), World of Warcraft, Tomb Raider, Video Pong, you’re covered. Unless your game is Temple Run on the iPad. Those youngsters will have to wait for volume 2. I’m promising big things, so jump right in. (Acquire this book immediately! Steal it, download it, buy it, I don’t care) and partner with a friend, and commit to lighting up your brain.

What you’ll find

A ticket to ride for every budget, from free apps for the non-committal (wuss!) to setting up a full arcade in your house, here is some of what you’ll find.


ADVANCED TOPICS will include for the neurotic and committed, for increased impact through improved authenticity – real tube monitors, 15kHz display rates, authentic retro controls, etc.


Posted on Leave a comment

Pat9k neck board BOM

Check it designation part catalog# price(ea) quantity price
total: $18.28
C1, C2, C3 220pF 505-FKP2220/100/10 .30 3 .90
C4 0.1µF 667-ECQ-E4104KF .37 1 .37
C5 0.1µF 594-A104M15X7RF5TAA .08 1 .08
C6 0.0068µF 594-S682M43Z5UN63L0R .12 1 .12
Q1, Q4, Q7 2N3906 512-2N3906TA .20 3 .60
Q2, Q5, Q8 MJE15030 863-MJE15030G 1.60 3 4.80
Q3, Q6, Q9, Q10 2N3904 512-2N3904BU .19 4 .76
Metal Film
R1, R5, R15 2K2 594-5073NW2K200JA100 .06 3 .18
R2, R12, R22 3K3 594-5073NW3K300J .16 3 .48
R3, R13, R23 1K 594-5073NW1K000JA100 .06 3 .18
R4, R14, R24 82R 594-5073NW82R00J .16 3 .48
R6, R16, R25 10K 594-5083NW10K00J .10 3 .30
R7, R17, R26 220R 594-5073NW220R0JA100 .06 3 .18
R9, R19, R28 3K9 594-5073NW3K900J .16 3 .48
R10, R20, R29 2K7 594-5073NW2K700JA100 .06 3 .18
R32 10M 594-VR37000001005FA1 .15 1 .15
R8, R18, R27 500R 72-T70YE-500 .81 3 2.43
R11, R21, R30 10K Trimpot, 0.5W 72-T70YE-10K .81 3 2.43
R31 5M 652-3386P-1-505LF 1.53 1 1.53
L1, L2, L3 330uH 652-RLB9012-330KL .55 3 1.65

Posted on Leave a comment

Main board components, PAT9k repro

Check it designation part catalog# price(ea) quantity price
total: 65.49
C1, C2, C7, C10 100µF 647-UPW1V101MPD1TD .18 4 .72
C5, C8 4700µF 647-UVY1H472MRD 2.33 2 4.66
C29 4.7µF 647-UPS1H4R7MDD1TD .12 1 .12
C36 47µF 647-UVZ1H470MED .18 1 .18
C39 10µF 647-UPW2E100MPD .48 1 .48
C3, C4, C6, C9, C14, C15, C17, C18, C20, C28, C34 0.1µF 594-A104K15X7RF5UAA .08 11 .88
C12, C16 .001µF 594-A102K15X7RF5TAA .12 2 .24
C22, C23, C24, C25 0.47µF 81-RDER71H474K1M1C03 .42 4 1.68
C31, C32 0.01µF 581-SA105E103M .10 2 .20
C33, C37, C38 0.001µF 594-H102K25X7RN63J5R .07 3 .21
C11 0.056µF 667-ECQ-E6563KF .54 1 .54
C19, C21, C26, C27 .47µF 505-MKS4.47/100/10P .36 4 1.44
C30 .0047µF 505-FKS24700/100/10 .22 1 .22
C35 0.033µF 594-F339X133333MFP2B .28 1 .28
CR1, CR2, CR3, CR4 plastic rectifier 625-P600D-E3/73 .56 4 2.24
CR5, CR6, CR7, CR13, CR14, CR16, CR17, CR18, CR19, CR20, CR21, CR22, CR23, CR24 1N914 78-1N914-TAP .06 14 .84
CR8 1N751A 610-1N751A .29 1 .29
CR9, CR10, CR11, CR12, CR40, CR41, CR42, CR43, (CR48 optional) 1N4007 583-1N4007-B .03 9 .27
CR15, CR25, CR31, CR32, CR33, CR34 LED 696-SLX-LX5093ID .06 6 .36
CR26, CR44, CR45 1N754A 610-1N754A .34 3 1.02
CR27 avalanche diode 78-BY448 .46 1 .46
CR28 1N5245B 78-1N5245B .10 1 .10
CR46, CR47 1N756A 610-1N756A .29 2 .58
U1 +24 regulator 511-L7824CV .67 1 .67
U2 -24 regulator 513-NJM7924FA .66 1 .66
U3 NE555 timer 595-NE555P .49 1 .49
Q1, Q3, Q6, Q7, Q8, Q10, Q11, Q12, Q17, Q18, Q25, Q27 2N3904 512-2N3904BU .19 12 2.28
Q2, Q4, Q5, Q9 2N3906 512-2N3906TA .20 4 .80
Q15, Q21, Q14, Q20 2N5884G 863-2N5884G 4.29 4 17.16
Q24 BU406D 512-BU406TU .74 1 .74
Q16, Q22, Q26 MJE15030 863-MJE15030G 1.60 3 4.80
Q13, Q19 MJE15031 863-MJE15032G 1.60 2 3.20
Q23 SCR 863-MCR100-6RLRMG .47 1 .47
Metal Film
R1 82K 71-CCF60-82.5K-E3 .10 1 .10
R2, R4 10K 594-5073NW10K00JA100 .06 2 .12
R3 100K 594-5073NW100K0JA100 .06 1 .06
R5, R42, R43, R46 680R 594-5073NW680R0JA100 .06 4 .24
R6, R12 1K5, Resistor, 0.5W 594-5073NW1K500JA100 .06 2 .12
R70, R73 1K5, 2W 594-5083NW1K500J .10 2 .20
R7, R49, R61 1K 594-5073NW1K000JA100 .06 3 .18
R8, R9, R11, R52 22K 594-5073NW22R00JA100 .06 4 .24
R10 1K8 594-5073NW1K800J .16 1 .16
R13 22R 756-ULW5-22R0JT075 .37 1 .37
R14, R16, R27, R29 390R 594-5073NW390R0J .16 4 .64
R15, R28 10R 594-5073NW10R00JA100 .06 2 .12
R18, R30 1R5 N/I not available .00 2 .00
R19, R31 2K7 594-5073NW2K700JA100 .06 2 .12
R20, R33 100R 594-5073NW100R0JA100 .06 2 .12
R21, R34 91R 594-5073NW91R00J .16 2 .32
R22, R32, R57 4K7 594-5073NW4K700J .16 3 .48
R23 2K2 71-CCF60-2.21K-E3 .10 1 .10
R24 15K 71-CCF60-15K-E3 .10 1 .10
R25, R60 33K 594-5073NW33K00JA100 .06 2 .12
R26, R53, R55, R58 2K2 594-5073NW2K200JA100 .06 4 .24
R35, R37, R45, R48 22R 594-5083NW22R00J .10 4 .40
R36, R47 15R 71-CCF60-15-E3 .10 2 .20
R38 820R 594-5083NW820R0JA100 .11 1 .11
R39, R50, R71, R72 1K2 594-5073NW1K200JA100 .06 4 .24
R40, R41 750K 594-5073NW750K0J .16 2 .32
R44 1K6 594-5073NW1K600J .16 1 .16
R51 3K9 594-5073NW3K900J .16 1 .16
R56 470R 594-5073NW470R0JA100 .06 1 .06
R59 39R 594-5073NW39R00JA100 .06 1 .06
R60-alt 68K 594-5073NW68K00JA100 .06 1 .06
R63 560R 594-5083NW560R0J .10 1 .10
R64, R65 50R 71-RW67V500 1.25 2 2.50
R74 3M3 594-VR37000003304JA1 .13 1 .13
R54 2K 652-3362F-1-202LF .98 1 .98
R62 20K 652-3362F-1-203LF .98 1 .98
R62-alt 50K 652-3362F-1-503LF .98 1 .98
R75, R76 10K 652-3362F-1-103LF .98 2 1.96
FC1-4 Fuse Clips 534-3512 .19 8 1.52
Fuse 3, Fuse 4 3A FB 504-BK/AGC-3-R .45 2 .90
Fuse 1, Fuse 2 5A SB 693-8020.5018 .73 2 1.46

Posted on Leave a comment

The hunt for 19″ CRT’s without burn-in – Goodwill – all TVs 99¢ while supplies last – Oct. 4 – 10

I’d planned to skip the obvious Goodwill route, expecting to pay $8.99 for something that might have an incompatible tube inside. I figured garage sales and curbside throwaways would be a better bet. But on a whim – I had just dropped the kids off for a sleepover at Grandma’s farm – I stopped by Goodwill.

The place was so packed it was hard to maneuver through the aisles. That familiar Goodwill smell smacked me in the brain in my first few steps. I pondered how sometimes I find that smell repugnant, and other times vaguely comforting.  I wasn’t sure how I felt about it that day, but I suspected I would make a beeline around the electronics wall then straight the frick out of there.

A 4 foot wall of shelves, that once held TVs, was picked over and now mostly empty. I quickly discovered why: 99¢ for all TVs, any size. All that remained were off brands, “Symphonics” and the like, tiny 9″ sets, ones with blurry screens, and one late 80’s RCA with woodgrain plastic, now mine.

Late on a Saturday afternoon, you’d feel you missed the pick of the litter. But for an arcade collector, it was still there waiting for me.
The 50% storewide discount that drew in the throngs applied to this already-discounted set.

I pulled out the $2 I had in my wallet to cover tax and then got a little bonus thrill to see the register light up the total amount including tax: 54¢.

Posted on Leave a comment

Recapped a Sega linear PSU

Most people would put a modern switch mode PSU and trash this old dusty linear PSU. But most people are dongs. I, on the other hand, installed 4 new caps to prepare for another 20 years of gaming power! If this was original to the cabinet, this is from a 1983 Astron Belt.


Replaced “Sun” brand caps with contemporary caps – higher capacity and voltage rating, yet smaller.


Made in where now?
Posted on Leave a comment

Joust-themed arcade machine

Dear world,

I’ve been working on an arcade cabinet that I hope to make attractive enough for indoor use. Currently, I’m perfecting a home brew stenciling method with paper and x-acto blade. Currently, it looks like crap because spray color pass #2 didn’t meet my quality standards so I’m stripping and starting attempt #2.

Updated build info is hosted at the arcade controls forum: /topic,140477.msg1454480.html

Posted on Leave a comment

WordPress plugins

Everyone has their own style when it comes to essential wordpress plug-ins. And although it’s subjective and entirely dependent on your site purpose and blogging style, everyone seems to consider their list definitive.

Well mine’s not definitive, but it’s pretty fucking good. With dozens of WP installs under my jockstrap, I’ve learned to separate the yolks from the whites.

For improved admin usability without bloat:

WP Best Tree By Rafael Marques
Category hierarchy on the back end. So obvious it should be built into WP.

Show Current Template by JOTAKI Taisuke
For theme modifications, this comes in handy.

WP All Import Pro By Soflyy
If your content comes from anywhere but your fingers.


Using custom post types?
Post Types Column Editor by Pippin Williamson
Custom Post Type UI by
Advanced Custom Fields by Elliot Condon

External Permalinks Redux
By Erick Hitter & Oomph, Inc.

Posted on Leave a comment

key basic concepts

Are you read to program? Can you answer these questions?
Who’s mom makes the best mustard pie?


Memory locations are expressed in hexadecimal notation. While data and variables are often expressed in decimal notation.

$ indicates hex value


Each memory location is one byte and can hold only one thing. Each is individually numbered in hexadecimal. They can hold either data, or program instructions.

You’ve got 32k to work with, that’s 32768 “lockers” sequentially numbered from

Cartridge ROM:
$0000 to $7FFF

Available RAM:
$C880 to $CBFF or $C800 to $C8FF if you’d like to direct address all your RAM using double plays.

6809 built-in instructions

Locker # instruction ;for example
$1000 deca ;deca is a mnemonic for a numbered instruction.

?: is the locker # essentially a line number?
Most locker ##’s are left out for the assembler to deal with. It can count, and account for instructions that take up more than one byte. We just tell it where to start.

ORG $0000 ;tells assembler to begin putting program code in mem location $0000


user_RAM        EQU     $C880 ;"EQU

EQU simply means equals. In this example, user_RAM is now a defined constant.


Registers are Vecto’s pockets. When data are in lockers, you can’t manipulate them, but once inside your pockets, you can play pool.

A,B,D,X,Y,U,S,PC,DP and CC

A = 1 byte, general-purpose register
B = 1 byte, general-purpose register
D = 2 byte combo of A & B
X & Y, both 2 byte registers used as pointers for for indexed-mode instructions
U & S, stack pointers
PC = program counter
DP = double play for direct addressing
CC = condition code (0, negative, carry, or borrow.)

Some Instructions

LD = load
LDA means load a value into register A
Putting the number “3” in register A would be done thusly: LDA #3

ST = store
STA $C880 means store contents of register A into mem loc $C880

DECA decreases the value of Reg A by 1
INCA increases Reg A by 1
These only work directly on registers A and B, in so-called “inherent” addressing mode.”

Addressing modes for instruction data handling

(alternate targets for the instruction)

  • Inherent (self-contained and takes no further arguments)
  • Immediate (target of the instruction is an actual value that will follow the instruction immediately)
  • Extended (means target is a memory location)
  • Direct (uses a 1 byte shortcut)
  • Indexed

Addressing mode examples:

LDA #$00 = immediate (loads value 0 into register A)

LDA $C880 = extended (loads contents of locker $C880 into register A)

DECA = inherent (decreases the A register by 1)

LDA #$C8
LDA $80

the above code demonstrates the use of direct mode. By transferring the memory location prefix $C8 into double play mode (DP,) LDA$80 saves two strokes and is equivalent to LDA $C880.

Program counter flow-altering instructions

  • BCC
  • BCS
  • BEQ
  • BGE
  • BGT
  • BHI
  • BHS
  • BLE
  • BLO
  • BLS
  • BLT
  • BMI
  • BNE
  • BPL
  • BRA
  • BRN
  • BSR
  • BVC
  • BVS
  • JMP
  • JSR

JMP is jump. BRA is branch. Both are unconditional jumps. BRA is preferred when possible because it saves 1byte (jump takes 3, branch takes 2) but BRA only works for locations 127 bytes ahead or behind.

My gut is telling me to always use JMP because as the program expands locations close to the 127 limit may later get pushed beyond that 127. I would save changing JMP to BRA for final code optimization if the finished .bin maxes out 32k.

JSR = “jump to subroutine.”
BSR = “branch to subroutine.” (has same 127 byte ‘ahead or behind’ limit as BRA)
RTS = “return from subroutine.”

All the remaining program counter manoeuvre’s are conditional.

Condition codes

Condition code bits are:  Half Carry (H), Negative (N), Zero (Z), Overflow (V) and
Carry (C).

BEQ = Branch on equal
BNE = Branch if NOT EQUAL

Relative vs. Absolute
BRA, BEQ, and anything that starts with “B” or “LB” for long branch is RELATIVELY positioned while JMP and JSR are ABSOLUTEly positioned.

The number of bytes to jump is determined at the time of assembly.

Weirdness alert!

You cannot branch (BRA) and jump (JMP) to the same labeled address within the same program. Chose one or the other but don’t mix. The assembler can’t deal. Chris T saved you from a mindless troubleshooting nightmare with that tip.


Here are Chris’s instructions for performing a loop 5 times.

loop_variable EQU $C880 ;Create a variable for looping
LDA #$05 ;Initialise our loop
STA loop_variable ;variable with a value of 5
loop_start: ;This is the label at the start of the loop
LDA $C880 ;These are the instructions we want to repeat 5 times
STA $C881 ;These are the instructions we want to repeat 5 times
DEC loop_variable ;Subtract the loop_variable by 1
BNE loop_start ;If the loop variable is not Zero, jump to loop_start

I’m guessing line 2 doesn’t need the dollar sign and it should really be LDA #05 (?)