📄 aehowto.txt
字号:
d8888 888
d88888 888
d88P888 888
d88P 888 888d888 .d8888b 8888b. .d88888 .d88b.
d88P 888 888P" d88P" "88b d88" 888 d8P Y8b
d88P 888 888 888 .d888888 888 888 88888888
d8888888888 888 Y88b. 888 888 Y88b 888 Y8b.
d88P 888 888 "Y8888P "Y888888 "Y88888 "Y8888
8888888888 888 888 d8b
888 888 888 Y8P
888 888 888
8888888 88888b.d88b. 888 888 888 8888b. 888888 888 .d88b. 88888b.
888 888 "888 "88b 888 888 888 "88b 888 888 d88""88b 888 "88b
888 888 888 888 888 888 888 .d888888 888 888 888 888 888 888
888 888 888 888 Y88b 888 888 888 888 Y88b. 888 Y88..88P 888 888
8888888888 888 888 888 "Y88888 888 "Y888888 "Y888 888 "Y88P" 888 888
888 888 88888888888
888 888 888
888 888 888
8888888888 .d88b. 888 888 888 888 .d88b.
888 888 d88""88b 888 888 888 888 d88""88b
888 888 888 888 888 888 888 888888 888 888 888
888 888 Y88..88P Y88b 888 d88P 888 Y88..88P
888 888 "Y88P" "Y8888888P" 888 "Y88P"
Version 0.30
Compiled by Michael Adcock
email: adcock@menudo.uh.edu
February 8, 1997
THIS DOCUMENT, "The Arcade Emultion HowTo", AND THE INFORMATION CONTAINED
HEREIN IS COPYRIGHT MICHAEL ADCOCK AND THE RESPECTIVE AUTHORS (AS NOTED
IN THIS DOCUMENT).
YOU MAY DISTRIBUTE THIS DOCUMENT FREELY, AS LONG AS THERE IS NO MONEY
CHARGED FOR THE MEDIA THAT IT IS PLACED ON, AND THE ENTIRE DOCUMENT IS
*NOT* ALTERED IN ANY WAY.
IF ANYONE IS INTERESTED IN PUBLISHING THIS DOCUMENT FOR SALE, YOU *MUST*
GET PERMISSION FROM MICHAEL ADCOCK AND THE RESPECTIVE AUTHORS (AS NOTED
IN THIS DOCUMENT).
--------------------------------------------------------------------
Yb dP 8 w w dP"Yb
Yb db dP 8d8b. .d88 w8ww ." d88b 8d8b. .d88b Yb db dP " d8
YbdPYbdP 8P Y8 8 8 8 `Yb. 8P Y8 8.dP' YbdPYbdP dP
YP YP 8 8 `Y88 Y8P Y88P 8 8 `Y88P YP YP w
--------------------------------------------------------------------
- Removed 'Help Wanted' section
- Merged 'Memory Maps' and 'Game Bits' into new section -- 'Game Data'
- Removed 'List of Emulator Authors' and re-orderd the rest of section 'R'
- Lots of changes and additions to various sections, check the *'d
sections below...
- Sections you don't want to miss:
- D.21.3 -- Sound information for Space Invaders...
- S.1.6 -- How to get some sound running in Phoenix!
- S.3 -- How to make a memory map! (general)
- S.4 -- How to make a memory map! (Moon Cresta example)
Remember the PacMan Fever song? Whether you do or not, you *MUST* check
out the following: http://www.geocities.com/Vienna/4585/pacman.ra
--------------------------------------
888b.
8 .8 8 8 8d8b 88b. .d8b. d88b .d88b
8wwP' 8b d8 8P 8 8 8' .8 `Yb. 8.dP'
8 `Y8P8 8 88P' `Y8P' Y88P `Y88P
8
--------------------------------------
This document is designed to aid anyone considering whether to write an
emulator for an arcade game machine. It will attempt to answer frequently
asked questions, give some step by step tutorials, and provide the
resources necessary for a capable programmer to begin work on an emulator
for an arcade game.
Please note that although some of the information provided is generic
enough to apply to emulation of any system, the primary focus of this
document, and the resources provided, is arcade game emulation.
This document contains no information about the commercial emulation
packages that are available.
If you have any information that should be added to this document,
or you find errors, then please email adcock@menudo.uh.edu !
--------------------------------------------
.d88b w w
8P .d8b. 8d8b. w8ww .d88b 8d8b. w8ww d88b
8b 8' .8 8P Y8 8 8.dP' 8P Y8 8 `Yb.
`Y88P `Y8P' 8 8 Y8P `Y88P 8 8 Y8P Y88P
--------------------------------------------
* What's New?
-----------
* Purpose
-------
* Contents
--------
* Thanks To...
------------
* Q and A
-------
Q.0 Trying to write an arcade emulator is crazy, isn't it?
Q.1 Which game would you recommend starting on?
Q.1.1 Which games are 'easiest' to emulate?
Q.1.2 Which games have the most available documentation?
* Q.2 How do I START?
Q.3 What language should I use?
Q.3.1 Do I *have* to use Assembly?
Q.3.1.1 Are you SURE about this Assembly business? :)
Q.3.1.2 Doesn't the choice of language depend on the target game/system?
Q.3.1.3 What about portability?
Q.3.2 But haven't some arcade emulators been written in C/C++?
Q.3.3 What about Java?
Q.4 Could you explain CPU emulation?
Q.4.1 CPU emulation sounds VERY complicated, how should I START?
Q.4.1.1 Is the 68k series of processors 'easy' to emulate on PCs?
Q.4.1.2 Why were only a handful of processors used in arcade games?
* Q.4.1.3 Should I try to learn the assembly of the target platform?
* Q.4.1.4 How did games with multiple CPUs work?
Q.4.2 Should I use CPU emulation code that is freely available?
* Q.4.2.1 Where can I find freely available source code?
* Q.4.2.2 How do I install DJGPP and Allegro taking only *limited* space?
Q.4.3 How do the CPU and ROMs interact?
Q.4.4 How should I handle CPU opcodes?
Q.4.5 What is Pokey?
Q.4.6 What is Slapstic?
Q.4.7 What about translation?
Q.4.8 Is there anything else I should know about CPU emulation?
* Q.5 How useful are the switch settings, pinouts, and schematics?
* Q.6 How do I produce a memory map?
Q.7 How can I find what processor(s) the game uses?
Q.7.1 Where can I find information for a specific processor?
Q.8 Where might I find the ROMs?
Q.8.1 How do I disassemble the ROMs?
Q.8.2 How do I decode data from the ROMs?
Q.9 Should the sound be emulated or should samples be used?
Q.9.1 What about legal issues? Are samples copyrighted?
Q.9.2 What is the difference between a speech synthesizer and a
sample playback device?
Q.9.3 What was used in Williams Arcade Classics? (It sounds good!)
Q.9.4 Why is sound so *hard* to emulate?
Q.10 Where can I find other documentation for the game?
Q.10.1 What about schematics for the game?
Q.11 How might I contact someone who owns the machine hardware?
Q.11.1 Todd Krueger's offer to help
Q.12 Where can I find general descriptions of arcade games?
Q.13 Did other emulator authors keep any notes while they were working?
Q.14 Where can I find more information on the internet and WWW?
Q.15 Should I release my source code when I'm finished?
* Game Data
---------
* D.0 What is this section about anyway?
* D.1 Astro Blaster
D.2 Commando
* D.3 Crazy Climber
* D.3.1 Video
* D.3.1.1 Palette
* D.3.2 Sound
* D.3.3 Other Details
* D.3.4 Memory Map
* D.3.5 Decrypting the ROMs
* D.3.6 Miscellaneous Information
* D.3.7 Different Versions, and Extra Credit(s)
D.4 Crush Roller
D.5 Dig Dug
D.6 Gyruss
D.7 I, Robot
D.8 Juno First
* D.9 Kung Fu Master
* D.9.1 Background Graphics
* D.9.2 Sprites
* D.10 MCRII / MCRIII
* D.11 Moon Cresta
D.12 Ms. PacMan / PacMan
D.12.1 ROM Files
D.12.2 Memory Layout
D.12.3 Memory Mapped Ports
D.12.4 OUT ports
D.12.5 Character Sets
D.12.5.1 Pascal Source (ZIPed an UUencoded)
D.12.6 Ms. PacMan ROMs are identical to PacMan?
* D.13 Naughty Boy
* D.14 New Zealand Story
D.15 Penia
D.16 Phoenix
D.16.1 Components
D.16.2 Functionality
D.16.3 Colors
D.16.4 Memory Map
* D.17 R-Type
D.18 Sega System 16 Games
D.18.1 Hardware Information
D.18.2 Memory Map
D.18.3 Scroll Video RAM
D.18.4 Fixed Video RAM
D.18.5 Color Video RAM
D.18.6 Main RAM
D.18.7 Video Registers
D.18.8 I/O Registers
D.18.9 ROM Files
D.18.10 Graphics Formats
D.18.11 Sega GFX Viewer V1.0 Source Code (ZIPed an UUencoded)
D.19 Sega Vector (Converta) Games
D.19.1 Components
D.19.2 Memory Map
D.19.3 I/O Inputs
D.19.4 I/O Outputs
D.19.5 Vector Processor
* D.20 Side Arms
D.21 Space Invaders
D.21.1 Board Spec
* D.21.2 Memory Map
* D.21.3 Sound Information
D.22 Star Wars
D.23 Tapper
D.24 Toki
* D.25 Turbo
D.26 Tutankham
Graphics Hacking
----------------
G.1 Who wrote this section?
G.2 Introduction
G.3 Location of Graphics in Specific Game ROMs
G.4 General Information
G.4.1 Pixel Layout
G.5 Notes and Requests
G.6 Mode Q (256x256x256) Source Code (ZIPed an UUencoded)
Pokey
-----
P.1 Who wrote this description?
P.2 You mean Pokey isn't just that guy that hangs around with Gumby?
P.3 Where did they come up with a name like Pokey?
P.4 General Description
P.5 Technical Description
P.5.1 Pin-outs
P.5.2 Address Lines
P.6 Where can I find source code and more info. for Pokey emulation?
P.7 Finding and using *real* Pokeys
AY-3-8910
---------
A.1 Who wrote this description?
A.2 Introduction and Disclaimer From Original Document
A.3 Technical Information
* Step-by-Step
------------
S.1 Step-by-step implementation of an emulator for Phoenix
S.1.1 Part I: Pre-coding
S.1.2 Part II: Low/High Endian
S.1.3 Part III: Let's start coding!
S.1.4 Part IV: Run it!
S.1.5 Part V: To be continued...
* S.1.6 Sound emulation...
S.2 Step-by-step discussion of an emulator for Space Invaders
S.2.1 My Background
S.2.2 Getting started
S.2.3 Disassemblers
S.2.4 Space Invaders Specifics
* S.3 Step-by-Step discussion of how to make a memory map
* S.3.1 Memory Maps: The toolbox
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -