Open main menu

Difference between revisions of "Small Devices Backend"

Line 31: Line 31:
* It should be written with extensive use of #ifdefs, so if I, say, don't need a virtual keyboard or downscalers for platform Foo, I don't bloat my code.
* It should be written with extensive use of #ifdefs, so if I, say, don't need a virtual keyboard or downscalers for platform Foo, I don't bloat my code.


=== Common Subsystems ===
=== Common Features ===


* Virtual keyboard (we need so specify an API, so backends could make their own)
The following is a list of features / characteristics that are common to many small device systems. Note that not all systems will use each of these, so it is important to be able to pick some of them without being forced to use/implement the others.
 
* Virtual keyboard: Provide a default implementation, but offers hooks to allow for custom implementations.
* Splash screen (most of ports have it, so it could be unified)
* Splash screen (most of ports have it, so it could be unified)
* Downscalers (used to display on smaller-than-game-content screens)
* Downscalers (used to display on smaller-than-game-content screens)
* Zoning, like used in WinCE and SymbianOS. It is a way of switching around between the main area, actions area and inventory area for devices lacking mouse or touchscreen. The position within each zone is stored when switching between them. It makes playing with joystick-like controls a lot easier. This can also be used together with showing a part of the game screen 1:1 and needing to scroll the display, instead of downscaling.
* Zoning, like used in WinCE and SymbianOS. It is a way of switching around between the main area, actions area and inventory area for devices lacking mouse or touchscreen. The position within each zone is stored when switching between them. It makes playing with joystick-like controls a lot easier. This can also be used together with showing a part of the game screen 1:1 and needing to scroll the display, instead of downscaling.
* Variable upscaler for non-standard resolutions (only used for making small fullscreen resolutions, say <=640x480, obviously cannot rely on fast FPU)
* Variable upscaler for non-standard resolutions (only used for making small fullscreen resolutions, say <=640x480. Should be done using integer math / fixed point arithmetic, since usually no FPU is available)
* Possibility to disable some/all scalers, but that should be under #ifdef as PSP and PS2 have enough power
* Possibility to cleanly disable unneeded scalers
* Low-res sound (8bit, mono, probably partly implemented in main mixer code for speed)
* Possibi for low-res sound (8bit, mono, probably partly implemented in main mixer code for speed)
* Should hide unneeded options from GUI like MT-32, MIDI device, i.e. those which either don't make sense or too fat for small devices
* Should hide unneeded options from GUI like MT-32, MIDI device (i.e. those which either don't make sense or are too fat for small devices)


=== OSystem changes ===
=== OSystem changes ===
1,079

edits