MArcan ha da poco spiegato sul suo sito, come raggiungere tutta la potenza wiiU con un codice homebrew che parte da vWII.
La cosa sfugge dalla mia comprensione, ma sul suo post spiega benissimo come fare.
La cosa e' molto distante da vedere il system menu del wiiU "aperto", ma apre la strada a tutta una serie di lavori che porteranno sicuramente la modifica (previa mano della nintendo).
- Codice: Seleziona tutto
hollywood reset
clear32(HW_RESETS, 0x30);
udelay(100);
set32(HW_RESETS, 0x20);
udelay(100);
set32(HW_RESETS, 0x10);
id5 |= 0xc0000000; // enable HID5 and PIR
// At this point, upir contains the core ID (0, 1, 2) that is currently
// executing.
// Global init
if (upir == 0) {
scr &= ~0x40000000; // scr, car, and bcr are global SPRs
scr |= 0x80000000;
car |= 0xfc100000; // these bit assignments are unknown
bcr |= 0x08000000;
}
// Per-core init
// these registers and bits already exist in Broadway
hid0 = 0x110024; // enable BHT, BTIC, NHR, DPM
hid2 = 0xf0000; // enable cache and DMA errors
hid4 = 0xb3b00000; // 64B fetch, depth 4, SBE, ST0, LPE, L2MUM, L2CFI
// HID5 is new and unknown, probably mostly controls coherency and the
// new L2 and core interface units
if(pvr & 0xFFFF == 0x101)
hid5 |= 0x6FBD4300;
else
hid5 |= 0x6FFDC000;
hid2 |= 0xe0000000; // LSQE, WPE, PSE
msr |= 0x2000; // enable floating point
// boring floating point reg, TB, decrementer, mmu init omitted
hid0 |= 0xc00; // flash invalidate ICache, DCache
hid0 &= ~0x100000; // disable DPM
l2cr = new_l2cr = 0
if (pvr & 0xffff == 0x100)
new_l2cr |= 0x8;
hid5 |= 0x01000000;
if (core == 1)
new_l2cr |= 0x20000000; // probably has something to do with the
// extra L2 for core1
l2cr = new_l2cr;
new_l2cr |= 0x200000; // L2 global invalidate
l2cr = new_l2cr;
while (l2cr & 1); // wait for global invalidate to finish
l2cr &= 0x200000; // clear L2 invalidate
l2cr |= 0x80000000; // L2 enable
hid0 |= 0x100000; // enable DPM
hid0 |= 0xc000; // enable DCache+ICache
// optional: enable locked L1 cache as usual
// boring standard GPR init omitted
// Core is now initialized. Check core ID (upir) and jump to wherever
// you want, set a flag for the main core, spin in a loop waiting for
// a vector, or whatever
// To kickstart the other cores (from core 0):
// core 1
scr |= 0x00200000;
// (wait for some flag set from core 1 when initialized)
// core 2
scr |= 0x00400000;
// (wait for some flag set from core 2 when initialized)
// Note: the Cafe OS kernel actually then uses core 2 as the main core
// after starting all three. This is probably unimportant.
Insomma. a questo punto chi scrive homebrew per vwii potrebbe utilizzare tutta la potenza del wiiU.
Questo porterebbe in un primo momento ad homebrew MOOOLTO piu potenti o alla possibilita' di avvaire un sistema operativo (come linux) e di scrivere appropriati driver per la gpu...
SPERIAMO BENE!
warez o homebrew?