From 15b3dc8b0bafc2ea1bce25979d1d4e867c4f8fc7 Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Thu, 24 Aug 2017 18:34:37 +1000 Subject: [PATCH] More cleanups and revision. --- docs/concepts/game-library.md | 5 +- docs/guides/import.md | 54 +++-- docs/index.md | 2 +- docs/interface/higan.md | 380 +++++++++++++++++----------------- docs/interface/icarus.md | 22 +- ruby/input/joypad/udev.cpp | 1 + 6 files changed, 252 insertions(+), 212 deletions(-) diff --git a/docs/concepts/game-library.md b/docs/concepts/game-library.md index 7e6db3c3..e955c99e 100644 --- a/docs/concepts/game-library.md +++ b/docs/concepts/game-library.md @@ -61,8 +61,9 @@ because there's two parts to it: telling icarus where to put imported games, and telling higan where to find them. - 1. If necessary, - create the folder you want higan to use + 1. Move your existing game library folder + to the new location, + or otherwise create the folder you want higan to use as its game library. 1. Launch icarus, then click the "Settings ..." button in the lower-right, diff --git a/docs/guides/import.md b/docs/guides/import.md index ad45a8be..1d01b771 100644 --- a/docs/guides/import.md +++ b/docs/guides/import.md @@ -11,28 +11,56 @@ unusual hardware. Regular games ------------- -icarus supports importing games +icarus can import games in the most commonly-used formats for each supported console, -and also those same formats inside `.zip` files. +and also those same formats inside `.zip` files +(as long as tthe `.zip` file contains only one game). More advanced compression formats like RAR or 7-zip are not supported. -For most games -that do not use special chips or co-processors, -importing a game is straight-forward. -From [the Library menu](../interface/higan.md#the-library-menu) +To import a game, +open [the Library menu](../interface/higan.md#the-library-menu), choose "Load ROM File ..." to open [a filesystem browser](../interface/common.md#the-filesystem-browser), -choose the game you want to play, +choose the ROM file of the game you want to play, and it will be imported into the library and loaded. -To play the game again -select the console the game runs on from -[the Library menu](../interface/higan.md#the-library-menu) -to open another -[filesystem browser](../interface/common.md#the-filesystem-browser) -that lists all the previously-imported games for that platform. +**Note:** +If you want to import many games, +run icarus directly, +or choose "Import ROM Files ..." +from the Library menu +(which just runs icarus anyway). +See [the icarus documentation](../interface/icarus.md) for details. + +To play a game for a particular console from your library, +open the Library menu, +pick the console manufacturer submenu +(Nintendo for the Super Famicom, +Bandai for the WonderSwan, +etc.) +then choose the appropriate console menu item. +A filesystem browser will appear +listing all the games in your library +for that particular console. +Select the game you want to play +and click the Open button, +or just double-click the game, +and it will begin playing as though you'd just turned on the console. + +**Note:** +Sometimes +the NTSC and PAL variants of a particular console +behave differently, +or the Japanese and American variants. +When choosing a game from the Game Library, +a drop-down list in the bottom-right of the filesystem browser +allows you to choose which regional variation +of the console it should emulate. +For most consoles, +higan can reliably guess which variant to use, +and the list defaults to "Auto". Games with co-processor firmware -------------------------------- diff --git a/docs/index.md b/docs/index.md index f4db17ef..6eacaaab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,7 @@ It also includes some level of support for these consoles: - Sega Megadrive/Genesis - NEC PC Engine/TurboGrafx 16 (but not the CD-ROMĀ² System/TurboGrafx-CD) - NEC SuperGrafx - - Bandai Wonderswan + - Bandai WonderSwan - Bandai Wonderswan Color **Note:** Some consoles were released under different names diff --git a/docs/interface/higan.md b/docs/interface/higan.md index 71ff169e..f939c587 100644 --- a/docs/interface/higan.md +++ b/docs/interface/higan.md @@ -1,65 +1,31 @@ -When you launch higan, +When you launch higan the main window appears, with a menu-bar across the top, a status-bar across the bottom, -and a large area in the middle where the game's video output appears. +and a large area in the middle that shows +the running game's video output. The Library menu ---------------- -The Library menu allows you -to import games into higan's game library, -and to load games from the library. -higan organises the games in your library -according to which console they were intended to run on. - -To play a game for a particular console from your library, -click on the Library menu, -click on the console manufacturer submenu -(Nintendo for the Super Famicom, -Bandai for the WonderSwan, -etc.) -then click on the console menu item. -A window will appear listing all the games in your library -for that particular console. -Select the game you want to play -and click the Open button, -or just double-click the game, -and it will begin playing as though you'd just turned on the console. - -**Note:** -Sometimes -the NTSC and PAL variants of a particular console -behave differently, -or the Japanese and American variants. -When opening a game from the Game Library, -a drop-down list in the bottom-right of the window -allows you to choose which regional variation -of the console it should emulate. -For most consoles, -higan can reliably guess which variant to use, -and the list defaults to "Auto". - -To add a new game to your library, -choose "Load ROM File ..." from the Library menu. -A [filesystem browser](common.md#the-filesystem-browser) will appear, -allowing you to pick any ROM image for any supported system, -with any of the most common file extensions. -It also allows loading ROM images from `.zip` archives, -if the archive contains a single ROM image. - -**Note:** Some games require extra steps to import correctly; -see [Importing and playing games](../guides/import.md) for details. - -To add many games at once, -run icarus, -or choose "Import ROM Files ..." from the Library menu -(which just runs icarus anyway). -See [the icarus interface](icarus.md) -for more information about bulk-importing. - -For more information about the higan game library, -see [The Game Library](../concepts/game-library.md). +Manufacturer submenus +allow you to play +games you've already imported +into higan's +[game library](../concepts/game-library.md). +See [Importing and playing games](../guides/import.md). + +**Load ROM File ...** +opens a [filesystem browser](common.md#the-filesystem-browser) +allowing you to choose a single ROM file. +It will be imported and immediately start playing. +See [Importing and playing games](../guides/import.md). + +**Import ROM Files ...** +launches the icarus importing tool, +allowing you to bulk-import many ROM files at once. +See [the icarus documentation](icarus.md). + The console menu --------------- @@ -80,52 +46,60 @@ to the particular console being emulated. All consoles will have some of the following items, but few consoles have all of them. - - **Controller Port 1** - allows you - to connect different emulated controllers - to the first controller port, - if there is one. - - See [higan's Input settings](higan-settings.md#input) - for information about configuring - which host controller inputs are used - for the emulated controllers. - - This menu appears for the Famicom, - even though the Famicom did not support alternate controllers, - because the Famicom emulation core also emulates the NES, - which did. - - **Controller Port 2** - allows you - to connect different emulated controllers - to the second controller port, - if there is one. - - See [higan's Input settings](higan-settings.md#input) - for information about configuring - which host controller inputs are used - for the emulated controllers. - - This menu appears for the Famicom, - even though the Famicom did not support alternate controllers, - because the Famicom emulation core also emulates the NES, - which did. - - **Expansion Port** - allows you - to connect different emulated devices - to the console's expansion port, - if there is one. - - For the Super Famicom, - the [21fx][21fx] is a homebrew device - that allows a program running on a PC - to control a physical Super Famicom (or SNES). - This option allows the same program - to control the emulated SNES, - for development or testing. - - **Power Cycle** - restarts the loaded game - as though the emulated console were switched off and on again. - - **Unload** - stops the current game, - as though the emulated console were switched off. - You can load the same or a different game - from [the Library menu](#the-library-menu). + +**Controller Port 1** +allows you +to connect different emulated controllers +to the first controller port, +if there is one. +See [higan's Input settings](higan-settings.md#input) +for information about configuring +which PC controller inputs are used +for the emulated controllers. + +This menu appears for the Famicom, +even though the Famicom did not support alternate controllers, +because the Famicom emulation core also emulates the NES, +which did. + +**Controller Port 2** +allows you +to connect different emulated controllers +to the second controller port, +if there is one. +See [higan's Input settings](higan-settings.md#input) +for information about configuring +which PC controller inputs are used +for the emulated controllers. + +This menu appears for the Famicom, +even though the Famicom did not support alternate controllers, +because the Famicom emulation core also emulates the NES, +which did. + +**Expansion Port** +allows you +to connect different emulated devices +to the console's expansion port, +if there is one. + +For the Super Famicom, +the [21fx][21fx] is a homebrew device +that allows a program running on a PC +to control a physical Super Famicom (or SNES). +This option allows the same program +to control the emulated SNES, +for development or testing. + +**Power Cycle** +restarts the loaded game +as though the emulated console were switched off and on again. + +**Unload** +stops the current game, +as though the emulated console were switched off. +You can load a new game +from [the Library menu](#the-library-menu). [21fx]: https://github.com/defparam/21FX @@ -135,75 +109,96 @@ The Settings menu The Settings menu allows you to configure things that aren't specific to any particular console. - - **Video Scale** determines the size and shape - of the emulated console's video output - in windowed mode - (as opposed to fullscreen). - - **Video Emulation** applies various effects - to the emulated console's video output - to reproduce some behaviours - that aren't technically part of the console itself. - - "Blurring" simulates the limited horizontal resolution - of standard-definition TVs - by blurring together horizontally-adjacent pixels. - Games like Jurassic Park for the Super Famicom + +**Video Scale** determines the size +of the emulated console's video output +when higan is running in windowed mode +(as opposed to fullscreen). + +**Video Emulation** applies various effects +to the emulated console's video output +to reproduce some behaviours +that aren't technically part of the console itself: + + - **Blurring** + simulates the limited horizontal resolution + of standard-definition TVs + by blurring together horizontally-adjacent pixels. + For hand-held consoles, + this simulates the slow response time + of the cheap LCD screens these consoles used + by blending each output frame with the previous one. + - Games like + Jurassic Park for the Super Famicom + or Chikyuu Kaihou Gun ZAS for the Game Boy depend on this to emulate a transparency effect. - For hand-held consoles like the Game Boy Advance, - this simulates the slow response time - of the cheap LCD screens these consoles used - by blurring each output frame with the previous one. - - "Colors" simulates the way a console's display device - differs from modern computer monitor's colour reproduction. - In particular, - it simulates the slightly-different gamma correction - used by the Super Famicom, - the dim, washed out colours of the original Game Boy Advance, - and the pea-green display of the original Game Boy. - - **Video Shader** controls - how the low-resolution video output of the emulated console - is scaled up to suit modern high-resolution displays. - The availability of items in this submenu depends on - which video driver higan is using, - so see [Choosing drivers](../guides/drivers.md) for more information. - - "None" draws each output pixel according to - the colour of the single nearest input pixel, - sometimes called "nearest neighbour" scaling. - This produces unnaturally crisp and blocky images. - - "Blur" draws each output pixel by - averaging the colours of the four nearest input pixels, - sometimes called "bilinear" scaling. - This produces unnaturally blurry images. - - When using the OpenGL driver, - an additional item appears in this menu for - each installed Quark shader. - See [Using video shaders](../guides/shaders.md) - for details. - - **Synchronize Audio** - causes higan to wait for audio playback to complete - before resuming emulation. - This should reduce popping and glitching noises, - and slows the emulation down to approximately the correct speed. - If your PC cannot emulate at full-speed, - (60fps for most consoles, 75fps for WonderSwan) - this has no noticable effect. - - **Mute Audio** - causes higan to not output sound from the emulated console. - The sound hardware is still emulated. - - **Show Status Bar** - causes higan to show or hide the status bar - at the bottom of the window. - This option has no effect in full-screen mode. - See [The status bar](#the-status-bar) for more information. - - **Video ...** - opens [higan's Video settings](higan-settings.md#video). - - **Audio ...** - opens [higan's Audio settings](higan-settings.md#audio). - - **Input ...** - opens [higan's Input settings](higan-settings.md#input). - - **Hotkeys ...** - opens [higan's Hotkeys settings](higan-settings.md#hotkeys). - - **Advanced ...** - opens [higan's Advanced settings](higan-settings.md#advanced). + - **Colors** + simulates the way a console's display device + differs from modern computer monitor's colour reproduction. + In particular, + it simulates the slightly-different gamma correction + used by the Super Famicom, + the dim, washed out colours of the original Game Boy Advance, + and the pea-green display of the original Game Boy. + +**Video Shader** controls +how the low-resolution video output of the emulated console +is scaled up to suit modern high-resolution displays. +The availability of items in this submenu depends on +which video driver higan is using, +so see [Choosing drivers](../guides/drivers.md) for more information. + + - **None** + draws each output pixel according to + the colour of the single nearest input pixel, + sometimes called "nearest neighbour" scaling. + This produces unnaturally crisp and blocky images. + + - **Blur** + draws each output pixel by + averaging the colours of the four nearest input pixels, + sometimes called "bilinear" scaling. + This produces unnaturally blurry images. + + - When using the OpenGL driver, + an additional item appears in this menu for + each installed shader. + See [Using video shaders](../guides/shaders.md) + for details. + +**Synchronize Audio** +causes higan to wait for audio playback to complete +before resuming emulation. +This should reduce popping and glitching noises, +and slows the emulation down to approximately the correct speed. +If your PC cannot emulate at full-speed, +(60fps for most consoles, 75fps for WonderSwan) +this has no noticable effect. + +**Mute Audio** +causes higan to not output sound from the emulated console. +The sound hardware is still emulated. + +**Show Status Bar** +causes higan to show or hide the status bar +at the bottom of the window. +This option has no effect in full-screen mode. +See [The status bar](#the-status-bar) for more information. + +**Video ...** +opens [higan's Video settings](higan-settings.md#video). + +**Audio ...** +opens [higan's Audio settings](higan-settings.md#audio). + +**Input ...** +opens [higan's Input settings](higan-settings.md#input). + +**Hotkeys ...** +opens [higan's Hotkeys settings](higan-settings.md#hotkeys). + +**Advanced ...** +opens [higan's Advanced settings](higan-settings.md#advanced). [svsa]: #why-do-synchronize-video-and-synchronize-audio-conflict @@ -213,33 +208,38 @@ The Tools menu The Tools menu contains features for manipulating the emulated console. - - **Save Quick State** - stores the current state of the emulated console - into one of the quick state slots. - See [Save States](../concepts/save-states.md) for more information. - - **Load Quick State** - restores the emulated console to - a state previously saved to one of the quick state slots. - See [Save States](../concepts/save-states.md) for more information. - - **Cheat Editor** - opens [the Cheat Editor window](higan-tools.md#the-cheat-editor) - - **State Manager** - opens [the State Manager window](higan-tools.md#the-state-manager) - - **Manifest Viewer** - opens [the Manifest Viewer window](higan-tools.md#the-manifest-viewer) +**Save Quick State** +stores the current state of the emulated console +into one of the quick state slots. +See [Save States](../concepts/save-states.md) for more information. + +**Load Quick State** +restores the emulated console to +a state previously saved to one of the quick state slots. +See [Save States](../concepts/save-states.md) for more information. + +**Cheat Editor** +opens [the Cheat Editor window](higan-tools.md#the-cheat-editor) + +**State Manager** +opens [the State Manager window](higan-tools.md#the-state-manager) + +**Manifest Viewer** +opens [the Manifest Viewer window](higan-tools.md#the-manifest-viewer) The Help menu ------------- The Help menu contains information about higan itself. - - **Documentation** - loads the official higan documentation - in your web-browser. - - **About** - opens the About dialog, - which displays basic information about higan, - including the version number. +**Documentation** +loads the official higan documentation +in your web-browser. + +**About** +opens the About dialog, +which displays basic information about higan, +including the version number. The status bar -------------- diff --git a/docs/interface/icarus.md b/docs/interface/icarus.md index b1389355..aa342f99 100644 --- a/docs/interface/icarus.md +++ b/docs/interface/icarus.md @@ -2,7 +2,15 @@ When launching icarus, directly or by picking "Import ROM Files ..." from higan's [Library menu](higan.md#the-library-menu), the main icarus window appears. -This is [a filesystem browser](common.md#the-filesystem-browser), +This window allows you to bulk-import ROM files +into [higan's game library][gamelib], +and also to access icarus' settings. + +Bulk importing ROM files +------------------------ + +icarus' main window +is [a filesystem browser](common.md#the-filesystem-browser), with customisations: - The filesystem browser only lists @@ -15,22 +23,24 @@ with customisations: - You can un-tick all the check-boxes by pressing "Unselect All" in the bottom-left. -Pressing "Settings ..." in the bottom-right -opens [the icarus Settings dialog](#the-icarus-settings-dialog). - Pressing "Import ..." in the bottom-right will close the filesystem browser then try to import all the files whose check-boxes are ticked into [the Game Library][gamelib]. -icarus displays a progress dialog during the import process. +icarus displays a progress dialog during the import process, +and a result window if any errors occurred. **Note:** Some games require extra steps to import correctly; -see [the Game Library][gamelib] for details. +see [Importing and playing games](../guides/import.md) for details. The icarus Settings dialog -------------------------- +Pressing "Settings ..." +in the bottom-right corner of the main icarus window +opens the settings dialog. + The icarus Settings dialog contains the following settings: - **Library Location** determines diff --git a/ruby/input/joypad/udev.cpp b/ruby/input/joypad/udev.cpp index 580c6270..42fa577b 100644 --- a/ruby/input/joypad/udev.cpp +++ b/ruby/input/joypad/udev.cpp @@ -98,6 +98,7 @@ struct InputJoypadUdev { } auto rumble(uint64_t id, bool enable) -> bool { + print("Joypad ", id, " rumble: ", enable, "\n"); for(auto& jp : joypads) { if(jp.hid->id() != id) continue; if(!jp.hid->rumble()) continue;