Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Vice3DS

From GameBrew
Revision as of 04:23, 15 September 2021 by HydeWing (talk | contribs)

Template:Infobox-3DS-Homebrews

vice3ds

This is a port of the VICE C64 (x64) emulator v3.3 to Nintendo 3DS with a lot of 3DS-specific goodies and added functionality. VICE - the Versatile Commodore Emulator - http://vice-emu.sourceforge.net/

@spinal_cord made a C64 emulator (Breadbox) based on Frodo but it does not work anymore with recent firmwares and he is not updating it anymore, so I gave it a shot to port the Vice C64 emulator v3.3 to the 3DS. Vice does support SDL1 but porting was not quite as easy as "just compile": A new sounddriver for the 3DS needed to be written, devkitpro libraries do not support all functionality required by full fledged Vice (so I had to strip them in quite some places) and lots of other things that needed tweaking or adaption. Apart from this, the 3DS needed a UI for the bottom screen, so this had to be written from scratch. Moreover, a lot of new & 3DS-exclusive functionality was added (check the release notes below).

Screenshots

VICEC64-02.png

Installation

Install .cia file with FBI - or - copy .3dsx file to /3ds/vice3DS-C64 directory on your SD card and launch in HBL - or - launch .3ds file from flashcard. Apart from this, a DSP-dump is required for sound to work correctly in the CIA version. https://gbatemp.net/threads/dsp1-a-new-dsp-dumper-cia-for-better-stability.469461/

Usage

Preconfigured button functions:

  • Select: open Vice menu
  • Start: open Gamebase64 launcher
  • Directional Pad / A-Button: Joystick
  • B-Button: Joystick Up
  • R-button: Autofire. Within vice menu, R-button starts the mapping of a hotkey.
  • C-Stick: cursor keys
  • L/ZL-buttons: left/right mouse buttons if mouse is enabled.
  • 3D-slider: Emulation speed (0 = 100%, max = Warp-mode)
  • Soft buttons functions (from left to right, top to bottom) :
    • Autostart image
    • Hit RUN/STOP - RESTORE
    • Toggle joystick ports
    • Toggle C-Pad / D-Pad for joystick
    • Warp Mode
    • Quickload snapshot
    • Quicksave snapshot
    • Toggle True Drive Emulation
    • Hard Reset
    • Pause emulation
    • Attach disk image to drive 8
    • Toggle Sprite-Sprite collisions
    • Power off bottom screen backlight
    • Type command: LOAD\"*\",8,1 - RUN
    • Type command: LOAD\"$\",8 - LIST
    • Hit RUN/STOP
    • Hit SPACE
    • Hit RETURN
    • Enable Mouse
    • Toggle No borders / Fullscreen

This (and a lot of other things) can be changed in Vice menu. To change the mapping of a soft button (or actually any other button incl. all the 3DS- and soft keyboard buttons) to a menu item in Vice menu, press the R-button when the menu item is selected, then touch/press the button. This button will now be mapped to the selected menu entry.

From v1.6 on, Vice3DS will run with acceptable framerates (~20 fps with fastSID emulation) on O3DS. However, a N3DS is recommended: Only here, you will get the full 50fps and incredible reSID sound.

Changelog

v2.4.1 Senbei

  • enhancement: netplay is now possible
  • optimization: issue warning at startup if 3D-slider is not set to OFF
  • bugfix: no more sound errors on resume after pressing home button
  • bugfix: fix gamebase64 launcher crash if more than 64 games are downloaded

v2.3 Mochi

  • enhancement: gamebase64 launcher now works on O3DS with reduced database size (and lots of other memory optimizations)
  • enhancement: auto switch to (hopefully) correct joyport/control scheme when starting a game in gamebase64 launcher
  • enhancement: new joystick handling (only 1 joystick, plugable in p1/p2 and switchable between dpad/cpad, B-button = joy up, R-button = autofire)
  • enhancement: auto-switching PAL/NTSC / TDE / Control scheme in gb64 launcher can now be turned off
  • enhancement: soft button positions are now saved in snapshot files when saving configuration
  • enhancement: volume can now be increased to 200%. This will make some games more audible but will most probably result in sound distortions for most games.
  • enhancement: VICE menu cleanup & restructure
  • enhancement: all downloads are a lot faster
  • enhancement: if no fliplist is active, the currently attached image directory or current directory is automatically a fliplist
  • enhancement: cracker group info in gb64 database/screen
  • enhancement: list of "popular" games extended in gamebase64 launcher
  • enhancement: issue UI warnings if true drive emulation is disabled but a program needs it
  • optimization: START button now starts gb64 launcher, moved rs/restore soft button back to top, included "enable mouse" in soft buttons again
  • optimization: removed lots of unused or unnecessary vice code
  • optimization: remove cartridge before autostarting an image if not default cartridge
  • optimization: true drive emulation enabled by default but autostart initially loads without TDE
  • optimization: autostart will not require selecting a file within the image anymore, new menu entry "autostart file in image"
  • optimization: numbers in download/installation progress now better readable
  • optimization: Option to turn off database update prompts in gamebase64 launcher
  • optimization: directory structure for downloaded games now resembles gb64 structure
  • optimization: make statusbar wider & remove keyboard status bar (who needs this anyways?)
  • optimization: Default drive idle method is "None" for N3DS and "Skip cycles" for O3DS
  • optimization: game files are directly downloaded with ftp from 8bitfiles.net, not over http proxy anymore (needs a custom build version of libcurl, fincs does not want to fix it in devkitARM https://github.com/devkitPro/pacman-packages/issues/130 )
  • bugfix: no more freeze/crash when switching from/to fullscreen multiple times
  • bugfix: last selected file was not always identified correctly in file dialog
  • bugfix: no more crash when restoring default settings on NTSC machine
  • lots of other bugfixes and small enhancements

v2.2 Onigiri

  • enhancement: gamebase64 UI
  • optimization: setting AutostartHandleTrueDriveEmulation turned on per default
  • bugfix: key mappings were not saved correctly
  • bugfix: icon generation for "L btn", "ZL btn" etc did not work as expected
  • bugfix: Emulation was paused after installing a memhack
  • bugfix: When autostarting two tape images, the second image would not RUN automatically
  • many other small enhancements, optimizations and bug fixes

v2.1 Congee

  • enhancement: Online-Updater
  • enhancement: Key mappings now support multiple target keys, key combos are obsolete & removed
  • enhancement: "Settings management" menu - added option to hide menu button on bottom screen
  • enhancements for building custom vice3ds games:
    • if file romfs:/prefix.txt exists, changes default directory on SD card to /3ds/vice3DS-C64/<contents of file>
    • added "ChgRootDirectory" resource to change root of file selection dialog
    • added "AutostartImage" resource to specify exact location of autostart image
    • at startup, all files in romfs:/autocopy will be copied to default dir without overwriting existing files
    • Custom help texts for keys (configurable in in menu "Help")
  • some other small enhancements, optimizations and bug fixes

v2.0 Screw Driver

  • enhancement: vice menu moved from top to bottom screen, emulation does not pause anymore while menu is open
  • enhancement: vice menu now useable with stylus
  • enhancement: customizeable C64 keyboard command shortcuts
  • enhancement: show hint about how to exit edit sbuttons mode
  • enhancement: "power off bottom screen" is now a toggle button
  • enhancement: file sorting now case insensitive
  • enhancement: vice3DS checks for autostart.*-files in romfs:/ and vice directory and autostarts at startup
  • enhancement: autofire can now be configured in the joystick keysets
  • enhancement: support of zip files for autostart
  • enhancement: configurable key combos
  • optimization: cancel-key moves one directory up in file dialog
  • optimization: move statusbar menu entry back to original location (main menu)
  • optimization: changed button functions in menu: map hotkey with R-button, press L-button to use the emulation while menu is active
  • optimization: smooth scrolling scroll bar in menu, file and imgfile dialog
  • optimization: speed reducion/speedup ranges in slider adjusted
  • optimzation: passing end/beginning in file/imgfile dialog wraps the cursor to beginning/end
  • bugfix: removed monitor from cpujam messagebox
  • bugfix: sometimes d64 files were corrupted after autostart
  • bugfix: fixed crash when closing the 3ds lid, home button works now
  • multiple bugfixes in file selection dialog, screen update routine
  • lots of other bugfixes, optimizations and small enhancements

v1.6 Espresso

  • enhancement: major performance increase by optimizing and merging top (SDL) and bottom (citro3D) screen update routines
  • enhancement: reSID sound engine support. Default engine is fastSID for O3DS, reSID for N3DS. reSID is more performance-hungry than fastSID, but sound is by far better. To change this setting, open VICE menu and go to "Machine settings" -> "Model settings" -> "SID settings" -> "SID model"
  • enhancement: new help screen to show all current button functions (in emu and in menu)
  • enhancement: soft button positions can now be changed by activating edit-mode (VICE menu: "Misc" -> "Edit bottom screen button positions") and dragging the soft buttons with the stylus. New positions are saved when saving settings
  • enhancement: applying default setting will not require restart anymore
  • enhancement: config files (vicerc, ROMs, icons etc.) are stored internally per default, files on SD card override internal files. Added menu entry in "Settings" menu to copy all internal config files to SD card.
  • optimization: remove SDL joystick - all 3ds buttons and pad directions are now "keys" for vice3DS. These keys can be mapped to C64-joysticks via definition of keysets.
  • optimization: define all default settings in code, no sdl-vicerc config file needed anymore
  • optimization: optimize compiler flags for speed
  • bugfix: eliminated sound distortions when using bottom screen (result of performance increase)
  • bugfix: some soft buttons wouldn't unstick, fixed bug in MaxScreen softbutton
  • multiple other small enhancements, optimizations and bug fixes

v1.5 Cappuccino

  • spin-off: Exerimental C128-emulator (.3dsx only). It runs ok, but VDC-mode is painfully slow. https://gbatemp.net/threads/release-vice3ds-c128-c128-emulator.545436/
  • enhancement: added sampler device "3DS built in microphone audio input". Haven't you always wished to record 4bit samples with your 3DS that you can play on your C64 computer?
  • enhancement: added sampler settings menu & other devices for joyports
  • enhancement: add 'advance frame' menu entry to vice menu
  • enhancement: show mouse button mappings on touchpad
  • optimization: optimized keyboard handling (e.g. c-stick mapping & file dialogs)
  • optimization: remove RS232 stuff from vice menu (wasn't working anyway)
  • optimization: revamp build system, no more buildtools necessary


v1.4 Cereal

  • enhancement: speed up directory loading times in file selection dialogs
  • enhancement: enabled mouse support / bottom screen is now a touchpad when mouse is enabled, L- and ZL-buttons are mapped to left and right mouse button per default. Mouse sensitivity configurable. Tested for hours with Arkanoid :-)
  • enhancement: create button mappings in "Misc" menu (key->key, key->joy, key->mousebutton), icons for mapped soft buttons are auto-generated. Now, B-button can be mapped to Joy-UP easily ...
  • enhancement: added option to save key mappings and hotkeys in snapshots
  • enhancement: added hotkey management entries in menu "Misc" (list hotkeys, unmap hotkey). Haven't you wished to easily get rid of your hotkey mappings?
  • enhancement: cleaned up "Settings management" menu, hotkeys are now saved with other settings in file sdl-vicerc.
  • enhancement: added menu entry/icon for no borders & fullscreen. No more magnifying glasses needed when playing.
  • enhancement: added video size menu (fullscreen with multiple stretch options, etc.)
  • enhancement: added video border mode menu
  • enhancement: new icon (yay!)
  • enhancement: status bar now on bottom of emulator screen (like standard SDL-Vice)
  • optimization: moved button to create hotkey mapping from ZL-button to L-button
  • lots of other small enhancements and bug fixes

v1.3 Pancake

  • enhancement: button to show/hide the keyboard, more soft buttons below keyboard
  • enhancement: pixel perfect screen representation (required change in libSDL, thanks to @Vague Rant)
  • enhancement: paint color keys on keyboard with palette colors
  • enhancement: added help menu
  • enhancement: remember current directory for file dialogs across restarts
  • enhancement: standard soft button icons are copied to SD-card at startup, they can now be modified/amended by the user
  • enhancement: added some more helper menu entries in menu "Misc"
  • enhancement: added some soft button icons
  • bugfix: no more freeze when exiting via home or power button
  • bugfix: roms added for all C64 machine types
  • bugfix: re-center display after machine type change
  • optimization: stripped some unnecessary code (vkbd, hvsc)

v1.2.1 Bacon&Eggs

  • fix random lock-ups (was actually a bug in libSDL)
  • fix for "not possible to select external palette files"
  • fix for "crackling sound when using keyboard"
  • fix for "not possible to change back to stock rom from another rom"
  • fix for "menu entry 'Restore default settings' messes up screen"
  • added menu entry/icon 'Misc/Power off bottom screen backlight'
  • added two icons for sprite collision menu entries
  • added menu entry to restore all default settings (incl. hotkeys etc)
  • quicksave/-load now always saves to/loads from /3ds/vice3ds
  • added "RUN" to LOAD"*",8,1 menu entry
  • Added F2/F4/F6/F8 keys to keyboard for easy access
  • Added pause icon / ability to pause via soft button
  • Nice new banner / startup logo
  • other minor bugfixes and optimizations

v1.1 Breakfast Toast

  • Customizeable soft buttons on bottom screen.
  • Changed standard assignment of autofire buttons: Joy1=R, Joy2=ZR
  • True drive emulation now turned off by default
  • Emu-speed adjustable with 3d slider (0=100%, max=Warp)
  • Added menu 'Misc' with some helpers: RUN/STOP + RESTORE; LOAD"*",8,1
  • Bugfix for loading external ROMs and other sysfiles

v1.0.1 Sunshine

  • clearer keyboard
  • bugfix for "Vice menu sometimes does not update screen when navigating"
  • bugfix for autofire

v1.0 Morning Glory

  • Autofire support (configurable in VICE menu under "Machine settings" -> "Joystick settings")
  • New keyboard layout
  • Bugfixes

v0.9 beta

  • Bugfixes
  • CIA/3DS build

v0.4

  • Larger keyboard / keys
  • Configuration files in romfs - will be copied to SD card if not existing there.
  • Key names showing correctly now in vice menu
  • vice3DS now exits gracefully when pressing the menu button
  • Show drive status in notification LED (settings in "Drive" menu)
  • v0.3 was accidentally a debug build, so v0.4 is faster

v0.3

  • OSK works now in vice menu when inputting file names
  • new, flashy background and keyboard images compiled in binary
  • removed some menu entries that will break things on 3ds
  • C-stick/ZL/ZR working, C-Stick mapped to cursor keys
  • status bar (can be activated in menu "Settings management")
  • when switching machines, bottomscreen is no more blanked

v0.2

  • On screen keyboard on bottom screen

v0.1 Dawn of Vice3DS

Compiling

You need devkitARM (provided by devkitPro) and the following packages: 3ds-zlib, 3ds-curl, 3ds-libpng, 3ds-bzip2 and - optionally - graphicsmagick. Without graphicsmagick, no version numbers will be included in the icon and bottom screen images.

Install these packages with pacman / dkp-pacman:

Windows:

pacman -S 3ds-zlib 3ds-curl 3ds-libpng 3ds-bzip2 optional:

pacman -S graphicsmagick Linux:

[sudo] pacman -S 3ds-zlib 3ds-curl 3ds-libpng 3ds-bzip2 optional:

[sudo] apt-get install graphicsmagick

Actually, a modified version of 3ds-curl is required for game downloads to work with the gamebase64 launcher. The 3ds-curl version provided by devkitPro is buggy and @fincs does not want to fix it. Please see https://github.com/devkitPro/pacman-packages/issues/130 for details. Providing instructions for compiling this modified 3ds-curl version, however, would go beyond the scope of this README.

Apart from this, bannertool (https://github.com/Steveice10/bannertool/releases) and makerom (https://github.com/profi200/Project_CTR/releases) should be available in your path.

Clone the repository (including symlinks) and change into the directory:

git clone -c core.symlinks=true https://github.com/badda71/vice3ds cd vice3ds If you received any error messages regarding symlinks during cloning, execute copylinks.sh to correct the symlinks

chmod +x copylinks.sh ./copylinks.sh Finally, start the compile with the command

make

Thanks to:

  • The Vice-Team of course
  • @Elwyndas for the good ideas on how to make this project better, for the great test support and for sending me the O3DS so I can test there, too!
  • www.gamebase64.com for providing the C64 games library and an easy way to integrate
  • @nop90 for the 3DS libSDL port - porting VICE to 3DS would not have been possible without it (even though I had to tweak it in a couple of places ...)
  • @spinal_cord for breadbox, the keyboard images and design ideas
  • @thealgorithm for providing the essential clue on how to enable reSID support

Advertising: