gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS development > Progress on WiFI functions/registers?

#41378 - Izhido - Wed Apr 27, 2005 11:29 pm

Hi!

Just wanted to know if there has been any progress on determining the I/O regs / interrupts / whatever required to use WiFi on our homebrew applications.

I'm currently working on a small "web browser" for the DS, and knowing how to access WiFi on it would help a little :) .

And, before you say it, yes, I fully understand I *must* implement a TCP/IP stack in my app in order to use the WiFi infrastructure.

- Izhido

#41395 - olimar - Thu Apr 28, 2005 1:56 am



Last edited by olimar on Wed Aug 20, 2008 9:33 pm; edited 1 time in total

#41397 - dagamer34 - Thu Apr 28, 2005 2:23 am

olimar wrote:
WiFi is still uncharted territory. After a very quick glance, here's what I managed to dig up for myself (this is all from ARM7):

4000304 bit 1: enable WiFi
Power management bit 4: turns on WiFi blinkenlights (see this thread)

4800000 - 48002FF: wifi registers
4804000 - 4805FFF: looks like RAM?

Also take a look at http://www.bottledlight.com/ds/index.php/Hardware/UnknownRegisters

Happy Hacking :)


....

The website you gave him probably isn't the best thing in the world. Especially since I doubt he's like a computer and will instantly figure out what that mess is.
_________________
Little kids and Playstation 2's don't mix. :(

#41399 - josath - Thu Apr 28, 2005 2:30 am

haha, some line breaks would be nice, here it is reformatted:

Code:

Possibly wireless (metroid ARM7):

0x04808044:16, read twice, 8 bits each

0x04808032:16 = 0x8000
0x04808134:16 = 0xFFFF

0x0480802A:16 = 0
0x04808028:16 = 0

0x048080E8:16 = 1
0x04808038:16 = 0xF
0x04808030:16 = 0x8000


0x04808010:16 = 0xFFFF
0x04808012:16 = 0x3F
0x048081AE:16 = 0x1FFF
0x048080D0:16 = 0xFFFF
0x048080E0:16 = 8
0x04808008:16 = 0
0x0480800A:16 = 0
0x048080E8:16 = 0



08001110        mov     r1, #0x1
08001114        ldr     r0, =0x04808004
08001118        strh    r1, [r0, #0x0]
0800111C        mov     r0, #0x40
08001120        bl      #0x080016A8
08001124        b       #0x080014A4
08001128        ldr     r2, =0x00000FFF
0800112C        ldr     r1, =0x04808010
08001130        strh    r2, [r1, #0x0]
08001134        ldr     r2, =0x0000703F
08001138        ldr     r1, =0x04808012
0800113C        strh    r2, [r1, #0x0]
08001140        ldr     r2, =0x00001FFF
08001144        ldr     r1, =0x048081AE
08001148        strh    r2, [r1, #0x0]
0800114C        mov     r2, #0x0
08001150        ldr     r1, =0x048081AA
08001154        strh    r2, [r1, #0x0]
08001158        ldr     r0, [r0]
0800115C        add     r0, r0, #0x600
08001160        ldrh    r0, [r0, #0x1C]
08001164        ands    r0, r0, #0x8
08001168        ldrneh  r0, [r1, #0x0]
0800116C        orrne   r0, r0, #0x400
08001170        strneh  r0, [r1, #0x0]
08001174        ldr     r1, =0x00000301
08001178        ldr     r0, =0x048080D0
0800117C        strh    r1, [r0, #0x0]
08001180        mov     r1, #0xD
08001184        ldr     r0, =0x048080E0
08001188        strh    r1, [r0, #0x0]
0800118C        mov     r1, #0xE000
08001190        ldr     r0, =0x04808008
08001194        strh    r1, [r0, #0x0]
08001198        mov     r5, #0x0
0800119C        ldr     r0, =0x0480800A
080011A0        strh    r5, [r0, #0x0]
080011A4        mov     r1, #0x1
080011A8        ldr     r0, =0x04808004
080011AC        strh    r1, [r0, #0x0]
080011B0        add     r6, sp, #0x0
080011B4        ldr     r0, =0x048080F8
080011B8        ldrh    r0, [r0, #0x0]
080011BC        strh    r0, [r6, #0x0]
080011C0        ldr     r0, =0x048080FA
080011C4        ldrh    r0, [r0, #0x0]
080011C8        strh    r0, [r6, #0x2]
080011CC        ldr     r0, =0x048080FC
080011D0        ldrh    r0, [r0, #0x0]
080011D4        strh    r0, [r6, #0x4]
080011D8        ldr     r0, =0x048080FE
080011DC        ldrh    r0, [r0, #0x0]
080011E0        strh    r0, [r6, #0x6]
080011E4        ldr     r0, =0x0380FFF4
080011E8        ldr     r0, [r0]
080011EC        add     r0, r0, #0x300
080011F0        ldrh    r0, [r0, #0x6A]
080011F4        mov     r4, r0, lsl #10
080011F8        ldr     r0, [sp]
080011FC        ldr     r1, [sp, #0x4]
08001200        mov     r2, r4
08001204        mov     r3, r5
08001208        bl      #0x08010E70
0800120C        str     r0, [sp]
08001210        str     r1, [sp, #0x4]
08001214        mov     r2, #0x1
08001218        adds    r12, r0, r2
0800121C        adc     r3, r1, #0x0
08001220        str     r12, [sp]
08001224        str     r3, [sp, #0x4]
08001228        umull   r1,r0,r4,r12
0800122C        mla     r0, r12, r5, r0
08001230        mla     r0, r3, r4, r0
08001234        str     r1, [sp]
08001238        str     r0, [sp, #0x4]
0800123C        ldrh    r1, [r6, #0x6]
08001240        ldr     r0, =0x048080F6
08001244        strh    r1, [r0, #0x0]
08001248        ldrh    r1, [r6, #0x4]
0800124C        ldr     r0, =0x048080F4
08001250        strh    r1, [r0, #0x0]
08001254        ldrh    r1, [r6, #0x2]
08001258        ldr     r0, =0x048080F2
0800125C        strh    r1, [r0, #0x0]
08001260        ldrh    r0, [r6, #0x0]
08001264        orr     r1, r0, #0x1
08001268        ldr     r0, =0x048080F0
0800126C        strh    r1, [r0, #0x0]
08001270        ldr     r0, =0x048080EA
08001274        strh    r2, [r0, #0x0]
08001278        mov     r0, #0x40
0800127C        bl      #0x080016A8
08001280        bl      #0x06FD7850
08001284        mov     r1, #0x2
08001288        ldr     r0, =0x048080AE
0800128C        strh    r1, [r0, #0x0]
08001290        b       #0x080014A4
08001294        ldr     r2, =0x0000FFFF
08001298        ldr     r1, =0x04808010
0800129C        strh    r2, [r1, #0x0]
080012A0        ldr     r2, =0x0000E03F
080012A4        ldr     r1, =0x04808012
080012A8        strh    r2, [r1, #0x0]
080012AC        ldr     r0, [r0]
080012B0        add     r0, r0, #0x600
080012B4        ldrh    r0, [r0, #0x1C]
080012B8        ands    r0, r0, #0x20
080012BC        ldrneh  r0, [r1, #0x0]
080012C0        orrne   r0, r0, #0xC0
080012C4        strneh  r0, [r1, #0x0]
080012C8        ldr     r1, =0x00001FFF
080012CC        ldr     r0, =0x048081AE
080012D0        strh    r1, [r0, #0x0]
080012D4        mov     r0, #0x0
080012D8        ldr     r1, =0x048081AA:16 = 0
080012DC        strh    r0, [r1, #0x0]

08001350        mov     r1, #0xB
08001354        ldr     r0, =0x048080E0
08001358        strh    r1, [r0, #0x0]
0800135C        mov     r1, #0x0
08001360        ldr     r0, =0x04808008
08001364        strh    r1, [r0, #0x0]
08001368        ldr     r0, =0x0480800A
0800136C        strh    r1, [r0, #0x0]
08001370        mov     r1, #0x1
08001374        ldr     r0, =0x04808004
08001378        strh    r1, [r0, #0x0]
0800137C        ldr     r0, =0x048080E8
08001380        strh    r1, [r0, #0x0]
08001384        ldr     r0, =0x048080EA
08001388        strh    r1, [r0, #0x0]
0800138C        mov     r0, #0x20
08001390        bl      #0x080016A8
08001394        b       #0x080014A4
08001398        ldr     r2, =0x0000FFFF
0800139C        ldr     r1, =0x04808010
080013A0        strh    r2, [r1, #0x0]
080013A4        ldr     r2, =0x0000C03F
080013A8        ldr     r1, =0x04808012
080013AC        strh    r2, [r1, #0x0]
080013B0        ldr     r2, =0x00001FFF
080013B4        ldr     r1, =0x048081AE
080013B8        strh    r2, [r1, #0x0]
080013BC        mov     r2, #0x0
080013C0        ldr     r1, =0x048081AA
080013C4        strh    r2, [r1, #0x0]
080013C8        ldr     r0, [r0]
080013CC        add     r0, r0, #0x600
080013D0        ldrh    r0, [r0, #0x1C]
080013D4        ands    r0, r0, #0x8
080013D8        ldrneh  r0, [r1, #0x0]
080013DC        orrne   r0, r0, #0x400
080013E0        strneh  r0, [r1, #0x0]
080013E4        ldr     r0, =0x0380FFF4
080013E8        ldr     r0, [r0]
080013EC        add     r0, r0, #0x300
080013F0        ldrh    r0, [r0, #0x60]
080013F4        ands    r0, r0, #0x1
080013F8        ldrne   r1, [pc, #0x1AC]
080013FC        ldrne   r0, [pc, #0x150]
08001400        strneh  r1, [r0, #0x0]
08001404        moveq   r1, #0x1
08001408        ldreq   r0, [pc, #0x144]
0800140C        streqh  r1, [r0, #0x0]
08001410        mov     r1, #0xB
08001414        ldr     r0, =0x048080E0
08001418        strh    r1, [r0, #0x0]
0800141C        mov     r2, #0x0

0x04808008:16 = 0
0x0480800A:16 = 0
0x04808004:16 = 1
0x048080E8:16 = 1
0x048080EA:16 = 1
0x04808048:16 = 0

0x04808010:16 = 0xFFFF
0x04808012:16 = 0
0x048081AE:16 = 0
0x04808008:16 = 0
0x0480800A:16 = 0
0x04808004:16 = 1
0x04808048:16 = 0
0x048080AE:16 = 2

0x0480819C:16, tested against 0x80

#41400 - olimar - Thu Apr 28, 2005 2:31 am



Last edited by olimar on Wed Aug 20, 2008 9:33 pm; edited 1 time in total

#41401 - dagamer34 - Thu Apr 28, 2005 2:48 am

olimar wrote:
dagamer34 wrote:
The website you gave him probably isn't the best thing in the world. Especially since I doubt he's like a computer and will instantly figure out what that mess is.


Ah, I see.
Sorry I wasted everyone's time. Next time I'll know better.


That's not what i meant...

... never mind

:/
_________________
Little kids and Playstation 2's don't mix. :(

#41414 - ecurtz - Thu Apr 28, 2005 4:28 am

olimar wrote:
Ah, I see.
Sorry I wasted everyone's time. Next time I'll know better.


Looks useful to me. I'll put my nearly nonexistent ARM assembly skills and my reference manual to work converting it to C and seeing if it makes any sense.

#41505 - ecurtz - Fri Apr 29, 2005 6:58 am

That wasn't very enlightening, but I did it, so here's the results. It might be a little clearer where things are going out and coming in, and which are flags, or it may not. This is only the middle bit, as the code seems to repeat (at least that's what the edits being where they were implied to me.) I'm sure there are things I messed up, this isn't my forte.

Code:

08001128? ? ? ? ldr? ? ?r2, =0x00000FFF
0800112C? ? ? ? ldr? ? ?r1, =0x04808010
08001130? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_010) = 0x0FFF;
08001134? ? ? ? ldr? ? ?r2, =0x0000703F
08001138? ? ? ? ldr? ? ?r1, =0x04808012
0800113C? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_012) = 0x703F;
08001140? ? ? ? ldr? ? ?r2, =0x00001FFF
08001144? ? ? ? ldr? ? ?r1, =0x048081AE
08001148? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_1AE) = 0x1FFF;
0800114C? ? ? ? mov? ? ?r2, #0x0
08001150? ? ? ? ldr? ? ?r1, =0x048081AA
08001154? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_1AA) = 0x0000; 
08001158? ? ? ? ldr? ? ?r0, [r0]
0800115C? ? ? ? add? ? ?r0, r0, #0x600
08001160? ? ? ? ldrh? ? r0, [r0, #0x1C]
r0 = (short)((*r0)[0x061C]); // r0 initialized somewhere else
08001164? ? ? ? ands? ? r0, r0, #0x8
08001168? ? ? ? ldrneh? r0, [r1, #0x0]
0800116C? ? ? ? orrne? ?r0, r0, #0x400
08001170? ? ? ? strneh? r0, [r1, #0x0]
if (r0 & 0x0008) { *((short*) REG_UNK_1AA) |= 0x0400;}
08001174? ? ? ? ldr? ? ?r1, =0x00000301
08001178? ? ? ? ldr? ? ?r0, =0x048080D0
0800117C? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0D0) = 0x0301;   
08001180? ? ? ? mov? ? ?r1, #0xD
08001184? ? ? ? ldr? ? ?r0, =0x048080E0
08001188? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0E0) = 0x000D;   
0800118C? ? ? ? mov? ? ?r1, #0xE000
08001190? ? ? ? ldr? ? ?r0, =0x04808008
08001194? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_008) = 0xE000;     
08001198? ? ? ? mov? ? ?r5, #0x0
0800119C? ? ? ? ldr? ? ?r0, =0x0480800A
080011A0? ? ? ? strh? ? r5, [r0, #0x0]
*((short*) REG_UNK_00A) = 0x0000;     
080011A4? ? ? ? mov? ? ?r1, #0x1
080011A8? ? ? ? ldr? ? ?r0, =0x04808004
080011AC? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_004) = 0x0001;     
080011B0? ? ? ? add? ? ?r6, sp, #0x0
r6 = sp;
080011B4? ? ? ? ldr? ? ?r0, =0x048080F8
080011B8? ? ? ? ldrh? ? r0, [r0, #0x0]
080011BC? ? ? ? strh? ? r0, [r6, #0x0]
*((short*) r6) = *((short*) REG_UNK_0F8);
080011C0? ? ? ? ldr? ? ?r0, =0x048080FA
080011C4? ? ? ? ldrh? ? r0, [r0, #0x0]
080011C8? ? ? ? strh? ? r0, [r6, #0x2]
*((short*) r6 + 2) = *((short*) REG_UNK_0FA);
080011CC? ? ? ? ldr? ? ?r0, =0x048080FC
080011D0? ? ? ? ldrh? ? r0, [r0, #0x0]
080011D4? ? ? ? strh? ? r0, [r6, #0x4]
*((short*) r6 + 4) = *((short*) REG_UNK_0FC);
080011D8? ? ? ? ldr? ? ?r0, =0x048080FE
080011DC? ? ? ? ldrh? ? r0, [r0, #0x0]
080011E0? ? ? ? strh? ? r0, [r6, #0x6]
*((short*) r6 + 6) = *((short*) REG_UNK_0FE);
080011E4? ? ? ? ldr? ? ?r0, =0x0380FFF4
080011E8? ? ? ? ldr? ? ?r0, [r0]
r0 = *0x0380FFF4; // global ptrs?, right at the end of RAM
080011EC? ? ? ? add? ? ?r0, r0, #0x300
080011F0? ? ? ? ldrh? ? r0, [r0, #0x6A]
r0 = (short)(r0[0x036A]);
080011F4? ? ? ? mov? ? ?r4, r0, lsl #10
r4 = r0 << 10;
080011F8? ? ? ? ldr? ? ?r0, [sp]
r0 = *sp; // r0 = *REG_UNK_0FA << 16 | *REG_UNK_0F8
080011FC? ? ? ? ldr? ? ?r1, [sp, #0x4]
r1 = *(sp+4); // r1 = *REG_UNK_0FE << 16 | *REG_UNK_0FC
08001200? ? ? ? mov? ? ?r2, r4
r2 = r4; // =  r0 << 10
08001204? ? ? ? mov? ? ?r3, r5
r3 = r5;
08001208? ? ? ? bl? ? ? #0x08010E70
function2();
0800120C? ? ? ? str? ? ?r0, [sp]
*sp = r0;
08001210? ? ? ? str? ? ?r1, [sp, #0x4]
*(sp+4) = r1;
08001214? ? ? ? mov? ? ?r2, #0x1
08001218? ? ? ? adds? ? r12, r0, r2
0800121C? ? ? ? adc? ? ?r3, r1, #0x0
08001220? ? ? ? str? ? ?r12, [sp]
08001224? ? ? ? str? ? ?r3, [sp, #0x4]
*((uint64*) sp) += 1;
08001228? ? ? ? umull? ?r1,r0,r4,r12
r1 = ((r4*r12) & 0xFFFFFFFF); r0 = ((r4 * r12) >> 32);
0800122C? ? ? ? mla? ? ?r0, r12, r5, r0
r0 += r5*r12;
08001230? ? ? ? mla? ? ?r0, r3, r4, r0
r0 += r3*r4;
08001234? ? ? ? str? ? ?r1, [sp]
*sp = r1;
08001238? ? ? ? str? ? ?r0, [sp, #0x4]
*(sp+4) = r0;
0800123C? ? ? ? ldrh? ? r1, [r6, #0x6]
08001240? ? ? ? ldr? ? ?r0, =0x048080F6
08001244? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0F6) = *((short*) r6 + 6);
08001248? ? ? ? ldrh? ? r1, [r6, #0x4]
0800124C? ? ? ? ldr? ? ?r0, =0x048080F4
08001250? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0F4) = *((short*) r6 + 4);
08001254? ? ? ? ldrh? ? r1, [r6, #0x2]
08001258? ? ? ? ldr? ? ?r0, =0x048080F2
0800125C? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0F2) = *((short*) r6 + 2);
08001260? ? ? ? ldrh? ? r0, [r6, #0x0]
08001264? ? ? ? orr? ? ?r1, r0, #0x1
08001268? ? ? ? ldr? ? ?r0, =0x048080F0
0800126C? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0F0) = *((short*) r6) | 0x0001;
08001270? ? ? ? ldr? ? ?r0, =0x048080EA
08001274? ? ? ? strh? ? r2, [r0, #0x0]
*((short*) REG_UNK_0EA) = *r2;
08001278? ? ? ? mov? ? ?r0, #0x40
r0 = 0x0040;
0800127C? ? ? ? bl? ? ? #0x080016A8
function1(); // second call
08001280? ? ? ? bl? ? ? #0x06FD7850
function3();
08001284? ? ? ? mov? ? ?r1, #0x2
08001288? ? ? ? ldr? ? ?r0, =0x048080AE
0800128C? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0AE) = 0x0002;
08001290? ? ? ? b? ? ? ?#0x080014A4
goto label1;
08001294? ? ? ? ldr? ? ?r2, =0x0000FFFF
08001298? ? ? ? ldr? ? ?r1, =0x04808010
0800129C? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_010) = 0xFFFF; 
080012A0? ? ? ? ldr? ? ?r2, =0x0000E03F
080012A4? ? ? ? ldr? ? ?r1, =0x04808012
080012A8? ? ? ? strh? ? r2, [r1, #0x0]
*((short*) REG_UNK_012) = 0xE03F; 
080012AC? ? ? ? ldr? ? ?r0, [r0]
080012B0? ? ? ? add? ? ?r0, r0, #0x600
080012B4? ? ? ? ldrh? ? r0, [r0, #0x1C]
r0 = (short)((*r0)[0x061C]); // r0 initialized somewhere else, second time
080012B8? ? ? ? ands? ? r0, r0, #0x20
080012BC? ? ? ? ldrneh? r0, [r1, #0x0]
080012C0? ? ? ? orrne? ?r0, r0, #0xC0
080012C4? ? ? ? strneh? r0, [r1, #0x0]
if (*r0 & 0x0020) {*((short*) REG_UNK_012) |= 0x00C0};
080012C8? ? ? ? ldr? ? ?r1, =0x00001FFF
080012CC? ? ? ? ldr? ? ?r0, =0x048081AE
080012D0? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_1AE) = 0x1FFF; 
080012D4? ? ? ? mov? ? ?r0, #0x0
080012D8? ? ? ? ldr? ? ?r1, =0x048081AA:16 = 0 // ? this isn't necessarily true?
080012DC? ? ? ? strh? ? r0, [r1, #0x0]
*((short*) REG_UNK_1AA) = 0x0000;
08001350? ? ? ? mov? ? ?r1, #0xB
08001354? ? ? ? ldr? ? ?r0, =0x048080E0
08001358? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0E0) = 0x000B;
0800135C? ? ? ? mov? ? ?r1, #0x0
08001360? ? ? ? ldr? ? ?r0, =0x04808008
08001364? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_008) = 0x0000;
08001368? ? ? ? ldr? ? ?r0, =0x0480800A
0800136C? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_00A) = 0x0000;
08001370? ? ? ? mov? ? ?r1, #0x1
08001374? ? ? ? ldr? ? ?r0, =0x04808004
08001378? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_004) = 0x0001;
0800137C? ? ? ? ldr? ? ?r0, =0x048080E8
08001380? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0E8) = 0x0001;
08001384? ? ? ? ldr? ? ?r0, =0x048080EA
08001388? ? ? ? strh? ? r1, [r0, #0x0]
*((short*) REG_UNK_0EA) = 0x0001;
0800138C? ? ? ? mov? ? ?r0, #0x20
r0 = 0x00000020;
08001390? ? ? ? bl? ? ? #0x080016A8
function1();
08001394? ? ? ? b? ? ? ?#0x080014A4
goto label1;

#41537 - sandymac - Fri Apr 29, 2005 3:11 pm

What tools will disassemble a DS rom?
_________________
"He who dares not offend cannot be honest." -- Thomas Paine

#41572 - josath - Fri Apr 29, 2005 7:52 pm

http://deadcoderssociety.org/www/dev/nds/news.html

This guy seems to have a tool, 'dsd' that disassembles a nds rom. runs in the console, portable to all platforms it looks like

#41592 - Series-8 - Sat Apr 30, 2005 12:41 am

Isn't the DS wireless baised on a known chip?

(the MAC would tell which manufacurer it was at least)

#41597 - sandymac - Sat Apr 30, 2005 3:02 am

Series-8 wrote:
Isn't the DS wireless baised on a known chip?

(the MAC would tell which manufacurer it was at least)


http://standards.ieee.org/cgi-bin/ouisearch?0009bf
Quote:
Nintendo Co.,Ltd.

_________________
"He who dares not offend cannot be honest." -- Thomas Paine

#41600 - TJ - Sat Apr 30, 2005 4:37 am

The WLAN chip is built by RF Micro Devices:

http://www.ferrago.com/portal/cluster/44293

#41653 - Abcd1234 - Sat Apr 30, 2005 9:26 pm

Well, based on that, it's probably RFMD's RF2958 chipset (it's the only integrated 802.11b package they have... the other one is just a low-level tranceiver for use in other chipsets). The spec for the chip can be found here. And, assuming that Metroid ROM dump is correct, the register set *probably* maps into the 0x04800000 memory range.[/url]

#41654 - Abcd1234 - Sat Apr 30, 2005 9:27 pm

Err, or perhaps 0x04808000.

#41655 - olimar - Sat Apr 30, 2005 9:29 pm



Last edited by olimar on Wed Aug 20, 2008 9:37 pm; edited 1 time in total

#41656 - Abcd1234 - Sat Apr 30, 2005 9:31 pm

Or perhaps not at all... there doesn't seem to be much correspondance between that code and the register set listed in the spec. So, either it's the wrong spec, the wrong code, or Nintendo is exposing a different controller interface...

#41657 - Abcd1234 - Sat Apr 30, 2005 9:33 pm

Oh, and of course the fourth option: I haven't a clue what I'm talking about. ;)

#41658 - Abcd1234 - Sat Apr 30, 2005 9:40 pm

Doh, I see, I am a tool (who is apparently too rushed to read). Those registers described in the document are internal registers programmed via a serial data interface (not unlike the VDP on the Sega Master System). So, the question is, what does the programmers interface look like...