Difference between revisions of "Small Devices Backend"
Jump to navigation
Jump to search
(Mention Nokia770 port) |
(Add OSystem changes section) |
||
Line 38: | Line 38: | ||
* Low-res sound (8bit, mono, probably partly implemented in main mixer code for speed) | * 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 too fat for small devices | ||
=== OSystem changes === | |||
* Add method for bringing up keyboard. On devices with keyboard it is a no-op, on other devices it is useable when game awaits some input. Examples of this are: | |||
** Gob1 level code input | |||
** ITE use of magic hat (room jump) | |||
** Different protections in many games | |||
* Probably it's a really good time for adding more modularity to OSystem. I.e. separate these: | |||
** Scaling | |||
** Input | |||
** Drawing |
Revision as of 19:47, 14 January 2006
A base backend used by smaller devices with limited functionality. I.e. small screen, no keyboard, low memory, low processor etc.
Possible Targets
- WinCE -- small screen, no keyboard
- PalmOS -- small screen, no keyboard, low resources, low memory
- SymbianOS -- small screen, no keyboard, low resources, low memory
- GP32 -- small screen, no keyboard, low resources, low memory
- PSP -- small screen, no keyboard
- PS2 (?) -- no keyboard
- DC (?) -- no keyboard
- Nokia770 -- no keyboard, low resources, low memory(?)
Structure
All above devices will subclass this backend and possibly override system-specific methods, i.e.:
SDL --> SmallDevices --> WinCE --> PalmOS --> SymbianOS --> GP32 --> PSP --> Nokia770
Small Devices backend should be based on SDL backend, but should have most functions as virtual, so functionality could be overriden. An example is PSP which has hardware scalers, and PS2 where Lavos wants to implement 3D virtual keyboard.
- It should add another level of abstraction and should let lowest level functions like input and screen blitting to be overriden. For example, PalmOS and GP32 backends do not use SDL. That shouldn't be really hard, as most functionality is in place and current SDL backend performs blitting only from 2 functions.
- 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
- Virtual keyboard (we need so specify an API, so backends could make their own)
- Splash screen (most of ports have it, so it could be unified)
- 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.
- Variable upscaler for non-standard resolutions (only used for making small fullscreen resolutions, say <=640x480, obviously cannot rely on fast FPU)
- Possibility to disable some/all scalers, but that should be under #ifdef as PSP and PS2 have enough power
- 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
OSystem changes
- Add method for bringing up keyboard. On devices with keyboard it is a no-op, on other devices it is useable when game awaits some input. Examples of this are:
- Gob1 level code input
- ITE use of magic hat (room jump)
- Different protections in many games
- Probably it's a really good time for adding more modularity to OSystem. I.e. separate these:
- Scaling
- Input
- Drawing