Wii2600

A forum to discuss Wii homebrew development.
User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Wii2600

Post by raz0red » Thu Feb 12, 2009 11:34 am

A port of the Stella (VCS/2600) emulator for the Wii.

Current production release (v0.2):

https://github.com/raz0red/wii2600/rele ... 00-0_2.zip (Binaries)
https://github.com/raz0red/wii2600/archive/0.2.tar.gz (Source)

Wiki (Wiibrew):

http://www.wiibrew.org/Wii2600

Code: Select all

--------------------------------------------
Wii2600 v0.2 release README
--------------------------------------------

Ported by raz0red
[http://www.twitchasylum.com]

--------------------------------------------
What is Wii2600?
--------------------------------------------

Wii2600 is a port of the Stella 2.7.2 emulator to the Wii.

Stella is a multi-platform Atari 2600 VCS emulator released under the GNU 
General Public License (GPL). Stella was originally developed for Linux by 
Bradford W. Mott, however, since its original release several people have 
joined the development team to port Stella to other operating systems such 
as AcornOS, AmigaOS, DOS, FreeBSD, IRIX, Linux, OS/2, MacOS, Unix, and 
Windows. [http://stella.sourceforge.net].

--------------------------------------------
Current status
--------------------------------------------

Wii2600 is an ongoing work in progress. For the latest project information
please visit the following URL:

[http://www.wiibrew.org/wiki/Wii2600]

--------------------------------------------
Known issues
--------------------------------------------

    - Displaying rom info w/ screenshots makes browsing slow
    - The colors are incorrect for screenshots taken at 1x

--------------------------------------------
Installation
--------------------------------------------

To install Wii2600, simply extract the zip file that this README was 
distributed with directly to your SD card (retain the hierarchical structure
exactly).

Cartridge images should be placed in the roms directory (wii2600/roms).

--------------------------------------------
Tearing, Vertical Sync, PAL/NTSC, etc.
--------------------------------------------

Without the use of Vertical Sync, 2600 games that scroll (Barnstorming, River
Raid, etc.) will exhibit tearing during game play.

The first time Wii2600 is started it attempts to determine whether your Wii is
running in PAL (50hz) or NTSC/PAL60 (60hz) mode. Based on this determination it
sets a default value for Vertical Sync. 

NTSC/PAL60:

If Wii2600 determines you are in NTSC/PAL60 mode (60hz) it enables Vertical
Sync by default. This should work well for both NTSC and PAL games. PAL games
run fine due to the fact that they run at a slower rate than NTSC.

PAL:

If Wii2600 determines you are currently in PAL mode (50hz) it disables Vertical
Sync by default. The reason it disables this setting is to be compatible with
both PAL and NTSC games at 100% speed. Since the Wii console is syncing at 50hz 
it won't be able to maintain the required 60hz for NTSC games and as a result 
you will get garbled sound and slow video.

If you still want to use Vertical Sync, you can enable it via the "Advanced" 
menu in Wii2600. PAL games will run as they were intended, 50hz at 100% speed.
Wii2600 also configures another setting "Force FPS" to "50 FPS" when you enable
Vertical Sync in PAL mode. What this setting does is control the frame rate
that games run at. Essentially what it will do is force all games (NTSC or
PAL) to run at 50 FPS. In doing so it also adjusts audio buffer sizes, etc. so
that you won't experience garbled sound. The downside is that NTSC games will
now run at 50 FPS versus their intended 60 FPS, so the games will run a bit 
slower.

The real answer to resolve these issues is to add auto-frame skipping to 
Stella. That is definitely something I will be looking to add in an upcoming
release. 

--------------------------------------------
Paddle controls
--------------------------------------------

Wii2600 supports three different modes for emulating paddles support ("Roll",
"IR", and "Analog"). For complete details see the controls section below. 

In most cases Stella will automatically enable paddle support for the selected
rom. However, in cases where it doesn't, you must configure paddle support 
manually. This is accomplished via the "Controller" tab found in the "Game 
Properties" menu of the "Options" (found in the main rom browser). For the P0 
or P1 controllers specify Paddles instead of Joystick, etc. 

It is also important to note how Wii2600 allocates the controls when Paddles 
are selected. If P0 is set to be paddles, then Wii controllers 1 and 2 will map
to the two paddles that are that are plugged into the virtual P0. If P1 is 
also set to paddles then controllers 3 and 4 will represent the two paddles 
that are plugged into P1. However if P0 is set to be paddles and P1 is set to
be a joystick, then Wii controller 3 will represent the joystick (1 and 2 will
represent paddles). If P1 is set to joystick and P2 is set to paddles then Wii
controller 1 will be the joystick while 2 and 3 will represent the paddles.

--------------------------------------------
Controls
--------------------------------------------

    Wii2600 menu:
    -------------

        Wiimote:

            Up/Down  : Scroll
            A        : Select 
            B        : Back
            Home     : Exit to Homebrew Channel
            Power    : Power off

         Classic controller:

            Up/Down  : Scroll
            A        : Select 
            B        : Back
            Home     : Exit to Homebrew Channel
            
         Nunchuk controller:

            Up/Down  : Scroll
            C        : Select 
            Z        : Back
                  
         GameCube controller:

            Up/Down  : Scroll
            A        : Select 
            B        : Back
            Z        : Exit to Homebrew Channel
            
    Stella emulator menu:
    ---------------------
    
    Unfortunately, at this point all navigation of the Stella menu is done via
    the Wiimote without the use of motion controls. Thus, the '+' and '-' 
    buttons allow for tabbing through the different controls. Pressing the 'A'
    button operates the current control, etc.
    
        Wiimote:

            +           : Move forward through controls
            -           : Move backward through controls
            Up/Down     : Scroll (when focused on a list or slider, etc.)
            Left/Right  : Page through list (when focused on list control)
            Left/Right  : Move between tabs (when focused on a tab in a dialog)
            A           : Operates current control (presses button, launch rom)
            B           : Closes current dialog
            Home        : Exit to Homebrew Channel

         Classic controller:

            +           : Move forward through controls
            -           : Move backward through controls
            R Trigger   : (Alternate) Move forward through controls
            L Trigger   : (Alternate) Move backward through controls
            Up/Down     : Scroll (when focused on a list or slider, etc.)
            Left/Right  : Page through list (when focused on list control)
            Left/Right  : Move between tabs (when focused on a tab in a dialog)
            A           : Operates current control (presses button, launch rom)
            B           : Closes current dialog
            Home        : Exit to Homebrew Channel
            
         Nunchuk controller:

            Up/Down     : Scroll (when focused on a list or slider, etc.)
            Left/Right  : Page through list (when focused on list control)
            Left/Right  : Move between tabs (when focused on a tab in a dialog)
            C           : Operates current control (presses button, launch rom)
            Z           : Closes current dialog
                  
         GameCube controller:

            R Trigger   : Move forward through controls
            L Trigger   : Move backward through controls
            Up/Down     : Scroll (when focused on a list or slider, etc.)
            Left/Right  : Page through list (when focused on list control)
            Left/Right  : Move between tabs (when focused on a tab in a dialog)
            A           : Operates current control (presses button, launch rom)
            B           : Closes current dialog
            Z           : Exit to Homebrew Channel
            
         USB keyboard:
         
            Refer to Stella emulator documentation.             
            
    In-game (Joystick/Driving):
    ---------------------------

        Wiimote:

            D-pad         : Move
            2             : Fire
            1             : Open/close command menu (save/load state, etc.)
            +             : [Reset]
            -             : [Select]
            A             : [Toggle Color/BW mode]
            Home          : Display Stella menu (see above)

         Classic controller:

            D-pad/Analog  : Move
            A             : Fire
            Y             : Open/close command menu (save/load state, etc.)
            +             : [Reset]
            -             : [Select]
            R Trigger     : [Toggle Color/BW mode]
            Home          : Display Stella menu (see above)
            
         Nunchuk controller:

            Analog        : Move
            C/Z           : Fire            
                  
         GameCube controller:

            D-pad/Analog  : Move
            A             : Fire
            Y             : Open/close command menu (save/load state, etc.)
            Start         : [Reset]
            L Trigger     : [Select]
            R Trigger     : [Toggle Color/BW mode]
            Z             : Display Stella menu (see above)
           
         USB keyboard:
         
            Refer to Stella emulator documentation.             
            
    In-game (Paddle - "Roll" mode):
    -------------------------------
    
    In this paddle mode, you hold the Wiimote horizontally and twist it forward
    and backward (like the Wiiware game Bit Trip Beat). You can set the 
    sensitivity and center of this mode via the "Controls" menu. You should 
    definitely adjust the settings until you find one that is comfortable. For 
    example, I like to adjust the center way forward (+5) because I find it 
    easier to push the fire button for games like Warlords, etc. Also, I 
    adjust the sensitivity up to about 7. Since the Wiimote doesn't have to be
    pointed directly at the sensor bar for this mode to work, it works wll on
    all styles of paddle-based games (Kaboom!, Warlords, Video Olympics, etc.).
        
        Wiimote:

            Roll    : Move 
            A/B/2   : Fire
            1       : Open/close command menu (save/load state, etc.)
            +       : [Reset]
            -       : [Select]
            Home    : Display Stella menu (see above)    

                
    In-game (Paddle - "IR" mode):
    -----------------------------
    
    In this paddle mode, you point the Wiimote at the Wii sensor bar and move 
    it left and right. You can set the sensitivity of this mode via the 
    "Controls" menu. This mode requires that the Wiimote be pointed directly
    at the screen, thus it is typically better suited for horizontally oriented
    single-player style games (Kaboom!, Breakout, etc.).
        
        Wiimote:

            IR      : Move 
            A/B/2   : Fire
            1       : Open/close command menu (save/load state, etc.)
            +       : [Reset]
            -       : [Select]
            Home    : Display Stella menu (see above)    
            
            
    In-game (Paddle - Analog joystick mode):
    ----------------------------------------
    
    In this paddle mode, move the Analog joystick left and right (or up and 
    down, see controls menu) to control the paddle. It is important to note 
    that the joystick selected to use for this mode is based on priority. If 
    you have a Nunchuk or Classic controller plugged into the Wiimote, that 
    Analog control will be used. If neither of those are currently plugged in,
    the Gamecube analog control will be used.
        
         Classic controller:

            Analog        : Move
            A             : Fire
            Y             : Open/close command menu (save/load state, etc.)
            +             : [Reset]
            -             : [Select]
            Home          : Display Stella menu (see above)
            
         Nunchuk controller:

            Analog        : Move
            C/Z           : Fire
            
        Wiimote (used w/ Nunchuk):

            A/B/2         : Fire
            1             : Open/close command menu (save/load state, etc.)
            +             : [Reset]
            -             : [Select]
            Home          : Display Stella menu (see above)
                  
         GameCube controller:

            Analog        : Move
            A             : Fire
            Y             : Open/close command menu (save/load state, etc.)
            Start         : [Reset]
            L Trigger     : [Select]
            Z             : Display Stella menu (see above)

--------------------------------------------
Wii2600 crashes, code dumps, etc.
--------------------------------------------

If you are having issues with Wii2600, please let me know about it via one of 
the following locations:

[http://www.wiibrew.org/wiki/Talk:Wii2600]
[http://www.twitchasylum.com/forum/viewtopic.php?t=513]

--------------------------------------------
Special thanks
--------------------------------------------

munky6           : Lead tester
RB22             : PAL testing (0.1)
zodiacprime      : Testing (0.1)
Sputicus         : Helping bug fix (0.1)
Tantric/eke-eke  : Audio code example
yohanes          : SDL USB keyboard support
Team Twiizers    : For enabling homebrew

--------------------------------------------
Change log
--------------------------------------------

05/03/09 (0.2)
-------------------
    - 4-player paddle support
    - Ability to set the paddle mode to use (Roll, IR, or Analog joystick)    
    - Wiimote "Roll" paddle mode (similar to Bit Trip Beat)
    - Ability to set "Roll" paddle mode sensitivity and center
    - Wiimote "IR" paddle mode (rewritten since 0.1) 
    - Ability to set "IR" paddle mode sensitivity
    - Analog joystick horiz/vert paddle mode (Classic, Nunchuk, Gamecube) 
    - Ability to set analog paddle mode sensitivity
    - Analog joystick control support (in game and during menu navigation) 
    - Driving control support (via d-pads and analog controls)     
    - Ability to toggle color/BW modes from controller (Starmaster, etc.)
    - Improved sound support
    - Fixed bug that caused some games to always display at 1x (versus 2x)
    - Fixed emulation of select/reset buttons (you can now hold them down)
    - Added ability to display rom info (screenshots) when browsing (slow)

02/19/09 (0.1)
--------------
    - Initial release
    - Wiimote/Classic/GameCube controller support
    - Mouse via Wiimote for paddle games (proof of concept)
    - USB Keyboard
    - Audio/Video etc.    
    - Save/load state
    - Screenshot support
    
    
--Raz.
Last edited by raz0red on Mon May 04, 2009 10:12 am, edited 16 times in total.

zodiacprime
Posts: 65
Joined: Sat Mar 25, 2006 9:54 pm
Location: Seattle
Contact:

Post by zodiacprime » Mon Feb 16, 2009 3:54 pm

As with your other WiiBrew ports, this early release really impresses. I couldn't find any fault as I waded through a few dozen of my favorite games. I'll tell you man, I was so accustomed to playing these through my vintage setup (mono) that I was pretty blown away by some of the music/sfx on some of my what-I-thought-to-be-familiar games as the subwoofer really added some punch (e.g., Revenge of the Apes, Cosmic Ark)!

Q: Will this currently work with Vendel's new Classic USB Joystick? I'm expecting mine to arrive any day now and would love to plug in an play... also has anyone tried the stelladaptor? Thanks.
-zp

EDIT: originally said "Planet of the Apes"... that one doesn't doesn't have music :wink:
Last edited by zodiacprime on Tue Feb 17, 2009 3:00 pm, edited 1 time in total.

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Mon Feb 16, 2009 7:29 pm

zodiacprime wrote:As with your other WiiBrew ports, this early release really impresses. I couldn't find any fault as I waded through a few dozen of my favorite games. I'll tell you man, I was so accustomed to playing these through my vintage setup (mono) that I was pretty blown away by some of the music/sfx on some of my what-I-thought-to-be-familiar games as the subwoofer really added some punch (e.g., Planet of the Apes, Cosmic Ark)!

Q: Will this currently work with Vendel's new Classic USB Joystick? I'm expecting mine to arrive any day now and would love to plug in an play... also has anyone tried the stelladaptor? Thanks.
-zp
I haven't tested with any other joysticks than the Wiimote/Classic controller/Gamecube. I will definitely check out the new Joystick and see what I can do, that would be very cool. I don't think anyone has tried the stella adapter.

Also, if you want to test my latest pre-build let me know. I would like to release in the next couple of days, but would like some other eyes on it before I send it out there. It now has vertical sync which makes games like Barnstorming and River Raid a lot smoother. I also have added the ability to Adjust Gamma, it now uses the correct palette and there are some audio improvements.

Let me know and I will post a URL.

Thanks.

--Raz.

zodiacprime
Posts: 65
Joined: Sat Mar 25, 2006 9:54 pm
Location: Seattle
Contact:

Post by zodiacprime » Mon Feb 16, 2009 9:31 pm

raz0red wrote:Also, if you want to test my latest pre-build let me know.
Sure. I'll kick the tires and take it for a spin.

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Mon Feb 16, 2009 9:34 pm

zodiacprime wrote:
raz0red wrote:Also, if you want to test my latest pre-build let me know.
Sure. I'll kick the tires and take it for a spin.
Cool. Thanks a lot. I will post a link to a new build here in the morning.

--Raz.

zodiacprime
Posts: 65
Joined: Sat Mar 25, 2006 9:54 pm
Location: Seattle
Contact:

Post by zodiacprime » Tue Feb 17, 2009 9:54 am

raz0red wrote:When you run it, if you would, please go into the "Advanced" menu. In that menu let me know what the default value for "Vertical Sync" is (should be enabled). Also, what is the Test FPS?
Thanks Raz, looks good. the info:

Vsync is "Enabled"
Test FPS = 16.525000 (NTSC)

- I tried to simply take a pic of the screen, but my camera crapped out on me. - I'll give it more of a workout after work today. Good luck!

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Tue Feb 17, 2009 11:05 am

zodiacprime wrote: Thanks Raz, looks good. the info:

Vsync is "Enabled"
Test FPS = 16.525000 (NTSC)

- I tried to simply take a pic of the screen, but my camera crapped out on me. - I'll give it more of a workout after work today. Good luck!
Cool, that is as expected. Thanks a lot for helping test it out.

--Raz.

Ebf18
Posts: 11
Joined: Thu Feb 19, 2009 5:07 pm

Post by Ebf18 » Thu Feb 19, 2009 5:13 pm

There are some 2600 games(Starmaster for example) that use the B/W-Color switch to access certain screens in the game. Is there any way to implement this into the emulator?? Thanks

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Thu Feb 19, 2009 5:42 pm

Ebf18 wrote:There are some 2600 games(Starmaster for example) that use the B/W-Color switch to access certain screens in the game. Is there any way to implement this into the emulator?? Thanks
There are a couple ways to achieve this.

If you go into the options panel, you can select between black and white and color modes which will toggle the star map. To get to the options panel you can use the following:

1 Button : WiiMote
Y Button : Classic and GameCube controller

In addition, if you hook up a USB keyboard you can swap between color and BW modes using the F3 and F4 keys.

--Raz.

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Thu Feb 19, 2009 5:45 pm

raz0red wrote:
Ebf18 wrote:There are some 2600 games(Starmaster for example) that use the B/W-Color switch to access certain screens in the game. Is there any way to implement this into the emulator?? Thanks
There are a couple ways to achieve this.

If you go into the options panel, you can select between black and white and color modes which will toggle the star map. To get to the options panel you can use the following:

1 Button : WiiMote
Y Button : Classic and GameCube controller

In addition, if you hook up a USB keyboard you can swap between color and BW modes using the F3 and F4 keys.

--Raz.
I will definitely add mapping those buttons to the Classic/GameCube controller in a subsequent release.

--Raz.

Ebf18
Posts: 11
Joined: Thu Feb 19, 2009 5:07 pm

Post by Ebf18 » Fri Feb 20, 2009 7:59 am

raz0red wrote:
raz0red wrote:
Ebf18 wrote:There are some 2600 games(Starmaster for example) that use the B/W-Color switch to access certain screens in the game. Is there any way to implement this into the emulator?? Thanks
There are a couple ways to achieve this.

If you go into the options panel, you can select between black and white and color modes which will toggle the star map. To get to the options panel you can use the following:

1 Button : WiiMote
Y Button : Classic and GameCube controller

In addition, if you hook up a USB keyboard you can swap between color and BW modes using the F3 and F4 keys.

--Raz.
I will definitely add mapping those buttons to the Classic/GameCube controller in a subsequent release.

--Raz.
Is it possible to map the function to one button, like the B button on the Wiimote, and have it work like a toggle function so that it switches back and forth using one button?? Thanks

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Fri Feb 20, 2009 8:07 am

Ebf18 wrote: Is it possible to map the function to one button, like the B button on the Wiimote, and have it work like a toggle function so that it switches back and forth using one button?? Thanks
Yeah, I could definitely do something like that. Right now A/B on the Wiimote are mapped to the fire button when in Paddle mode. I can use one of them when in Joystick mode to allow for a BW/Color toggle. I will build something tomorrow and post it here if you want to test it out.

--Raz.

Ebf18
Posts: 11
Joined: Thu Feb 19, 2009 5:07 pm

Post by Ebf18 » Fri Feb 20, 2009 8:43 am

raz0red wrote:
Ebf18 wrote: Is it possible to map the function to one button, like the B button on the Wiimote, and have it work like a toggle function so that it switches back and forth using one button?? Thanks
Yeah, I could definitely do something like that. Right now A/B on the Wiimote are mapped to the fire button when in Paddle mode. I can use one of them when in Joystick mode to allow for a BW/Color toggle. I will build something tomorrow and post it here if you want to test it out.

--Raz.
Thanks Raz, will be happy to test it out.

User avatar
raz0red
Site Admin
Posts: 671
Joined: Sat Oct 29, 2005 8:21 pm
Location: Britannia
Contact:

Post by raz0red » Sat Feb 21, 2009 9:14 am

Ebf18 wrote: Thanks Raz, will be happy to test it out.
Sent you a PM w/ instructions and the download location.

If anyone else is interested in having that functionality prior to v0.2 just let me know and I will send you instructions as well.

Thanks.

--Raz.

Ebf18
Posts: 11
Joined: Thu Feb 19, 2009 5:07 pm

Post by Ebf18 » Sat Feb 21, 2009 1:04 pm

raz0red wrote:
Ebf18 wrote: Thanks Raz, will be happy to test it out.
Sent you a PM w/ instructions and the download location.

If anyone else is interested in having that functionality prior to v0.2 just let me know and I will send you instructions as well.

Thanks.

--Raz.
I just tried it and it works great, but I did notice some sound skipping with you load up Starmaster. I like that I don't see any slow downs when running Asteroid or Frogger which can be noticed in Stellawii.

Post Reply