From WikiTemp, the GBAtemp wiki


Yaosm Info

A PIC12F629

yaosm (Yet-another-open-source-modchip), is an open-source PIC based modchip.

It supports all the features that the commercial modchips have. The code is written in Great Cow basic and the code is optimized for speed, size and stability. The chip keeps its configuration in the eeprom part of the chip and it can be altered with the configuration disc. It's the only Open Source chip so far that has released the source for the configuration disc.

It supports various chip installations:

Chip Price (approx) Pins Soldering points
PIC 12F629 1.01$ 8 5
PIC 12F675 1.10$
PIC 12F683 1.29$
PIC 16F628 2.33$ 18
PIC 16F628A 1.86$

and also... 12F635 16F627/16F627A/16F648A 16F630/16F676 16F636/16F639 16F684

Specifications

source: Yaosm official forum


This is what is does:

  • Supports DMS/D2A/D2B chipsets
  • Wii originals
  • Wii original imports (partial support)
  • Wii backups
  • Wii backup imports (partial support)
  • Gamecube originals
  • Gamecube original imports (partial support)
  • Gamecube backups
  • Gamecube backup imports (partial support)
  • Gamecube homebrew
  • All medias (DVD-R, DVD-RW, DVD+R, DVD+RW)
  • Dual Layer support
  • Fully configurable speed setting
  • Automatic region detection
  • Stealth (well, at least as much "stealth" as any other Wii modchip currently available)
  • "Safe" Configuration disc
  • Optional status LED
  • Optional disable switch (solder wire to reset switch)
  • GameID overriding for some GameID's that was blocked by firmware 3.0
  • Support for Super Mario Galaxy backups

Installing info

PICs installation schematic
LED installation schematic

By default the chip has automatic region detection and speedfix enabled. This can be changed by modifying the eeprom data before programming your chip or you can change it later with the configuration disc (requires a GC controller).

You only have to solder 5 points. See images on the right for installation schematics.

LEDs installation is optional.
LEDs lights up when patching backups and when patching the region.
Also flashes quickly four times when settings are saved to the eprom.

The default behaviour for the LED is to flash when waiting for the chip is waiting for a new disc change (idle) but that can be changed with a configuration byte in the eprom or with the configuration disc.

Disable switch (optional)
By soldering a wire between pin3 on the chip and the middle "pin" on the Wii reset switch the chip can be disabled by holding the reset button while powering on the Wii. It may be easier and less dangerous to just connect an on/off switch between ground (pin8) and pin3. I do not recommend soldering to the reset switch unless you know what you are doing.

At the moment there doesn't seem to be a necessity to ever disable the chip, so this feature should be considered as highly optional.

If you have a LED attached to pin3 then it will "glow" since the chip configures this pin as an input pin with a weak pull-up (to make sure it is always read as high unless it is connected to ground). If this bothers you then the chip disable feature can be disabled completely by modifying the eprom data before programming the chip or by using the configuration disc.

QuickSolder With the WiiFree EasyConnect mod (see external links at the bottom of the page) you can do a "Quicksolder" installation.

Programming info

ExtraCheap programmer

source: WiiFree official forum, gsm2xtreme's 3ad

Programming YASOM under Windows XP with JDM or cheap programmer.

  • Copy icprog.sys to same destination as Icprog.exe
  • Start icprog.exe -> if you get an error just ignore this
  • Go to "Settings" then "Options" then "Programming"
  • Check "Verify during programming"
  • Go to "MIsc" and check "Enable NT/2000/XP Driver" and restart ic-prog
  • Go to "settings" then "hardware" and check if you choose "JDM Programmer" and com1
  • Select "PIC12F629" in upper right drop-down box.
  • Open YAOSM HEX and then you can programm it to PIC.
  • when pop-up "OsCCAL = 3428h Do you want to use value from file (3FFFh) instead?" press "NO"

The extra-cheap programmer on the left can program a PIC12F629. It can be built with less then 10$

This is an explanation of the configuration bytes for 2.x and below:

byte 0 = Regionpatching
0x00 = JAP, 0x01 = USA, 0x02 = EUR, 0x03 = disabled, 0x04-0xFF automatic region detection (default)

byte 1 = Speed setting (default speed for Wii backups)
0x00 = slow speed (Gamecube speed)
0x01 = medium speed (Somewhere in between)
0x02-0xFF = fast speed (Wii speed) (default)

byte 2 = Alternate speed setting (speed for Wii backups when same game is restarted)
0x00 = slow speed (Gamecube speed)
0x01 = medium speed (Somewhere in between)
0x02-0xFF = fast speed (Wii speed) (default)

byte 3 = Status LED behaviour when waiting for a new disc.
0x00 = LED is always off
0x01/0xFF = flashing (this is the default)
0x02/0xFE = fast flashing
0x03/0xFD = faster flashing
0x04/0xFC = insane flashing
0x80 = LED is always on but a bit dim
0x81 = LED is always on

byte 4 = Chip disable feature (you may want to disable this if you have a LED connected to pin3)
0x00 = Disable the chip disable feature (no weak pull-up on pin3)
0x01-0xFF = Enable the chip disable feature (this is the default)


This is an explanation of the configuration bytes for 3.x and up:

byte 0 = Regionpatching
0x00 = JAP
0x01 = USA
0x02 = EUR
0x03 = disabled
0xFF = auto (default)

byte 1 = Default speed setting (only affects Wii backups)
0x00 = slow speed (Gamecube speed)
0x01 = medium speed (Somewhere in between)
0xFF = fast speed (Wii speed) (default)

byte 2 = Alternate speed setting (only affects Wii backups)
0x00 = slow speed (Gamecube speed)
0x01 = medium speed (Somewhere in between)
0xFF = fast speed (Wii speed) (default)

byte 3 = Chip disable feature (you may want to disable this if you have a LED connected to pin3)
0x00 = Disable the chip disable feature (no weak pull-up on pin3)
0xFF = Enable the chip disable feature (this is the default)

byte 4 = Not used (autoboot if chip is upgraded with config disc)

byte 5 = Audiofix on/off
0x00 = Disable the Gamecube audiofix (always off)
0x01 = Disable audiofix by default (when powering up the Wii) and enable it by inserting a Wii disc before running your GC backup.
0x02 = Enable audiofix by default (when powering up the Wii) and disable it by inserting a Wii disc before running your GC backup.
0xFF = Enable the Gamecube audiofix (always on)(default)

byte 6 = reserved and used by recovery procedure in case of a bad upgrade. Do NOT change this manually.

byte 7 = Always 0xFF, do not change.

byte 8 and higher = reserved for upgrade patch data

Quick Start

  • Program your chip with the hex file that match the chip you've choosed to use.
  • Connect the chip to your Wii.
  • Make sure the first disc you use is a game from your own region.
  • If you later on want to tweak the speed settings, use the configuration disc.

Changelog

source: Yaosm official forum

3.2
- Improved disc detection.
- Fixed PIC code so that it cannot corrupt the region byte. (No, really, this time it IS fixed)

3.1
- PIC code changed to prevent corruption of the region configuration byte in PIC eeprom.

3.0
- Almost all code rewritten to drivecode.
- Configurable idle LED removed.
- DVD upgrade support added. 120 bytes of patch data can be stored in the eeprom (248 bytes for 12F683 and other chips with 256 bytes of eeprom)
- Better dual layer and SSBB support. Supports DVD+R DL and DVD-R DL without using bitsetting.

2.0
- Added Gamecube audiostreaming fix.

1.9
- Added GameID patch for Action Replay discs, all credit for this goes to Nekokabu. Consider this feature as experimental as it will only work on some AR versions.
- Added fix for Super Mario Galaxy backups.

1.8
- Sacrificed one of the status LED in favour of becoming 100% pin compatible with Wiinja chips which means that the chip can also be disabled by solder a wire between pin3 and the middle pin on the reset switch.
- Added a configuration byte to control the behaviour of the status LED when the chip is idle.
- Added a configuration byte to enable/disable the chip disable feature.
- Added support for dual layer discs.
- Added GameID overriding for GameIDs starting with W and Y (Makes them usable again on firmware 3.0)
- Changed GameID for future config discs

1.7
- Re-added support for 12F635/16F636/16F639 as it has been fixed (bug in GC basic)
- Minor code optimizations (saving a couple of bytes)

1.6
- Removed support for 12F635/16F636/16F639 since it has never been working.
- Redesigned the speed patching and made it fully configurable.
- Enabled the quick 4 flashes on status LED when eprom is updated.
- Added support for yaosm configuration disc.
- Removed support for rescue discs (no longer needed).

1.5
- Further optimizations to the code and fixed an issue with version 1.4.
- Version 1.5 hopefully is what version 1.4 should have been.

1.4
- Increased the number of loops before giving up while detecting type of game, which resulted in better detection of imports.
- Optimized the code for speed and size. New code is 22.5% smaller than version 1.3.
- Added silent mode (Speedfix default off but can be turned on when needed)
- Enabled support for rescue disc (reset/disable region patching)

1.3
- Fixed problem with imported Gamecube promotional and demo discs.
- Added medium speedfix since it works better for some people.

1.2
- Fixed problem with Gamecube original imports.

1.1 - Wii Original Imports shouls now work (thanks to the WiiFree team).
- Also region detection with originals now works.
- Some minor code optimizations.

1.0 - Initial release.

Firmware download

External Links

Buy Yaosm
WiiFree EasyConnect MOD