Gabriel Honoré 1. What is it? A collection of software emulators –A software emulator is a...
-
Upload
deshaun-wayman -
Category
Documents
-
view
217 -
download
2
Transcript of Gabriel Honoré 1. What is it? A collection of software emulators –A software emulator is a...
Gabriel Honoré
1
What is it?
• A collection of software emulators– A software emulator is a computer
program that imitates an electronicdevice or another program.
• Examples:– DOSBox– MAME
2
What is it?
• 1º - A Commodore 64 emulator
3
What is it?
• 2º - A Nintendo EntertainmentSystem (NES) emulator
4
What is it?
• 3º - A set of abstractions,components, and tools that can be helpful for making other emulators(WIP)
?…
FRAMEWORK
…
5
Short demo
6
Motivations
• I noticed that:– People always choose statically-typed
languages for making them.– Procedural designs are prefered when
compared to object-oriented designs.• Why is that?
– Performance issues.• Is that really a problem nowadays?
7
Goals
• What did I want to accomplish?– Write everything in Smalltalk! .– OO design first, then think about performance.– Recreate the feeling of the original machines– High quality emulation.– Create an easy to use framework
for writing computer & game consoleemulators
8
How are theemulators made?
9
The system entities
• A common C64 system has:
10
The user side entities
• The user wants to interact with the emulated system through:
11
Groups of entities
User’s IOdevices
The systementities
Objects fortranslation
12
Groups of entities
• The system model• The user’s IO devices• The objects that allow
communication between thetwo worlds
13
The system modelPOWERSUPPLY
PERIPHERALS
SOFTWAREMEDIA
MAIN UNIT
14
The system model
• The power supply– Implements the concept of “keeping alive”
electrical devices– Works at a specified frequency– Many devices can be plugged to it– It’s implemented with a
Smalltalk process
15
The system model
• The main unit
16
The system modelCPU
(MOS 6510)
Video chipMOS 6569
Sound chipMOS 6581
CIA 1
CIA 2
Main memory(64K RAM)
Basic (?K ROM)
Kernal (?K ROM)
Char (?K ROM)
Color (?K RAM)
MEMORIESIO CHIPS
REG
REG
REG
REG
Addressdecoder
The C64 architecture(simplified)
17
The system modelCPU
(MOS 6502)
Video chipPPU
Sound chipAPU
DMA
IO
Character internal memory (2K RAM)
Memory providedby the cartridge
MEMORIESIO CHIPS
REG
REG
REG
REG
Addressdecoder
Color palette(32 bytes RAM)
Sprite RAM(256 bytes)
The NES architecture(simplified)
18
The system model
• How do the machines work?• The CPU is clocked by the power supply• The CPU reads from and writes to the bus
– ie: at: anAddress put: aNumber
• Address decoder: Address interval -> Chip– (16r0000-16r7FFF) -> RAM (0000-7FFF)– (16r8000-16r800F) -> Video chip (0000-000F)
• The selected chip gets the request,and the registers interface map it into anaction.
19
The system model
• The peripherals:
20
The system model
• The media
21
The system model
Powersource
Videochip
Framebuffer
Colorgenerator
Palette
Converter
TVExternalinterface
RETROBJECTSSIDE
DEVELOPER ONLYNEEDS TO IMPLEMENTTHESE TWO OBJECTS
The Video system
22
The system model
SamplerSoundchip Speaker
Externalinterface
BufferStrategy
Powersource
RETROBJECTS SIDE
DEVELOPER ONLYNEEDS TO IMPLEMENT
THIS OBJECT
The Audio system
23
The system model
User pressesThe ‘A’ key
Externalinterface
Representationof user’skeyboard
AdaptorC64
keyboard
OUTSIDE RETROBJECTS
RETROBJECTS
DEVELOPER ONLYNEEDS TO IMPLEMENTTHESE TWO OBJECTS
The Input system
24
Groups of entities
• The system model• The user’s IO devices• The objects that allow
communication between thetwo worlds
25
The user’s IO devices
• External interfaces:
FMODEx
SDL &OpenGL
SDL & xffd
Files
26
Groups of entities
• The system model• The user’s IO devices• The objects that allow
communication between thetwo “worlds”
27
Translation objects
• Loaders– Take a file and converts it into the actual
software media, ie: T64, PRG, TAP.• Adaptors
– Take a user input event and convertsit into an action in the model.• ie: User’s keypress -> C64 keypress
• The GUIs
28
There are lots of thingsthat could be reusedon other emulators!
29
The framework
• Some abstractions:– Devices– I/O chips
• Sound chips• Video chips
– Scheduling process
30
The framework
• Some components:– TV, speaker, power supply– Digital pins, one-way and bi-directional ports– Address decoders: mapping, bank-switching,
mirroring– Memories: RAM, ROM and registers– Strobe registers– Counters and comparators– Buttons and switches– Video filters, samplers, etc.
31
The framework
• Tools:– Not many so far – Goal:
• More interactive development,doing less programming.
32
Conclusions
• Smalltalk can do that, too! • The Smalltalk environment is ideal
for modeling hardware.• Profiling is the key for getting great
performance without compromisingthe design.
33
Future works
• Make it cross-platform– Make it run in Mac & Linux
• Keep improving the emulators.• Keep evolving the framework.
– Documentation, please!– No tests
• Make more emulators!
34
Questions?
35