GameCube Action Replay SD Loader V1.00. Copyright 2005.
by Costis (costis@gbaemu.com and http://www.gcdev.com)

README FIRST!!!

===================
 Short Description
===================

The Action Replay SD Loader (or SDLOAD for short) is an tool which
allows you to boot code on an unmodified GameCube within 10 to 15
seconds from the time you turn it on! It makes use of an Action Replay
code which tricks the GameCube into running my bootloader code and loading
my SD card selection menu. The selection menu supports all these features:

- Loading any DOL file from the SD card in any directory and subdirectory.
- Loading any DOL or binary file with PSOload from your computer through
  the network.
- Reloading or exiting back to the SD selection menu from your programs
  by branching to the small reloader code (just like in PSOload V2.00).
- NO need for a modified GameCube, works on ALL unmodified GameCubes.
- Works on EVERY Action Replay revision -- One code to rule them all!
- Only 29 codes to insert once. They are saved on the Action Replay
  memory card after you have written them in the first time and you
  just have to select "Start Game" every subsequent time to boot into
  the SD loader menu.
- Can be installed WITHOUT a way to run code on the GameCube prior to
  this! All you need is an Action Replay, an SD card adapter for the
  GameCube, and an SD card.
- Boots to the SDLOADER selection menu on the FIRST Action Replay boot.

Please read the sections below even though they are lengthy. This can
be the IDEAL GameCube development solution for you! Once you are done
reading and are ready to try out my loader, follow the installation
process in install.txt.

Also, if you are a developer or hacker, I have included a special section
for you at the end of this readme about source code, etc....

Having problems with the loader or cannot get it to work? Post on the
GCDev.com forums with a clear description of your problem or even e-mail
me at costis@gbaemu.com and I will try to get back to you as soon as
possible with the solution. Also, I'd love to hear feedback for this project,
especially after all of the hard work I have to put into it! Send ALL
comments, suggestions, and even constructive criticism to costis@gbaemu.com
as well or likewise post on the forums.


======================
 Detailed Description
======================

Well... As I promised around a week ago, here it is -- my surprise
GameCube release on New Year's day! Happy New Year everyone!!!!

Around two years ago, I released a program called PSOload which allowed
people to boot their own homebrew code on the GameCube by exploiting
a network feature of the online game Phantasy Star Online. GameCube
development has come a long way since then, and I find it simply amazing
how many people have ardently coped with the annoyance and inefficiencies
of having to boot through PSO every single time, waiting for it to load
through the title screens, going through the main menu, and then finally
waiting for it to connect to my loader server! I myself used this method
of code uploading for quite some time (until I lost my PSO disk ;))

I estimate that it takes more than 2 minutes or so to boot code each time
using the PSO exploit method from the time when the GameCube is turned on!
Sure, now that the viper chip has been released and tmbinc has released
sources for his homebrew BIOS replacement chip, people can go modify their
GC's and run code on them right when they are turned on. But there are many
disadvantages to modifying your GameCube...

	1. You have to open your GameCube console, voiding your warranty.
	2. If something goes wrong in the installation, you may be forever
	   left with a broken GameCube.
	3. You can only boot code on that GameCube itself, not on any other
	   unmodified GameCube's so you can't really show your stuff off
	   to friends on their own GC's.
	4. The installation process is much more complicated and there are
	   countless places where it can go wrong...
	5. This new code loading method I have released allows you to develop
	   for the GameCube just as efficiently as with a modified console!

SO what is this tool I am releasing? I like to call it SDLOAD. It is a completely
different method of uploading code on unmodified GC's. It takes approximately
10 to 15 seconds from the time you have turned on your GC to the time you are
able to boot any DOL file of your choice. How does this work you say? My SD
bootloader makes use of the Action Replay in order to exploit the GameCube
and gain full control over it, allowing the user to select any homebrew file
to load and run. The Action Replay is a product made by Datel, which normally
allows users to "enhance" their gaming experiences by entering cheat codes for
GameCube games. It can be bought for around $30 at any local video game store or
online at places such as GameStop (http://www.gamestop.com.)

This is the part that Parasyte contributed a huge amount to... After many hours
of hard work, Parasyte came up with a method to trick ANY version Action Replay
disk to patch *itself* rather than any other game with a small amount of GC
program code encrypted in special Action Replay codes! After the code has been
entered, you select "Start Game", open and close the cover once, and the Action
Replay happily patches itself with a very small amount of code of my choice!

I had an SD card adapter for the GC laying around, so I came up with the idea of
trying to cram an SD card bootloader inside this small code space... After much
optimization and pure PowerPC assembly code writing, I came up with 29 Action
Replay codes which can be used to load code from an SD card, and this is where
SDLOAD was born!

This is how it works... You need an SD card adapter (which you can either buy
from places like Lik-Sang, make yourself -- see included instructions, or kindly
request for me to make and sell you one), an Action Replay disk (can be bought
in most stores), an SD card reader for the PC, and of course... an SD card!
That's it! Just these items and you can be set to run code on ANY unmodified
GameCube within seconds!!! I know how tedious it is to have to enter AR codes
by hand, especially if you do not own a GC keyboard and have to use the controller,
so I have worked very hard and have managed to fit the whole bootloader init code
in only 29 AR codes. To "install" SDLOAD, you just have to enter the bootloader code
in the AR and prepare the SD card with the SD card reader and my included PC program.
After you have completed these two steps, you are set to run the SDLOADER menu program
by simply turning on your GameCube, pressing A to Start Game, and opening and closing
the DVD disk cover.

===============
 SDLOADER MENU
===============

Once you are greeted with the menu, you have the power of running homebrew GC code
in your hands! The menu will display a directory and file listing of all of the
DOL files on the SD card. You can browse through and even go into multiple subdirectories.
Use the UP and DOWN D-PAD buttons to step through the menu items in those directions.
The scrollbar on the right side indicates your current position. Press the A button
over a folder in order to go inside that folder, and press A over a DOL file in order
to load that file from the card and execute it. The L trigger button takes you to
the very top of the directory (HOME), and the R trigger button takes you to the very
bottom of the current directory (END). Pressing the B button will lead you to the parent
directory (alternatively you can press A over the ".." folder item to be taken back
to the parent folder.) Finally, the Z button will always return you to the root
directory of the card.

You can remove the SD card at ANY time while the menu program is running. Once you
have removed the SD card from the memory card slot, the menu will detect this and
will say "REINSERT SD CARD IN SLOT A" at the top right part of the screen. You may
now make any changes to the SD card you want or even reinsert a different SD card,
and the loader will refresh the dir listing.

There is also a preliminary feature for using programs that do not know how to unlock
official Nintendo memory cards properly (specifically GCS...) I believe this may only
work properly with 59 block cards, but whatever. If you use the X button over a DOL file,
the menu will load it just like if you pressed the A button. However, once it has finished
reading the file from the card, it will say "REMOVE SD CARD" at the top right of the screen.
Once you remove the card from the slot, it will request "INSERT MEMCARD". Insert a
memory card into slot A at this point and SDLOADER will unlock it before executing
the DOL file which it has just loaded!

Finally, the last two features of the current release are especially useful for homebrew
developers... I have added a Network Boot feature. This allows you to configure the
SDLOADER menu to initialize the BBA and accept DOL or binary files from PSOload at ANY
time while the menu is running. While the BBA has been activated, the PSOload detection
code is running in the background, so you are still free to traverse through the menus
and select a DOL to boot from the SD card itself. However, once you run PSOload with
the -r option, the menu will say "NETWORK BOOT..." in the top right and will load and
execute a GC executable from PSOload through the network. This should make quick changes
and test cycles extremely efficient, reducing the need to write every new build to the
SD card and exchange it back and forth between your GC and PC reader. Details for
configuring SDLOADER to set up the BBA and work with network boot are all included
in install.txt which is included in this package.

Continuing with the tradition of the reload feature in PSOload, I have included a
reloader feature in SDLOADER as well! In fact, I have been able to make it function
in the exact same way as the PSOload reload feature to the user, except it is even
better this time. Last time, if you executed the reloader before you had PSOload -r
running on your computer, the GameCube would crash. Now, if you jump to the reloader
code, it will reload the menu program from the SD card and execute it, allowing you
to either boot a new DOL from the SD card itself or load another executable from
the network through PSOload -r! Make sure that the sD card is inserted before
using the reloader feature to exit back to the menu, of course. Once again, exact
details for using the reloader feature (including example code for invoking it)
can be found in install.txt

===================
 SD CARD CONNECTOR
===================

I realize that Lik-Sang is one one of the only places where you can buy an SD card
adapter for the GameCube if you are not located in Japan, and they have it for
pretty expensive... ($30 or so). The SD card adapter is very simple hardware, however.
In fact, it is "straight-through" and a homebrew adapter can be made by hacking up
an old GC memory card and soldering a few wires to an SD card connector. SD card connectors
can be removed from cheap SD card readers or even bought as discrete components from
electronic parts stores or online catalogs such as Digikey (http://www.digikey.com).

To make the connector follow this guide:

In this PDF document (http://www.egr.msu.edu/classes/ece480/goodman/fall/group05/deliverables/appnote_foust.pdf)
on the second page, there is a pinout of a standard SD card. Match these pins to your
SD connector.

DarkFader has a memory card connector pinout in this photo:
http://darkfader.net/ngc/files/memcard.jpg

You must connect the two VSS pins (VSS and VSS2) on the SD card connector together
and to GND on the memory card pad (pin 2 or pin 10). You must connect VCC to 3.3V (pin 8).
You must connect the CLK pin on the SD card to the CLK pad on the memcard (pin 11).
You must connect the CS pin on the SD card to the CS pad on the memcard (pin 9).
You must connect the MOSI pin on the SD card to the MOSI pad on the memcard (pin 5).
Finally, you must connect the MISO pin on the SD card to the MISO pad on the memcard (pin 7.)

It's around 3 A.M. at night right now, so I am too tired to write a proper how-to
guide with photos and diagrams, etc. But I have promised to release this tonight,
so I am keeping my promise. I will release such a detailed guide within the coming
days to facilitate the process.

I really do not want the difficulty of obtaining an SD card adapter to hinder
people from using my loader, so if you definitely cannot buy one from an online
store such as Lik-Sang (http://www.lik-sang.com) and do not feel comfortable
making your own, feel free to send me an e-mail and I can probably arrange to make
a homebrew connector for you, provided that you pay all component and shipping
expenses. I estimate that it'll cost maybe around $10-15 or so per connector.

I have high hopes that my SD bootloader will become THE new development solution for
the GameCube. SD cards are high density, so you can put EVERY homebrew DOL file ever
created on an SD card and have them all to load whenever you want. You can take
your Action Replay disk and SD card to friends' houses and show them all your
neat new GameCube stuff on their own GC's. This does NOT require a PC to boot
code once you have the DOL files on your SD card, so you do not have to drag
laptops along with you, and it works on all GameCubes, so you do not have to
bring along your whole GameCube if you are using a mod-chip for development!

PLEASE do not let the SD card connector discourage you from trying out this
loader. Like I said, I would be happy to make a few connectors and give them
out for as cheap as I can without a deficit. Send me an e-mail at costis@gbaemu.com
if you want to do this, although if buying an official adapter is not a problem
for you, *please* respect my time and go for that instead. It will look far more
professional anyway, and you will have the guarantee of its durability. And after
all, $30 is almost nothing compared to the cost and rarity of BroadBand Adapters
right now. The PSO method right now costs around $60 for PSO (which is very
difficult to find in stores because it has been discontinued) and $40 for the BBA.
This totals to around $100! For SDLOAD, the Action Replay costs only $30, and the
SD card adapter costs $30 as well if you get the official one! That totals to around
$60 for a complete GameCube development environment that is arguably even MORE
efficient than modifyng your GC with a mod-chip. You may also be able to find
old Action Replay disks on E-Bay for much cheaper.  

=================
 FOR DEVELOPERS
=================

I have included the full source code of the sdpatch.exe program (see install.txt
for instructions on how to use it and what it is for.) The main reason for this is
that it is specific to NT operating systems (Windows NT/2000/XP) and I have no knowledge
of the Linux or Mac OS X operating systems myself... Knowing that many people use
these alternative operating systems (from experience with PSOload), I have released
the source code so that anyone can port it to any other operating system. sdpatch.exe
does use a lot of system specific calls, but it should easily be portable to Linux
and Mac OS X by replacing them with the low-level equivalents for those OS's. If anyone
ports sdpatch.exe to any other OS than Windows, please contact me and I will upload
it to GCDev.com for posting.

The menu program that is loaded after you open and close the cover on the Action Replay
(SDLOADER) is just a simple file on the SD card. It's the file that you copied to the
root directory of the card while following the installation text called SDLOADER.BIN.
This file is a simple GameCube executable binary which is loaded and copied to RAM
location 0x81700000 (the high 1MB of RAM on the GC's 24MB of main RAM.) You can easily
replace SDLOADER.BIN with your own creation to have it boot at start-up instead of
the default menu if you choose to do so. Just set your compiler to compile for a
target text base section of 0x81700000 (-Ttext 0x81700000) and then use objcopy to
convert the output ELF file from the linker to a binary:

powerpc-elf-objcopy -O binary sdloader.elf SDLOADER.BIN (for example...)

The only precaution you have to take is that your binary file is 1MB or less in size,
as otherwise it will overflow through the top of the GC's RAM!

=======================
 CREDITS AND GREETINGS
=======================

I would like to thank Parasyte first and foremost for making this loader a
possibility. He figured out the incredible Action Replay patching method
which allowed me to create an SD card bootloader code which works on EVERY
Action Replay and on the first boot. He also provided me with stable
network code for interfacing the BroadBand Adapter and helped me test every
stage of the loader as a whole until I got rid of all the visible bugs.

Other credits and greetings (in no specific order) go out to...

DayDream -- HUGE thanks for drawing the SD logo at the top of SDLOADER!!!!
smilydude -- Thanks for making some FAT16 raw test images for me!
BigRedPmp
Lord_NightMare
tmbinc
dovoto
The_1 -- Thanks for testing out some AR codes on your Action Replay!
SubDrag
Sappharad
joat
kevtris
DuoDreamer
DarkFader
groepaz
DesktopMan -- Thanks for donating the SD card connector in the first place!
Myria
Samson
sgstair
asterick
Zeus
JustBurn
Guyfawkes
woo

And everyone else I have missed!!! 

You can contact me at costis@gbaemu.com or by making a post on the GCDev.com forums:
http://forums.gcdev.com. http://www.gcdev.com is and always WILL be the home site
of this project.

Help me make this project a success! AND HAPPY NEW YEAR EVERYONE!!!!!! 