Click here to load reader
Upload
esug
View
1.341
Download
2
Embed Size (px)
Citation preview
Gabriel Honoré1
What is it?• A collection of software emulators
– A software emulator is a computerprogram 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 Entertainment
System (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-typedlanguages for making them.
– Procedural designs are prefered whencompared 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
TV Externalinterface
RETROBJECTSSIDE
DEVELOPER ONLYNEEDS TO IMPLEMENTTHESE TWO OBJECTS
The Video system
22
The system model
Sampler Soundchip 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
Adaptor C64keyboard
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 actualsoftware media, ie: T64, PRG, TAP.
• Adaptors– Take a user input event and converts
it 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