📄 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.25
Compiled by Michael Adcock
email: adcock@menudo.uh.edu
January 7, 1997
--------------------------------------------------------------------
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
--------------------------------------------------------------------
- Updated Q.2
- Added M.1, M.1.1, M.1.2, M.1.3, M.1.4 (Crazy Climber)
- Updated M.5, M.5.2 and added M.5.8, M.5.11 (Sega System 16)
- Added B.2, B.3.1, B.6, B.8, B.9, B.12, B.14 (Lot's of bits and things)
- Added S.2, S.2.1, S.2.2, S.2.3, S.2.4 (Space Invaders step-by-step)
- Updated R.1 (Emulator updates!)
- Updated R.5 (Game listing updates!)
--------------------------------------
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 a step by step tutorial, 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,
then please email adcock@menudo.uh.edu or moose@rocknet.net.au !
Table of Contents:
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.2 Should I use CPU emulation code that is freely available?
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 and pinouts?
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?
Memory Maps
-----------
* M.1 Crazy Climber
* M.1.1 Video
* M.1.2 Sound
* M.1.3 Other Details
* M.1.4 Memory Map
M.2 Dig Dug
M.2.1 Memory Map
M.3 Ms. PacMan / PacMan
M.3.1 ROM Files
M.3.2 Memory Layout
M.3.3 Memory Mapped Ports
M.3.4 OUT ports
M.3.5 Character Sets
M.3.5.1 Pascal Source (ZIPed an UUencoded)
M.3.6 Ms. PacMan ROMs are identical to PacMan?
M.4 Phoenix
M.4.1 Components
M.4.2 Functionality
M.4.3 Colors
M.4.4 Memory Map
* M.5 Sega System 16 Games
M.5.1 Hardware Information
* M.5.2 Memory Map
M.5.3 Scroll Video RAM
M.5.4 Fixed Video RAM
M.5.5 Color Video RAM
M.5.6 Main RAM
M.5.7 Video Registers
* M.5.8 I/O Registers
M.5.9 ROM Files
M.5.10 Graphics Formats
* M.5.11 Sega GFX Viewer V1.0 Source Code (ZIPed an UUencoded)
M.6 Sega Vector (Converta) Games
M.6.1 Components
M.6.2 Memory Map
M.6.3 I/O Inputs
M.6.4 I/O Outputs
M.6.5 Vector Processor
M.7 Space Invaders
M.7.1 Board Spec
M.7.2 Memory Map
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
Game Bits
---------
B.1 What is this section about anyway?
* B.2 Commando [provided by edoardo (gambare@iol.it)]
B.3 Crazy Climber [provided by Vince Mayo (14u2c@diamond.nb.net)]
* B.3.1 Decrypting the ROMs by Lionel Theunissen (lionelth@ozemail.com.au)
B.4 Crush Roller [provided by Vince Mayo (14u2c@diamond.nb.net)]
B.5 Gyruss [provided by Mike Cuddy <mcuddy@scitexdv.com>]
* B.6 I, Robot [provided by John Manfreda (jmanfred@fh.us.bosch.com)]
B.7 Juno First [provided by Mike Perry (mj-perry@uiuc.edu)]
* B.8 Penia [provided by Perry McFarlane (ce596@torfree.net)]
* B.9 Space Invaders [provided by John Manfreda (jmanfred@fh.us.bosch.com)]
B.10 Star Wars [provided by Peter McDermott]
B.11 Tapper [provided by Clay Cowgill (clay@supra.com)]
* B.12 Toki [provided by David Winter (winter@worldnet.net)]
B.13 Turbo [provided by Patrick J. O'Reilly (oreillyp@execpc.com)]
* B.14 Tutankham [provided by Moose O' Malley (moose@rocknet.net.au)]
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.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
References
----------
* R.1 List of Emulator Authors
R.2 List of Currently Emulated Games
R.3 List of Games People Want to See Emulated
R.4 Internet Resources
R.4.1 WWW Resources
R.4.1.1 General Arcade Emulation Links
R.4.1.2 ROM Images
R.4.1.3 Processor Information
R.4.1.4 Schematics
R.4.1.5 Miscellaneous Information
R.4.2 FTP Resources
R.4.3 FSP Resources
R.5 List of Arcade Games
-----------------------------------------------------
88888 8 8 88888
8 8d8b. .d88 8d8b. 8.dP d88b 8 .d8b.
8 8P Y8 8 8 8P Y8 88b `Yb. 8 8' .8
8 8 8 `Y88 8 8 8 Yb Y88P 8 `Y8P' o o o
-----------------------------------------------------
- Suzanne Archibald (suzanne@crysalis.com)
- Neil Bradley (neil@synthcom.com)
- Don Carmical (dcarmical@tri-lakes.net)
- Clay Cowgill (clay@supra.com)
- Mike Cuddy (mcuddy@scitexdv.com)
- Jim Dankiewicz (james.dankiewicz@resnet.ucsb.edu)
- Laurent Desnogues (desnogue@aiguemarine.unice.fr)
- Bryan Edewaard
- Chris Hardy (chrish@kcbbs.gen.nz)
- Ed Henciak (ethst3@pitt.edu)
- Joe Husosky (scubajoe@ix.netcom.com)
- Paul Kahler (phkahler@oakland.edu)
- Ralph Kimmlingen (ub2f@rz.uni-karlsruhe.de)
- Thierry Lescot (ShinobiZ@mygale.org)
- Moose O' Malley (moose@rocknet.net.au)
- Alan J McCormick (gonzothegreat@juno.com)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -