mirror of
https://github.com/Pecusx/libretro-atari800.git
synced 2026-05-21 21:33:56 +02:00
initial commit
This commit is contained in:
@@ -0,0 +1,302 @@
|
||||
Plans for future versions
|
||||
=========================
|
||||
|
||||
Keyboard and controllers
|
||||
------------------------
|
||||
|
||||
* map host joysticks to Atari ports in the emulation core in order to make
|
||||
the configuration available in UI and config file
|
||||
|
||||
* pass the state of all host keys to the emulation core in order to configure
|
||||
keysticks in UI and config file
|
||||
|
||||
* standardize key mappings in all ports (making host and Atari layouts
|
||||
available everywhere)
|
||||
|
||||
* emulate POKEY keyboard scanning (with optional debouncing)
|
||||
|
||||
* enhance support for pointing devices, including touch screens;
|
||||
"directmouse" should work in more ports, support light pen/gun
|
||||
and correct mirroring of pad/touch/koala
|
||||
|
||||
* Atari Keyboard Interface (AKI) emulation
|
||||
|
||||
|
||||
Emulation core
|
||||
--------------
|
||||
|
||||
* Java midlet
|
||||
|
||||
* cycle-exact POKEY interrupts (timers, serial I/O, keyboard)
|
||||
|
||||
* precisely emulate serial I/O rates
|
||||
|
||||
* emulate POKEY reset (via SKCTL)
|
||||
|
||||
* more accurate frame rates (for example 49.8607456 instead of 50 Hz in PAL)
|
||||
|
||||
* improve VAPI and .PRO support
|
||||
|
||||
* emulate POKEY SIO shift register
|
||||
|
||||
* emulate SIO bus lines, and SIO cable data/audio cross-talk "feep" sound
|
||||
|
||||
* redirection of specific Dn: devices to Hn: (for software that supports
|
||||
only the D: device)
|
||||
|
||||
* log POKEY audio writes, SIO commands (hardware level or DCB level),
|
||||
executed Display List commands, all activity to a defined range
|
||||
of adressess etc. in a way similar to the 6502 trace
|
||||
|
||||
* log events that affect software compatibility: undocumented 6502 opcodes,
|
||||
unofficial system calls (including the 5200), extended memory access
|
||||
|
||||
* emulate drives at the hardware level (810, 1050, XF551.) use code from other
|
||||
emulators which does this. (drive rotation, FM/MFM raw bits). WDCxxxx
|
||||
controller. RIOT chip. 6507. Intel 8048-line chip for the XFD551.
|
||||
Use emulated SIO line for bit-banging. Emulate Drive upgrades (Happy etc.)
|
||||
Emulate 3rd party drives (Rana, Karin Maxi etc.)
|
||||
|
||||
* sound effects. Drive retracking noise (BlueMSX has.) Motor whine.
|
||||
On/off switch sound. Physical key-press sounds. Cartridge slot sounds.
|
||||
Drive door sounds. Floppy rotation flap sound.
|
||||
|
||||
* Atari vapourware emulation. XEM (see below). 1090.
|
||||
1060 CP/M (sweet-pea.)
|
||||
|
||||
* emulate the 850 interface at the hardware level.
|
||||
|
||||
* ATR-8000 emulation. ATR-8500.
|
||||
Adapt an existing CPM emulator.
|
||||
|
||||
* 6502 BRK bug
|
||||
|
||||
* try to understand 6502's "unstable" opcodes (0x93, 0x9b, 0x9f) that seem
|
||||
to have unpredictable (at least not easily predictable) results,
|
||||
preferrably by studying 6502 schematics
|
||||
|
||||
* an option to emulate the variant of 6502 used in new XE machines
|
||||
(which lacks most of the undocumented opcodes of the classic 6502)
|
||||
|
||||
* fully emulate executing 6502 code from Hardware, cycle-exact ANTIC_load
|
||||
from hardware, cycle-exact PMG flickering bus data
|
||||
|
||||
* CPU upgrades (65816, etc)
|
||||
|
||||
* improve emuos so it can boot disks and executables
|
||||
|
||||
* create emuos for 5200
|
||||
|
||||
* emulate printer graphics (on screen or bitmap/PDF output): 1029, 1020, etc.
|
||||
The Mac OS X port of Atari800 has lots of printer emulation routines.
|
||||
|
||||
* RAM Carts (cartridges with battery-powered RAM), writes to flash carts
|
||||
|
||||
* serial "network" interfaces (e.g. 8 Ataris connected, is it GameLink?)
|
||||
|
||||
* ability to play multi-player games across network
|
||||
|
||||
* generate hard disk images or write directly to media that the 8-bit Ataris
|
||||
can use, like CompactFlash or MyIDE/SmartIDE/BB
|
||||
|
||||
* "Turbo" cassette upgrades (Turbo 2000 etc.)
|
||||
|
||||
* cassette emulation of WAV files. Load a WAV file like WAV2CAS does. Save
|
||||
to a WAV file or real cassette like CAS2WAV does. Load voice-and-data
|
||||
combined programmed audio tape images from WAV files. Support compressed
|
||||
(lossless? lossy even?) tape sound images.
|
||||
|
||||
* disk auto-flip. Examine screen data for text string "Insert Side B
|
||||
and press any key/fire/return." Flip disk, print on-screen message and
|
||||
optionally press key. More a core feature than UI. Requires a database.
|
||||
|
||||
* support physical floppy media (hard, port-specific and not very useful)
|
||||
|
||||
* support physical Atari drives (hard, port-specific and not very useful)
|
||||
|
||||
* improve the event recording. Avoid cycle-exact RANDOM?
|
||||
|
||||
|
||||
Graphics
|
||||
--------
|
||||
|
||||
* investigate different palettes for different models such as GTIA vs CTIA
|
||||
or 400/800, 1200XL, 800XL, XE, 5200, hardware modifications to the colour
|
||||
circuts etc.
|
||||
|
||||
* SECAM palette and video emulation.
|
||||
|
||||
* "flicker fixer": display average pixel values of last two Atari frames
|
||||
|
||||
* use YUV output if available. Will it help?
|
||||
|
||||
* PAL emulation. VICE has it, but it's not as complete as Blargg's emulation
|
||||
of NTSC. PAL luma/chroma artifacts are missing (it is like S-Video).
|
||||
Blargg's optimization technique won't work so easily for PAL.
|
||||
(perry: I have a hack of Blargg's slow version of the NTSC emulator that
|
||||
I tried to make work for PAL. But it isn't quite right and is way too slow.
|
||||
Ask me if you are interested.)
|
||||
|
||||
* the NTSC emulator should support other resolutions. It should be supported
|
||||
in all possible ports.
|
||||
|
||||
* fix the remaining bugs in the NTSC emulation. Artificating colours are
|
||||
not quite right. odd-even and even-odd combined artifacts (light red
|
||||
and light green) do not show unless Gaussian factor is changed a lot,
|
||||
which causes even worse artifacts. Fully document the Atari's video
|
||||
output signal (might require a scope.) Fully document NTSC decoding
|
||||
of late 70's and 80's era TVs.
|
||||
|
||||
* document CTIA and emulate properly. Emulate the players not aligning
|
||||
with playfield bug/feature of CTIA which is said to exist. Need
|
||||
at least screenshots of a CTIA Atari showing all possible artifacts.
|
||||
|
||||
* an option to emulate the buggy GTIA chip found in new XE machines.
|
||||
|
||||
* fix all remaining collision bugs in the ANTIC and GTIA code (border+scroll,
|
||||
player HPOS and GRAF changes, partial_scanline changes.) Use the technique
|
||||
of saving data that might generate false collisions, drawing, and then
|
||||
restoring the data (pm_scanline).
|
||||
|
||||
* cycle-exact DMACTL and HSCROL including all glitches
|
||||
|
||||
* ANTIC glitch:
|
||||
POKE 39974,18:POKE 39975,8:POKE 54276,15
|
||||
or
|
||||
POKE 39974,18:POKE 39975,40:POKE 54276,15:POKE 54277,15
|
||||
|
||||
* Video Board XE emulation
|
||||
|
||||
|
||||
Sound
|
||||
-----
|
||||
|
||||
* correctly emulate serial I/O sound
|
||||
|
||||
* one POKEY sound engine
|
||||
|
||||
* include sound settings in the emulation core (command line options,
|
||||
config file, UI) and make it possible to change them at runtime
|
||||
|
||||
* support WAV files in configurations with no live sound
|
||||
|
||||
* an option to auto-enable stereo when an Atari program uses it
|
||||
|
||||
* Covox emulation
|
||||
|
||||
* 2 POKEY mono, 4 POKEY stereo, 4 POKEY quad
|
||||
|
||||
* MIDI <> serial port interface. In it's simplest form there's only MIDI
|
||||
output from the Atari. The more complicated version is enabled by the motor
|
||||
control line and includes two MIDI outputs selected by the command control
|
||||
line and one MIDI input. There is a MIDI composer program for Atari.
|
||||
|
||||
* A/D Converter - 4-bit sampler that returns 0xf0-0xff in the 0xd500-0xd5ff
|
||||
address space.
|
||||
|
||||
* XEM AMY-1 Chip. This is a huge project. Schematics (netlist)
|
||||
are said to exist. Prototyping software for the PC (connected to parallel
|
||||
port) is available online. Datasheet is online. Need netlist for AMY-1,
|
||||
schematics for XEM and any software.
|
||||
|
||||
* SID chip
|
||||
|
||||
|
||||
User Interface
|
||||
--------------
|
||||
|
||||
* make sure all command-line options are available in UI and config file
|
||||
|
||||
* error messages should appear on screen and not in the log
|
||||
|
||||
* on screen display, like a TV remote, for the NTSC (or other) screen filter.
|
||||
|
||||
* support pointing devices (mouse, touch screen) in UI
|
||||
|
||||
* a database to identify programs and choose appropriate settings.
|
||||
OS version. Memory size. Memory expansion type. Peripherals.
|
||||
Machine type. Joystick/Trackball/Paddle etc. controller type.
|
||||
Artifacting mode. SIO patch compatibility. Even if compatible with
|
||||
SIO patch, loading screen graphics are often interesting to watch, so
|
||||
give the user an option to view or ignore them if present. If not
|
||||
SIO patch compatible, optional warp-speed through the loading.
|
||||
Keyboard layout. Advisories as to bad dump/bad image/special considerations
|
||||
Provide documentation, box scan, label scan for the program
|
||||
PAL/NTSC mode. Database should indicate PAL/NTSC
|
||||
compatibility, and which system the program was originally designed for.
|
||||
Allow PAL users to prefer PAL for NTSC-designed programs, but NTSC users
|
||||
to prefer NTSC. NTSC users get PAL (or fake NTSC-upgraded-to-PAL) for
|
||||
all PAL-designed programs (Except perhaps very old ones like English
|
||||
Software titles that NTSC users might remember.) PAL users get NTSC
|
||||
video only for artifacting programs.
|
||||
|
||||
|
||||
Clean up
|
||||
--------
|
||||
|
||||
* make port-specific features available in other ports - now many features
|
||||
work only in SDL, Mac OS X or Win PLus
|
||||
|
||||
* clean up the "util" directory - remove obsolete files, write one-file
|
||||
documentation for all utils
|
||||
|
||||
* make documentation consistent across systems (HTML?)
|
||||
|
||||
* further clean up in the directory structure - port specific files should
|
||||
be hidden in their subfolders (falcon, amiga, ...)
|
||||
|
||||
|
||||
Speed optimizations
|
||||
-------------------
|
||||
|
||||
* use a boolean variable to disable 6502 history tracking and breakpoints
|
||||
(even with MONITOR_BREAKPOINTS and MONITOR_TRACE it should be
|
||||
faster than currently with just the default MONITOR_BREAK)
|
||||
|
||||
* use function pointer table for hardware registers (like PAGED_ATTRIB does)
|
||||
|
||||
* 6502 emulation optimizations: limit number of CPU_GO() calls (call ANTIC/GTIA
|
||||
routines from 6502 and not vice-versa), use ints instead of UWORD and UBYTE,
|
||||
merge N and Z flags into one variable, put 6502 flags into local variables
|
||||
so they can be stored in registers;
|
||||
see http://asap.sourceforge.net for a 6502 emulator which includes these
|
||||
optimizations
|
||||
|
||||
* use patches for common routines such as OS interrupt handlers
|
||||
|
||||
* make some hardware registers directly available in memory[]
|
||||
|
||||
* write versions of draw_antic_* functions for the common case when there are
|
||||
no sprites in the current scanline
|
||||
|
||||
* update color lookup tables only when color registers change
|
||||
|
||||
* automatic framedrop
|
||||
|
||||
* fast bank switching (without memcpy)
|
||||
|
||||
* implement Dirty Spans (see HOWTO-DIRTYSPAN)
|
||||
|
||||
* an option to detect popular lengthy Atari decompression routines
|
||||
and run equivalent C routines instead
|
||||
|
||||
|
||||
R: device
|
||||
---------
|
||||
|
||||
* clean up and comment the code
|
||||
|
||||
* improve portability
|
||||
|
||||
* documentation
|
||||
|
||||
* automatic test (similar to hdevtest.lst for H:)
|
||||
|
||||
* identify security problems
|
||||
|
||||
* TCP port should be configurable (currently hardwired to 9000). The switch
|
||||
between real serial port and TCP port should be put there. Something
|
||||
along the following lines:
|
||||
R_SERIAL = 1
|
||||
R_SERPORT = /dev/ttyS0
|
||||
R_NETPORT = 9000
|
||||
Reference in New Issue
Block a user