Interview with Larry
Bank ( conducted
Monday 07/09/01 by Prophet )
return
to Retrogames Pocket PC Emulation section
Mr. Bank, AKA BitBank, is the author of HiVE & Microsoft's
Arcade Pack for Pocket PC, as well as various other applications
for PC and Pocket PC. He currently resides in Southern Florida
with his family and is very actively involved in Pocket PC
software development.
Relevent links: BitBank
homepage, Microsoft
Arcade Pack homepage, Developer's
Corner with Larry Bank at Brighthand, Serial gamepad driver Brighthand thread, Gravis Stinger (small serial gamepad) homepage
* * * * *
Prophet: Thank you for agreeing to an interview for Retrogames.
Larry Bank: You're welcome. I like interviews because
it let's people know me a bit better and understand my motives.
Cool. First off, tell me where you're from.
I grew up in Spring Valley NY (Rockland County) just
over the bridge from NYC.
Did you spend time in NYC arcades much?
In my town we had a Nathan's which always had a good
selection of machines. I spent most of my money on those games.
I know you're 35, I'll be 35 next month. :)
I started in the arcades at age 13 and I used to ride
my bike to the arcades.
I can still recall my 1st defining arcade experience - it
happened to be in a Nathan's - what was your 1st *definitive*
arcade experience? What game?
Space Invaders. I used to play pinball, but found it
boring after a while. Then Space Invaders became my new obsession.
Hehe - how did I KNOW you'd say that - yeah, Space Invaders
was THE game when it came out.
In 1979 that was the only video game and it was just
a mind blower - totally new idea.
Were arcade games what got you into computers?
Sort of... I got interested in computers at about age
12 and got my first one at 13. I wanted to see how they work
and program them. I liked games, but I was more interested
in learning how the internals worked.
What computer was that? And how did you teach yourself -
magazines, books?
TRS-80 color computer (6809 with 4K RAM). I immediately
started programming in assembly language when I saw how slow
BASIC was. I basically taught myself how to program in Basic
and Assembly language without any books. All I had was the
manual that came with the computer and a 6809 reference card
from Motorola. My first ASM program made the screen shift
over by 1 byte. I was totally hooked on the speed and control
of ASM programming.
That's impressive, learning ASM with JUST the included docs!
I had an Atari 800, did the CoCo have particularly good included
documentation? I had to read Compute and Byte to learn a little
programming (very little)...
It had no documentation on assembly language programming.
I got hold of a 6809 reference card (not a book, just a small
card) from a friend.
Wow... so that was it? Guess you just had the knack for
it.
I just started experimenting until I found out how it
worked. I spend literally thousands of hours. Count how many
hours is 22 years times an average of 8+ hours a day every
day. I got my first programming job at 14.
(That's about 64,000 hours!)
I can believe it - ASM is scary to me =P How about games
on the CoCo - any favorites?
I used to love Megabug & Clowns and Balloons. Steve Bjork
was my hero. I was always into performance and squeezing the
most out of a small amount of code.
First programming job at 14 - tell me about that - what
sort of programming?
I worked for Sunburst Communications in Pleasantville
NY doing educational software for children. I think they are
still in business somewhere. I wrote some really bad stuff
my first year. I had to learn the hard way about good coding
practices. I think I am better off for it because at the time
no one could teach programming anyway. I think programmers
are born, not made. Either your brain can wrap itself around
computer abstraction or it can't.
I agree - it's ultimately a talent like any other.
I saw this clearly at college in the intro programming
class I was forced to take - there were 2 humps on the curve.
A and F. No one was in between.
An intro course? That HAD to be boring for you?
I didn't go - I just showed up for the exams.
Heh. :)
It was Pascal on Apple MAC. The first year of the MAC
(1984). I was using Turbo Pascal on my Sanyo PC clone.
And you followed through with a degree in Computer Science?
No - I was going to do a double-major in EE and CS, but
I immediately saw that the CS department didn't teach you,
they just worked you. I quit wasting my time with them (Cornell
University).
Before you came onto the emulation scene, did you work on
any commercial game projects?
No. I still don't consider myself a game programmer.
Emulation is a special class of programs. It makes use of
my knowledge of microprocessors and computer innards, but
not game logic.
Interesting, but would you classify yourself as a "gamer,"
or are the "innards" more fun for you?
I enjoy playing them, but to me, emulation is about solving
mental puzzles. Figuring out how things work without any documentation.
Yes, I really do appreciate that aspect of the hobby - that
the developers can reverse engineer those machines.
I had to trace through lots of code to get many games
working. I also bought pirate copies of schematics to understand
how some worked.
Tell me how you became involved in the internet emulation
scene? And also, what projects did you have a hand in, aside
from your own?
I was always searching for Galaga or a work-alike and
I accidentally found MAME and MageX. I then saw that they
supported Robotron, but not the way I wanted to play it (in
a window on NT 4). I decided that I could do it better and
set out to write a Robotron emulator. After many hundreds
of hours debugging my 6809 emulator, I finally got it working.
I then did many more of my favorites until I finally worked
my way back to Galaga. It took a while to get a z80 emulator
working accurately enough for Galaga. It uses undocumented
instructions and flags.
And all of this work eventually became integrated into HiVE?
Yes - at first it was "CAGE" Classic arcade game emulator.
Then I started going head to head with the other emulators
for the fastest performer and rewrote it and renamed it to
"Hi Velocity Emulator." I have rewritten/redesigned the guts
of that emulator at least 5 times, each time making things
cleaner and faster. My work is always an iterative process.
There is never a 'best' solution, only a gradually improving
one
What is the slowest CPU HiVE could pull off 60 fps in Galaga
for example? Any idea?
I think I got it working at 60fps on a 486-66 with PCI
video.
Friendly competition is cool. Did you contribute to Retrocade,
and/or MAME and other emulation team projects?
Neil Bradley and I were always competing and sharing
ideas. I passed information and bug fixes to MAME for a few
of their games. I did not participate directly with any other
emulator, but for a short time Neil added me to the Retrocade
team, but I was too busy with my own stuff.
Emulation authors sometimes find themselves amidst unwanted
attention for their work - what was your experience with HiVE?
( R.Belmont of Modeler etc. has a theory that fighting games
cause the most problems. ;)
I did not get a lot of email for my stuff. Mostly people
were very nice to me and requested specific games they wanted
to see.
So let's fast forward a bit now to the Pocket PC platform
- how did you move from doing HiVE on PC to Windows CE machines?
I got into CE machines in 97 when they were slow and
(had) 2-bit displays. I just thought it was neat to be able
to write windows code on a small battery powered device. I
got Space Invaders and similar games emulated on some early
CE devices, but did not pursue it much because the displays
were passive matrix and gaming was difficult on them.
We're talking maybe 40Mhz devices, right?
Correct: Casio A10, Everex A10. I then did an internet
radio interview with Mike Stulir for his "Back in time" show.
I mentioned in one sentence that I was considering porting
my emulator to CE. A Microsoft CE evangelist heard it and
contacted me. He wanted to know if I would make my code run
on the Casio E100 and if I could get PacMan to work. I delayed
buying one because I did not feel like shelling out $500 for
something I didn't need. But I guess curiosity about working
with Microsoft got the best of me and I made HIVE-CE 1.0 and
sent it to him.
Was porting HiVE to CE easy, aside from performance issues?
Mostly - I had been thinking about portability early
on so I had the code all written in C and x86 ASM. The first
stumbling block was getting BitBlt to work well. The speed
was terrible. So my first task was to get direct access to
the video display. With a hint from Jimmy of Jimmy Software,
I got direct video access and the speed was fine. The next
problem was getting around the terrible MIPS compiler. Buggy
and produced incredibly inefficient code.
So overall, the ARM based Pocket PC's seem the best way
to go?
The ARM cpu is much more powerful than MIPS at the same
clock speed. Many things on the iPaq run about 5X faster than
the Casio EM500. Also the ARM compiler has fewer bugs.
WOW - 5x faster?! Is that totally due to the 56Mhz difference
(Casio EM500 is 150Mhz, iPaq is 206Mhz) and the inefficient
compiler output, or are there other issues in the hardware
as well?
5x is for certain operations, not everything. The memory
of the iPaq is faster, it has better caching and the instruction
set is more powerful. Some instructions on the ARM take 3
(instructions) to do the same thing on the MIPS. Most apps
run about twice as fast on the iPaq, but CPU emulation is
very memory intensive and the ARM outperforms others by a
long shot.
Getting back to the Microsoft guy's interest in PacMan for
CE - tell me how that eventually resulted in the superb Arcade
Pack we now have for Pocket PC's?
This particular person was very gung-ho about getting
PacMan running on the Pocket PC for promotional use at the
launch of the product. He had to fight many uphill battles
to get it done and it took many months of prototypes sent
to Redmond before I even had a contract. I kept sending him
versions which expired and he had to keep coming back for
newer code. I was wary of working with Microsoft and I found
out firsthand how they operate. Nothing illegal, but it could
be described as unsportsman-like...
What did it take to finally get contracted, Bill Gates getting
to finally play DigDug on his Pocket PC?
I think it just took this guy finding like-minded geeks
within MS who wanted to see it happen and putting pressure
on upper management. Part of the delay was because Microsoft
was trying to write it themselves (starting with the MAME
code) and Microsoft also started working with a colleague
of mine to compete for the best PacMan emulator.
How did the final product come to be what we have now? How
were the games picked? And did Namco play any role in the
implementation of the games?
The first choice of PacMan was for the Pocket PC launch
as a promotional tool. Namco extended their license for the
"Return of Arcade" series to include the Pocket PC (at what
cost I don't know). They always had the final say if the product
would be allowed to ship. Microsoft was constantly sending
them devices with PacMan loaded on (them) for approval. It
almost didn't ship because the "out of box experience" was
not good. That's Microsoft speak for "dummy proof."
Hehe. :)
I invented the idea of using the stylus to drive PacMan
by touching where you want him to go. This and the addition
of an auto-start feature fixed the "out of box experience."
Thank you for allowing the auto-start to be turned off -
I like inserting my own "coins."
Namco supposedly liked my stylus input idea. Ms.PacMan
and DigDug were mostly pushed through by me. Microsoft was
not really interested in doing more games, but I gave them
a good price and showed them that I could do it. They were
allowed to do Pole Position and Galaxian also, but Pole Position
used the z8000 CPU which I had not emulated and I did not
want to promise a schedule and not be able to keep my promise.
Galaxian did not ship for a reason I cannot explain. I got
it working, but they thought that it was not easy to control
on the iPAQ.
Yes, I tried the stylus for PacMan - it works rather well,
though I still consider it blasphemous to use anything but
a traditional game controller.
:)
The Arcade Pack seems to run at 100% 60fps with perfect
sound on my 150Mhz Casio - what is the low end for CE devices
that can run the Arcade Pack at such speeds?
PacMan will run on the 70Mhz (Compaq) Aeros. Ms.PacMan
requires 131mhz or more. DigDug runs on the HP5xx, Casio E125/EM500
and above. DigDug really runs at 30fps (skips every other
frame). But they all have 44khz sound.
Ack... You've just burst my bubble of illusions!
Sorry. :( But the CPU emulation and sound calculations
still have to go at 60fps. :)
Phew, now I feel a little better. :)
It still kicks MAME's butt. :)
Hehe... we won't go there, but I'll just say that Arcade
Pack is the best performing emulator on Pocket PC that I've
tried.
I like the fact that some of the best features of HIVE
made it into the arcade pack such as the save/load game state
and the skip self-test (just a load-state) .
And the Namco hardware is actually fairly complex too -
I originally assumed they were single 6502 or z80, but they're
much more, correct?
PacMan and Ms.PacMan use a z80, a Sprite + character
graphics controller and a 3-voice wavetable sound generator.
DigDug uses 3-z80s, a 3-layer graphics controller and the
same 3-voice sound controller.
DigDug hardware is equivalent to Galaga hardware - I wish
that game could've been included, that's my only disappointment
really. And yes, the save states rock!
Yes, DigDug uses basically the same hardware as Galaga.
DigDug has a background layer and Galaga has a scrolling stars
layer. I asked for Galaga, but it was not allowed. As I told
Microsoft, I have all of the 1980's Namco titles working on
the Pocket PC (and HPC) just waiting for permission to use
them.
One issue regarding many games is control - the Casios have
fully working game controls, but the super popular iPaq has
that unfortunate "single input at one time" problem. I understand
you're involved in a project with Russ Smith to attach an
external gamepad?
Yes, I am coding a "driver" to allow the Gravis Stinger
serial gamepad to be connected to a Pocket PC. The buttons
will be sent as virtual key presses and should be compatible
with most games.
(NOTE: This driver was completed 07/10/01 and is now available! See this Brighthand thread or download it from from Retrogames now! You'll need a Pocket PC with serial port and a Gravis Stinger gamepad.)
Nice. :) I'm sure many people will appreciate that.
BTW - it will be freeware. :)
Even nicer. ;)
See - I do give back to the community.
Heck, you already gave with HiVE - we haven't forgotten
- I'm personally very glad to see emulation authors get commercial
work. So... can you tell us anything about your future projects
for Pocket PC?
I am working on new game emulations for a Japanese game
company. I am also busy updating my Virtual CE project and
finishing a new image viewer.
(Mr. Bank can't reveal the
name of the Japanese game company at this time.)
Virtual CE, for readers who don't know, allows one to operate
the Pocket PC on a virtual PC window, correct?
Correct, most people buy it to do presentations of Pocket
PC software by connecting a projector to a PC running my software.
It's also good at doing screen captures of games (which otherwise
don't work with normal screen capture programs).
Yes, I can see that being a real asset for sales people
who don't want to lug a 5 pound notebook around. Do you think
the Pocket PC platform has a bight future? Maybe replace notebooks
for many mobile applications?
I think it will not replace notebooks, but it definitely
has a unique place for people who need more than an organizer
and less than a notebook.
It surely could become a fantastic game platform for us
big kids - speaking of which, do you have any favorite Pocket
PC games right now? Aside from emulated games.
I like those bubble games, mahjong, solitaire, and sokoban
type games.
One more question regarding Pocket PC's future - do you
believe Palm will maintain their supremacy in PDA sales, or
will Pocket PC become dominant someday?
I think it is inevitable that Pocket PC will dominate.
Palm keeps denying the future is a Pocket PC, yet keeps making
their devices more like Pocket PCs. People want more functionality,
it's just the size, price and battery life that need to be
addressed. As we've already seen - it's just a matter of time.
I agree - I can't wait to see the next generation of Pocket
PC - hopefully they'll move to a common CPU base like ARM
and we can see development take off big time.
I agree.
For the emu fans out there, can you make any promises that
we'll see more game emulators from you someday? Whether freeware
or commercial?
Yes - I guarantee it. :)
Excellent! I'll be looking forward to that.
:)
Well, I think we've covered all the topics I'd hoped to
get in - thank you so much Larry. Any closing thoughts or
subject you'd care to comment upon?
Nothing comes to mind, but I am always looking for good
ideas for new projects or improvements to existing ones. Please
drop me an email if you have an idea you'd like to see appear
in a product. :)
Once again, thank you for the interview, it was a pleasure
talking with you, and I urge emulation fans to get themselves
a Pocket PC and to purchase the Arcade Pack - you'll be glad
you did!