NitroSwan DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 4: Line 4:
|description=WonderSwan emulator for Nintendo DS.
|description=WonderSwan emulator for Nintendo DS.
|author=Fredrik Ahlström (FluBBa)
|author=Fredrik Ahlström (FluBBa)
|lastupdated=2022/02/10
|lastupdated=2023/10/25
|type=Handheld
|type=Handheld
|version=0.3.0
|version=0.6.4
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/dshomebrew/nitroswan.7z
|download=https://dlhb.gamebrew.org/dshomebrew/nitroswan.7z
Line 18: Line 18:


Next put your games and bios files into a folder (stub version for the bootrom will be used if that is not found).
Next put your games and bios files into a folder (stub version for the bootrom will be used if that is not found).
Max 768 files per folder, filenames must not be longer than 127 chars. You can use zip-files (as long as they use the deflate compression). Caution: SLOT-2 RAM can not be used with zip-files.


Depending on your flashcart you might have to [[DLDI]] patch the emulator.
Depending on your flashcart you might have to [[DLDI]] patch the emulator.
Line 26: Line 28:
===Menu===
===Menu===
'''File:'''
'''File:'''
* Load Game - Select a game to load.
* Load Game- Select a game to load.
* Load State - Load a previously saved state of the currently running game.
* Load State - Load a previously saved state of the currently running game.
* Save State - Save a state of the currently running game.
* Save State - Save a state of the currently running game.
* Load NVRAM - Load non volatile ram (EEPROM/SRAM) for the currently game.
* Load NVRAM - Load non volatile ram (EEPROM/SRAM) for the currently running game.
* Save NVRAM - Save non volatile ram (EEPROM/SRAM) for the currently game.
* Save NVRAM - Save non volatile ram (EEPROM/SRAM) for the currently running game.
* Load Patch - Apply an IPS patch to the currectly loaded rom.
* Save Settings - Save the current settings (and internal EEPROM).
* Save Settings - Save the current settings (and internal EEPROM).
* Reset Game - Reset the currently running game.
* Reset Game - Reset the currently running game.
Line 39: Line 42:
* Controller - 2P start a 2 player game.
* Controller - 2P start a 2 player game.
* Swap A/B - Swap which NDS button is mapped to which WS button.
* Swap A/B - Swap which NDS button is mapped to which WS button.
* Alternate layout - See Controls.


'''Display:'''
'''Display:'''
* Mono Palette - Here you can select the palette for B & W games.
* Mono Palette - Here you can select the palette for B & W games.
* Gamma - Lets you change the gamma (""brightness"").
* Gamma - Lets you change the gamma ("brightness").
* Disable Foreground - Turn on/off foreground rendering.
* Disable Background - Turn on/off background rendering.
* Disable Sprites - Turn on/off sprite rendering.


'''Machine Settings:'''
'''Machine Settings:'''
Line 59: Line 60:


'''Settings:'''
'''Settings:'''
* Speed - Switch between speed modes.
* Speed - Switch between speed modes (Normal, 200%, 50%, Max).
** Normal - Game runs at it's normal speed.
* Allow Refresh Change - Allow the Wonderswan to change NDS refresh rate.
** 200% - Game runs at double speed.
** Max - Games can run up to 4 times normal speed (might change).
** 50% - Game runs at half speed.
* Autoload State - Toggle Savestate autoloading. Automagically load the savestate associated with the current game.
* Autoload State - Toggle Savestate autoloading. Automagically load the savestate associated with the current game.
* Autoload NVRAM - Toggle EEPROM/SRAM autoloading. Automagically load the EEPROM/SRAM associated with the current game.
* Autoload NVRAM - Toggle EEPROM/SRAM autoloading. Automagically load the EEPROM/SRAM associated with the current game.
Line 70: Line 68:
* Powersave 2nd Screen - If graphics/light should be turned off for the GUI screen when menu is not active.
* Powersave 2nd Screen - If graphics/light should be turned off for the GUI screen when menu is not active.
* Emulator on Bottom - Select if top or bottom screen should be used for emulator, when menu is active emulator screen is allways on top.
* Emulator on Bottom - Select if top or bottom screen should be used for emulator, when menu is active emulator screen is allways on top.
* Debug Output - Show an FPS meter for now.
* Autosleep - Doesn't work.
* Autosleep - Doesn't work.
'''Debug:'''
* Debug Output - Show FPS and logged text.
* Disable Foreground - Turn on/off foreground rendering.
* Disable Background - Turn on/off background rendering.
* Disable Sprites - Turn on/off sprite rendering.
* Step Frame - Emulate one frame.


==Controls==
==Controls==
L+R or Touchscreen - Open menu
L+Select - Open menu
 
Start - WS Start
 
Select - WS Sound
 
'''In horizontal games:'''
 
D-Pad - WS X1-X4
 
A/B - WS A/B
 
Holding L+D-Pad - Maps the D-Pad to WS Y1-Y4
 
'''In vertical games:'''
 
D-Pad - WS Y1-Y4
 
A/B/X/Y - WS X1-X4
 
'''Alternate layout:'''
 
D-Pad - WS X1-X4
 
A/B - WS A/B
 
L/R/X/Y - Maps to WS Y1-Y4
 
'''Pocket Challenge V2:'''


Hold Start when starting a game - Enter boot rom settings (internal EEPROM is saved when saving settings)
D-Pad - Up/Down/Left/Right


'''Menu:'''
L - Escape


D-Pad or Touchscreen - Navigate menu
R/X - View


A or Double tap - Select an option
A - Clear


B or Touchscreen - Go back a step
B - Circle


L/R - Select between the tabs
Y - Pass


==Media==
==Media==
'''NitroSwan (WonderSwan) | Nintendo DS | Games Showcase''' ([https://www.youtube.com/watch?v=PSQtrv_BB58 Stranno]) <br>
'''Testing NitroSwan DS V0.5.2 - 2023 Update (Wonderswan Emulator for Nintendo DS / 3DS)''' ([https://www.youtube.com/watch?v=ljKEa36KJgQ Mr^Burns - Obscure Games & Software Tester]) <br>
<youtube>PSQtrv_BB58</youtube>
<youtube>ljKEa36KJgQ</youtube>


==Known issues==
==Known issues==
Savestates does not work yet.
Please see https://github.com/FluBBaOfWard/NitroSwan/blob/main/README.md#games


==Changelog==
==Changelog==
'''v0.3.0 2022/02/10'''
'''V0.6.4 2023/10/25'''
* Added alternate joypad layout.
* Fixed unsigned mul on ASWAN.
* Fixed immediate mul.
* Fixed 32/16 division.
* Fixed IO register differences between mono/color mode.
* Optimized 16-bit signed mul.
'''V0.6.3 2023/09/24'''
* Fixed value of SP when running without boot rom.
* Fixed boot rom behavior for PCV2.
* Fixed SLOT-2 RAM support for EZ-Flash 3-In-1.
* Optimized IO port writing.
* Optimized some opcodes.
* Tweaked EEPROM handling.
 
'''V0.6.2 2023/09/03'''
* Added SLOT-2 RAM support.
* Added IPS patch functionality.
* Added power on/off ability.
* Fixed correct frame-rate without "Allow Refresh Change".
* Fixed sound mixing.
* Optimized mapper writing.
 
'''V0.6.0 2023/08/05'''
* Added per line emulation of Display Control register.
* Added per line emulation of FG Window register.
* Added per line emulation of Map Address register.
* Added differences for the 2 cart mappers.
* Optimized tile map rendering.
* Optimized cpu core.
 
'''V0.5.2 2023/04/22'''
* Fixed controls for PCV2.
* Fixed WS sound levels.
* Fixed WS sound icon.
* Fixed save state.
* Added more BnW palettes.
 
'''V0.5.1 2023/03/10'''
* Fixed noise calculation.
* Fixed BnW palettes.
* Added setting for border.
 
'''V0.5.0 2023/03/01'''
* Fixed reset of mapper registers.
* Fixed loading of roms that are not power of 2.
* Fixed timing of several opcodes.
* Fixed timing of interrupts.
* Fixed timing of address calculations.
* Fixed some cpu opcodes.
* Fixed interrupt handling.
* Fixed timers.
* Fixed sweep on sound channel 3.
* Fixed noise feedback selection.
* Fixed sound sample playback.
* Optimized cpu core a bit.
* Added support for serial port interrupts.
* Added support for battery low.
* Added new debug menu.
* Linked NDS battery to WS battery.
* Better menu traversing.
 
'''V0.4.1 2022/08/15'''
* Fixed background for PCV2 mode.
* WS refresh rate can control NDS refresh rate.
 
'''V0.4.0 2022/08/11'''
* Fixed flag calculation for most opcodes.
* Fixed emulation of undefined opcodes.
* Fixed settings to disable Bg,Fg & Spr.
* Fixed default sound volume on WSC/SC.
* Optimized the cpu core.
* Tweaked behaviour of timers.
* Mute Ch2 when playing samples.
 
'''V0.3.6 2022/04/20'''
* Fixed sound DMA a bit.
* Added savestates.
* Added sound button (Select).
 
'''V0.3.5 2022/03/09'''
* Added RTC emulation.
* Added a border to emu screen.
* Better mapping of input.
* Optimized graphic redraw.
* Optimized PC/IP handling in cpu core.
 
'''V0.3.0 2022/02/10'''
* Added banked SRAM emulation.
* Added banked SRAM emulation.
* Fixed zip decompression buffer size.
* Fixed zip decompression buffer size.
Line 104: Line 223:
* Optimized opcodes.
* Optimized opcodes.


'''v0.2.0 2022/01/20'''
'''V0.2.0 2022/01/20'''
* Completed the rewrite of the cpu core in ARM asm.
* Completed the rewrite of the cpu core in ARM asm.


Line 136: Line 255:
* Flavor & Koyote for WonderSwan info.
* Flavor & Koyote for WonderSwan info.
* [https://github.com/Godzil/NewOswan Godzil] for the boot rom stubs.
* [https://github.com/Godzil/NewOswan Godzil] for the boot rom stubs.
* lidnariq for RTC info.
* Dwedit for help and inspiration with a lot of things.
* Dwedit for help and inspiration with a lot of things.



Latest revision as of 13:45, 2 February 2024

NitroSwan DS
Nitroswan2.png
General
AuthorFredrik Ahlström (FluBBa)
TypeHandheld
Version0.6.4
LicenseMixed
Last Updated2023/10/25
Links
Download
Website
Source

This is a Bandai WonderSwan (Color/Crystal) & PocketChallenge V2 emulator for the Nintendo DS.

Installation

Create a folder named nitroswan in either the root of your flash card or in the data folder. This is where the settings and save files are stored.

Next put your games and bios files into a folder (stub version for the bootrom will be used if that is not found).

Max 768 files per folder, filenames must not be longer than 127 chars. You can use zip-files (as long as they use the deflate compression). Caution: SLOT-2 RAM can not be used with zip-files.

Depending on your flashcart you might have to DLDI patch the emulator.

The save files should be compatible with most other WonderSwan emulators.

User guide

Menu

File:

  • Load Game- Select a game to load.
  • Load State - Load a previously saved state of the currently running game.
  • Save State - Save a state of the currently running game.
  • Load NVRAM - Load non volatile ram (EEPROM/SRAM) for the currently running game.
  • Save NVRAM - Save non volatile ram (EEPROM/SRAM) for the currently running game.
  • Load Patch - Apply an IPS patch to the currectly loaded rom.
  • Save Settings - Save the current settings (and internal EEPROM).
  • Reset Game - Reset the currently running game.

Options

Controller:

  • Autofire - Select if you want autofire.
  • Controller - 2P start a 2 player game.
  • Swap A/B - Swap which NDS button is mapped to which WS button.
  • Alternate layout - See Controls.

Display:

  • Mono Palette - Here you can select the palette for B & W games.
  • Gamma - Lets you change the gamma ("brightness").

Machine Settings:

  • Machine - Select the emulated machine.
  • Select WS Bios - Load a real WS Bios.
  • Select WS Color Bios - Load a real WS Color Bios.
  • Select WS Crystal Bios - Load a real WS Crystal Bios.
  • Import internal EEPROM - Load a special internal EEPROM.
  • Clear internal EEPROM - Reset internal EEPROM.
  • Cpu speed hacks - Allow speed hacks.
  • Change Battery - Change to a new main battery (AA/LR6).
  • Language - Japanese and English.

Settings:

  • Speed - Switch between speed modes (Normal, 200%, 50%, Max).
  • Allow Refresh Change - Allow the Wonderswan to change NDS refresh rate.
  • Autoload State - Toggle Savestate autoloading. Automagically load the savestate associated with the current game.
  • Autoload NVRAM - Toggle EEPROM/SRAM autoloading. Automagically load the EEPROM/SRAM associated with the current game.
  • Autosave Settings - This will save settings when leaving menu if any changes are made.
  • Autopause Game - Toggle if the game should pause when opening the menu.
  • Powersave 2nd Screen - If graphics/light should be turned off for the GUI screen when menu is not active.
  • Emulator on Bottom - Select if top or bottom screen should be used for emulator, when menu is active emulator screen is allways on top.
  • Autosleep - Doesn't work.

Debug:

  • Debug Output - Show FPS and logged text.
  • Disable Foreground - Turn on/off foreground rendering.
  • Disable Background - Turn on/off background rendering.
  • Disable Sprites - Turn on/off sprite rendering.
  • Step Frame - Emulate one frame.

Controls

L+Select - Open menu

Start - WS Start

Select - WS Sound

In horizontal games:

D-Pad - WS X1-X4

A/B - WS A/B

Holding L+D-Pad - Maps the D-Pad to WS Y1-Y4

In vertical games:

D-Pad - WS Y1-Y4

A/B/X/Y - WS X1-X4

Alternate layout:

D-Pad - WS X1-X4

A/B - WS A/B

L/R/X/Y - Maps to WS Y1-Y4

Pocket Challenge V2:

D-Pad - Up/Down/Left/Right

L - Escape

R/X - View

A - Clear

B - Circle

Y - Pass

Media

Testing NitroSwan DS V0.5.2 - 2023 Update (Wonderswan Emulator for Nintendo DS / 3DS) (Mr^Burns - Obscure Games & Software Tester)

Known issues

Please see https://github.com/FluBBaOfWard/NitroSwan/blob/main/README.md#games

Changelog

V0.6.4 2023/10/25

  • Added alternate joypad layout.
  • Fixed unsigned mul on ASWAN.
  • Fixed immediate mul.
  • Fixed 32/16 division.
  • Fixed IO register differences between mono/color mode.
  • Optimized 16-bit signed mul.

V0.6.3 2023/09/24

  • Fixed value of SP when running without boot rom.
  • Fixed boot rom behavior for PCV2.
  • Fixed SLOT-2 RAM support for EZ-Flash 3-In-1.
  • Optimized IO port writing.
  • Optimized some opcodes.
  • Tweaked EEPROM handling.

V0.6.2 2023/09/03

  • Added SLOT-2 RAM support.
  • Added IPS patch functionality.
  • Added power on/off ability.
  • Fixed correct frame-rate without "Allow Refresh Change".
  • Fixed sound mixing.
  • Optimized mapper writing.

V0.6.0 2023/08/05

  • Added per line emulation of Display Control register.
  • Added per line emulation of FG Window register.
  • Added per line emulation of Map Address register.
  • Added differences for the 2 cart mappers.
  • Optimized tile map rendering.
  • Optimized cpu core.

V0.5.2 2023/04/22

  • Fixed controls for PCV2.
  • Fixed WS sound levels.
  • Fixed WS sound icon.
  • Fixed save state.
  • Added more BnW palettes.

V0.5.1 2023/03/10

  • Fixed noise calculation.
  • Fixed BnW palettes.
  • Added setting for border.

V0.5.0 2023/03/01

  • Fixed reset of mapper registers.
  • Fixed loading of roms that are not power of 2.
  • Fixed timing of several opcodes.
  • Fixed timing of interrupts.
  • Fixed timing of address calculations.
  • Fixed some cpu opcodes.
  • Fixed interrupt handling.
  • Fixed timers.
  • Fixed sweep on sound channel 3.
  • Fixed noise feedback selection.
  • Fixed sound sample playback.
  • Optimized cpu core a bit.
  • Added support for serial port interrupts.
  • Added support for battery low.
  • Added new debug menu.
  • Linked NDS battery to WS battery.
  • Better menu traversing.

V0.4.1 2022/08/15

  • Fixed background for PCV2 mode.
  • WS refresh rate can control NDS refresh rate.

V0.4.0 2022/08/11

  • Fixed flag calculation for most opcodes.
  • Fixed emulation of undefined opcodes.
  • Fixed settings to disable Bg,Fg & Spr.
  • Fixed default sound volume on WSC/SC.
  • Optimized the cpu core.
  • Tweaked behaviour of timers.
  • Mute Ch2 when playing samples.

V0.3.6 2022/04/20

  • Fixed sound DMA a bit.
  • Added savestates.
  • Added sound button (Select).

V0.3.5 2022/03/09

  • Added RTC emulation.
  • Added a border to emu screen.
  • Better mapping of input.
  • Optimized graphic redraw.
  • Optimized PC/IP handling in cpu core.

V0.3.0 2022/02/10

  • Added banked SRAM emulation.
  • Fixed zip decompression buffer size.
  • Optimized cycle counting.
  • Optimized Program Counter.
  • Optimized memory access.
  • Optimized opcodes.

V0.2.0 2022/01/20

  • Completed the rewrite of the cpu core in ARM asm.

V0.1.3 2022/01/09

  • Rewrote parts of the cpu core in asm.

V0.1.2 2021/12/18

  • Backgrounds works.
  • Sprites works.
  • Mono mode works.
  • Fixed Interrupts and Timers.
  • Added EEPROM emulation.
  • Added loading of bootrom for both WS & WSC.
  • Added loading/saving of sram/eeprom.
  • Added sound.
  • Fixed interrupt routine in CPU.

V0.1.1 2021/10/17

  • Started port to Nintendo DS & devkitPro.

V0.1.0 2006/07/28

  • Initial release.

V0.0.0 2006/07/23

  • Started Coding.

Credits

Huge thanks to Loopy for the incredible PocketNES.

Thanks to:

  • Flavor & Koyote for WonderSwan info.
  • Godzil for the boot rom stubs.
  • lidnariq for RTC info.
  • Dwedit for help and inspiration with a lot of things.

External links

Advertising: