Hallo Ich habe mir PAlib und devkitPro installiert und auch schon mein erstes Hello World fertig. Ich würde aber gerne ein paar I/O Pins nutzen, um so externe Hardware zu steuern. Der GBA Port ist ja eigentlich ein Datenbus, kann man da irgendwie was machen? Ich finde leider keinen Ansatz, wie ich den mit o.g. Tools ansteuern kann. http://nocash.emubase.de/gbatek.htm#auxgbagamepakbus http://www.palib.info/wiki_ger/doku.php?id=homepage
Es ist ein Datenbus. Einfach auf den entsprechende Speicheradresse lesend oder schreibend zugreifen. Tipp: Klopp PALib in die Tonne. Das ist nett um sich was flottes zusammenzuklauben aber bei allem anderen kommt es sich mit Bibliotheken zu schnell in die Quere. installiert u.A. auch gerne mal eine alte Version der Toolchain über eine bestehende Neuere... Auf No$Cash findest du das komplette Timing für den Slot.
someone schrieb: > Es ist ein Datenbus. Einfach auf den entsprechende Speicheradresse > lesend oder schreibend zugreifen. So weit dachte ich es mir auch. Die Adressen sind auch klar. Aber ich finde nicht, wie ich die beschreibe. 08000000h GBA Slot ROM (max. 32MB) 0A000000h GBA Slot RAM (max. 64KB) someone schrieb: > Tipp: Klopp PALib in die Tonne. Gibt's einen Alternativvorschlag? Danke.
Jo. Die Toolchain direkt. Such mal nach DevKitPro, da ist die Toolchain für den ARM mit dabei und dort findest du auch die libs und header für den NDS verlinkt. Naja, wenn du z.B. einfach in C die Addresse direkt beschreibst aka
1 | *(volatile unsigned short *)0x08000000 = 0x1234 ; |
Wirst du halt direkt den Datanbus ansprechen. Der wird zuerst die Adresse 0 und dann die Daten (0x1234) mit jeweils passenden Steuersignalen auflegen. Die Adresse sicherst und dekodierst du, die Daten greifst du anschliessend ab und speicherst bzw verwendest du direkt. (Vorsicht: Die ROM Adresse ist keine Byte- sondern Wortadresse)
Leider habe ich noch keinen Erfolg. Mit dem Scope kann ich leider keinerlei Signaländerungen am Port messen, wenn ich das folgende Programm laufen lasse. Auch nicht an der /WR Leitung
1 | #include <PA9.h> |
2 | #include <stdio.h> |
3 | #include <nds.h> |
4 | |
5 | int main() |
6 | {
|
7 | // Infinite loop to keep the program running
|
8 | while (1) |
9 | {
|
10 | //*(volatile unsigned short *)0x08000000 = 0x0000 ;
|
11 | //*SRAM = (uint8)0xff;
|
12 | *(volatile unsigned short *)0x0AFFFFFF = 0xFFFF ; |
13 | swiDelay(610000); |
14 | //*SRAM = (uint8)0x00;
|
15 | *(volatile unsigned short *)0x0AFFFFFF = 0x0000 ; |
16 | swiDelay(610000); |
17 | }
|
18 | }
|
Versuch mal
1 | sysSetCartOwner(BUS_OWNER_ARM9); |
Schau dir mal die Sources zu libnds/rumble an. Da hängen einige Arten direkt an den Pins. http://devkitpro.svn.sourceforge.net/viewvc/devkitpro/trunk/libnds/source/arm9/rumble.c?revision=4529&view=markup
someone schrieb: > Versuch mal sysSetCartOwner(BUS_OWNER_ARM9); Danke, das hilft. Auch wenn ich nirgends eine aussagekräftige Doku dazu finde :-( Mal sehen, wie ich jetzt weiterkomme. Ich werde dann berichten.
Die Doku findest du bei EXMEMCNT. Sind halt alles reverse-engeneered Infos von Hobbyisten. Da ist viel unvollständig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.