L'incorporation d'exemple est un appareil pour jouer des jeux. Il consiste en un CPU Powerpc-Basé fort avec quelques extensions de propriété, un noyau GPU/PERIPHERIQUE de propriété (a appelé "Flipper"), y compris un puissant 3D processeur, 24 mégaoctet de 1T-SRAM, une unité de disque de mini-DVD, plusieurs interfaces externes.
L'exemple est seulement signifié être utilisé avec les jeux originaux, et ainsi a une protection qui charge est seulement possible d'a protégé à la copie des disques. Cependant, un jeu a appelé "l'Etoile de Phantasy en ligne" a contenu une possibilité pour exploiter les jeux connectent à l'internet, ainsi permettant au code être injecté et être exécuté (
http://www.gdev.com) - la scène de homebrew avait commencé!
Le problème est que le procédé de botte avec PSO prend très long chaque fois vous voulez essayer quelque chose, à peu près 1-2 minutes - vraiment pas parfait pour un cycle de développement agréable. Pour surmonter ceci, j'ai développé un bios (ou bootrom, comme or9 dirait) le remplacement, que je veux présenter ici.
LE REFUS L'information présentée est ici basée sur mon opinion qui ils aucun ne s'enfreint pas n'importe quel loi, les règles ou quoi que. S'ils font, s'il vous plaît me contacter à gc@_n0spam_debugmo.de (enlève le n0spam) et j'enlèverai la chose IMMEDIATEMENT.
LE REFUS 2 n'importe quelle information est ici fournie "comme-il". Je ne prend pas de garantie pour n'importe quoi ici, surtout si vous vous cassez l'appareil vous êtes sur votre propre. S'il vous plaît ne m'envoyer pas des connecteurs cassés, épingles cassées ou simplement "les appareils de pas-travaillant". En doute, ne pas modifier votre appareil si vous n'avez pas un autre celui jouer avec.
LE REFUS 3 De la piraterie - ne fait pas S'IL VOUS PLAIT. Ceci n'est pas de la piraterie. Il ne vous aidera pas si vous voulez lire les disques non-originaux de jeu, et je suis calme heureux du fait que la protection de copie véritable semble être faite dans le microprogramme de dvdrom. Ce projet est du développement de HOMEBREW, les modèles de demonstration et la chose. Pas de jouer a copié des jeux. La piraterie tuera la scène entière sur le jour vous pouvez charger warez sans avez un BBA ou étant obligé à charger PSO chaque fois. Si ceci arrivera, l'intérêt commercial dans warez grandira, et nintendo devra prendre des guerres légales contre tout le monde qui contourne le procédé de botte ordinaire. S'il vous plaît ne PAS CECI PERMETTRE D'ARRIVE. PAS WAREZ DE SOUTIEN, autrement nous devons chercher bientôt une autre console pour tailler.
Comme j'ai expliqué dans ce forum de dextrose poste je l'ai géré pour programmer un CPLD pour remplacer les contenus du IPL, ou BIOS, ou bootrom. La partie de matériel consiste en:
Un CPLD, j'ai utilisé un Xilinx XCR3064XL, connecté entre le fragment de IPL et la Nageoire, une carte de mémoire de Répétition d'une séquence, ou n'importe quel SPI l'éclat compatible. Noter que j'ai fait n'a pas reçu un éclat de atmel pour travailler puisque il se repose sur avoir l'horloge au niveau positif pendant que les CS sont inactifs (le j'.e. haut). Une carte de mémoire normale et compatible ne travaillerait pas parce qu'ils ont besoin d'une séquence ouvrant spéciale qui n'a pas été pourtant renversé (enfin pas dans public). Quand le IPL est lu du fragment de IPL, le CPLD injecte un petit bloc de code. Le code sera lu à 0x81300000, le point d'entrée du IPL normal. Quand le code est exécuté, il charge le premier secteur de la carte de mémoire dans le b d'entaille à 0x81000000 et sauts là-bas. Le code regarde comme le suivre:. long 0x52000000 # bien qu'est le code, c'est presque un aucun-op. # ceci est l'adresse de secteur envoyée à r27
de lis de carte de mémoire, 0xcc00 # la base de chargement de registres de matériel. # comme la chauve-souris est déjà initialisée par les BS, nous # ajoute 0xC0000000 à la base 0x0C000000. li r28, 0x0880 # le fragment choisit sur pour l'entaille de memcard, mflr de vitesse bas r29 # lr contient toujours l'adresse de ce code - c.-à-d. 0x81300000 li r30, 128 # transférer 128 li d'octets r31, 7 # EXI DMA écrit do_dma à bl # fait dma, et attend lis de fin r29, 0x8100 # a lu maintenant à 0x81000000, encore 128 li d'octets r31, 3 # EXI DMA a lu mtlr r29 # la sérieL'adresse être sautée à do_dma: stmw r28, 0x6814(r27) # inaugure DMA write_wait: lmz r5, 0x6820(r27) # a lu rlwinm d'octet de statut. 0, 5, 31, 31 # l'extrait "dans le transfert" bne de morceau write_wait # l'attente jusqu'à ce qu'a éclairci blr # le dos de branche/coder
Ce code peut regarder un morceau confondant au début, mais ce devait être aussi petit que ceci, autrement il n'aurait pas la crise dans le CPLD.
Le code lui-même envoie hors au EXI. ainsi les octets envoyés sont "52 00 00 00 3f. . ..", 128 octets dans le total. La carte de mémoire prévoit un octet d'ordre, qui est 0x52 dans ce cas. après cela, il prévoit l'adresse, 00 00 00 3f dans ce cas, qui est le premier secteur, décaler 0x3F. alors il prévoit 4 octets factices, et commence à envoyant les octets de données après cela. après il atteint la fin du secteur (128 octets + 6 octets spéciaux pour ECC, mais nous pouvons les utiliser aussi),Il commence répéter le secteur. Si après avoir écrit hors 128 octets nous pouvons lire 128 octets de payload dans la mémoire. Un programme spécial changera les données vers pour qu'après 128 octets de données les premières données de notre payload bien-aimé sort, et reçoit lire dans la mémoire. Après nous avons fini le exi a lu dma, nous sautons là-bas.
Ceci était le premier bootloader d'étape. Maintenant le premier secteur de la carte de mémoire contient 128+6 octets d'un deuxième bootloader d'étape, qui lit les secteurs restant de la carte dans mem et les sauts là-bas. Nous ne pourrions pas faire ceci dès le début à cause du manque d'espace dans le CPLD. le deuxième bootloader d'étape j'ai écrit des crises exactement dans 128bytes, mais peut être optimisé probablement un morceau plus. je ne soigne pas, puisque il ajuste. Maintenant nous pouvons charger jusqu'à (presque) 512k de code d'utilisateur dans la mémoire, ainsi écrivant notre propre remplacement de IPL. J'ai commencé à faire cela, mais il manque toujours des fonctions importantes, mais peut être utilisé pour télécharger DOLs (utilisant le réseau) et les exécute (permettant de charger homebrew en quelques les secondes), et les jeux de début (utilisant un petit apploader).
L'outil de mc.c: Cet outil préparera une carte de répétition d'une séquence pour notre bootloader. Le programme est fait pour linux sur un PC, ainsi ayant besoin d'une interface à la carte de mémoire. J'ai fait la connexion suivante au printerport:
L'épingle 3 D1 - EN SERIE DANS compte sur la carte) 4 D2 - LE FRAGMENT CHOISIT compte sur la carte) 5 D3 - CLK compte sur la carte) 10 ACK - EN SERIE HORS (de la carte) 25 GND - LE SOL 3.3v - VCC de Carte Pour le pinout de la carte de mémoire, prendre un regarde embers.shaw.ca/cheezWhizzer/GCNCard.htm. Vous pourriez le port l'écrivain de carte de mémoire être couru sur l'incorporation d'exemple, mais je recommande avec force pour utiliser un PC, parce que vous pouvez le reprogrammer beaucoup de. Noter que vous ne devez pas tenter de recevoir le 3.3v du port parallèle - il ne travaillera pas. Fait attention, si vous avez un vieux PC, les niveaux au port parallèle pourraient être calmes 5v. Utiliser des tampons ou un
plus nouveau PC (avec 3.3v niveaux) alors.
Vous devez appeler. /mc avec un fichier binaire comme un argument. Ce doit être un fichier relié à 0x81000080, avec l'entrée désigne le début. Mon makefile produira un fichier appelé "main_boot.bin", qui est convenable pour ceci. Prendre le soin que le numéro de pages utilisées ne dépasse pas le numéro de pages a lu dans la mémoire par le deuxième bootloader d'étape. Vous pouvez increse les comme vous aimez.
Le remplacement de IPL Mon remplacement de IPL est toujours au loin d'est parfait. Cependant, il soutient déjà: Différencier de la plupart de parties de matériel, comme le coussin, dvd,.. Lowmem intialisation Télécharge de DOLs (jusqu'à 4 mégaoctet plus
ou moins) et les HUCHES (a chargé à 0x80003000) sur le port 4000 chargement de jeux (appuie sur "A"-button) la Note que vous devez ajuster les adresses de IP directement dans le code. Prendre un examine le "réseau.c". Ainsi c'est presque n'importe quoi
vous avez besoin de pour un cycle de développement rapide.
LES CHARGEMENTS Le remplacement de IPL, y compris le mc.c d'outil d'écrivain de carte de mémoire. Le code de CPLD, utilisable pour Xilinx ISE (WebPack le fera).
Les images (a détaillé soudant l'information suivra) Le ROM/RTC/.. L'EN SERIE_HORS-rembourrer La connexion de
carte de mémoire de répétition d'une séquence La carte de mémoire de répétition d'une séquence avec le
connecteur de pc Le CPLD devant l'incorporation d'exemple Premier screenshot de mon remplacement de IPL - oui,
très laid.