PlanetSwitch Planet3DS PlanetVita PSP.de PlanetiPhone Classics Forum Handheld-Wiki

PGN-ID:[?] (Nicht eingeloggt)
Login
Registrieren
PlanetDS PlanetGameboy N-Page.de
portablegaming.de  

Zurück   portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung


Development Abteilung Ihr wollt für euren Lieblingshandheld Spiele oder Tools entwickeln?
Bitte die Präfixe benutzen!

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 07.07.2003, 18:47   #1
 
Registriert seit: 15.02.2003

mad4media hat die Renommee-Anzeige deaktiviert

Standard Zeitkritisches Programmieren!

Hi , ich habe mich noch nicht viel mit dem ARM Assembler befasst aber ich bin noch
"bewandert" von alten Zeiten.
ich weiß jetzt nicht wieviel Taktzyklen der GBA von einer register in den Speicher braucht ?
D.H. Wieviel Operationen kann er in der Sekunde machen !

Ich kann für das was ich machen will den DMA nicht benutzen.
Ich kann auch keinen Bitmap Mode benutzen und muß den TileMode benutzen.
Deswegen wird alles etwas rechenintensiv.
Wenn ich mir aber 3d Games auf dem GBA ansehe müßte es doch langen wenn ich auf eine Fläche von 100 Pixel auf 160 Pixel aufgeteilt in Tiles "animiere" .
Animieren auch im Sinne von neu berechnen pro Bewegung.
Dann sollte aber noch mindestens 30 bis 40 Prozent Rechenreserven sein für den Rest.
Ist das machbar ?

mad4media ist offline   Mit Zitat antworten
Sponsored Links
Alt 07.07.2003, 19:06   #2
Tom männlich
 
Benutzerbild von Tom
 
Registriert seit: 08.10.2002
Alter: 35

Tom hat die Renommee-Anzeige deaktiviert

Standard

Die GBA-CPU läuft auf 16 MHz. Also 16 Millionen Zyklen pro Sekunde

Am besten, Du rechnest mit Vblank-Zyklen.. Die laufen auf ~60Hz. Du hast also etwas mehr als 266-Tausend Rechen-Zyklen pro aufgebautem Bild..

Ja, dafür reicht es sicher.. Das Hauptproblem ist halt, dass Du den Screen erst im Arbeitsspeicher (am besten im internen) rendern, und ihn dann in Tiles umsortieren musst.. Das ist aber eher vom Programmieren her umständlich, als vom Rechenaufwand.

Warum kannst Du dabei DMA nicht benutzen? Es geht sicher schneller, wenn Du immer 8 Pixel gleichzeitig verschiebst.. Bei einem 160*100 Pixel Bild müsstest Du 2000 acht Pixel Blöcke verschieben. Du müsstest das ganze während einem VBlank machen. Ein VBlank dauert ~80000 Zyklen Du hast also mehr als genug Zeit die 16000 Pixel zu verschieben.

Also:

Bild in internem Arbeitsspeicher zeichnen ( dafür hast Du ~190000 Zyklen Zeit)


Während einem VBlank Bild in acht Pixel-Streifen in richtiger Reihenfolge in VRAM kopieren (dafür hast Du 80000 Zyklen Zeit)
Tom ist offline   Mit Zitat antworten
Alt 08.07.2003, 10:02   #3
 
Registriert seit: 15.02.2003

mad4media hat die Renommee-Anzeige deaktiviert

Standard Danke für das Posting

Hallo , danke für Dein Posting aber mir ist schon klar , daß wenn ich nur ganze Blöcke verschieben will, ich das mit dem DMA machen kann.

Mein Problem sind solche Sachen wie "Vertikales Stauchen" von Bitmaps.

Wenn das Ganze was ich stauchen muß in der Horizontalen wäre, dann würde ich das das mit HBLANK und Bildgröße Skalieren machen.
Ist halt eben Vertikal.
Dann muß ich Sachen noch Pixelweise berechnen bzw in die Tile Strucktur einsetzen.
Aber so wie ich das von Dir nun verstanden habe, heißt das, das es mit der Zeit reicht die Berechnungen durchzuführen und zu setzen, aber quasi aus dem Grund das es mit dem Bildschirm zeitkritisch wird das ganze erst in den schnellen RAM geschrieben und beim VBLANK mit dem DMA ins VRAM kopiert .
mad4media ist offline   Mit Zitat antworten
Alt 08.07.2003, 16:26   #4
Tom männlich
 
Benutzerbild von Tom
 
Registriert seit: 08.10.2002
Alter: 35

Tom hat die Renommee-Anzeige deaktiviert

Standard

Jupp..

So geht das sicher schneller, als wenn du jeden Bildpunkt einzeln in den VRAM kopierst.. Falls man sich nämlich nicht in einem Blank befindet und man ein Pixel speichern will wartet der GBA automatisch aufs nächste H-, oder V-Blank. Und das ist Verschwendung von Rechenzeit..
Tom ist offline   Mit Zitat antworten
Alt 08.07.2003, 20:02   #5
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard RE: Danke für das Posting

Hi!

Noch einige Daten zu den Timings,

es sind genau 4 CPU-Takte Pro Pixel möglich,
ein HBlank kann bis 416 (Ohne die Nächste Zeile zu beinflussen) und maximal bis 1232 CPU Zyklen haben. Der VBlank ist es ähnlich max. 83776 ohne ins neue Bild zu laufen und max. 280896 Zyklen.

Wichtig ist, dass ein HBlank immer erst nach der Zeile ausgeführt wird und der VBlank erst nach Zeile 160, also nicht wie beim Amiga/... je davor.

Virtuel gesehen ist ein GBA-Screen 308 Pixel breit wobei nur 240 auf den Screen sind, für die Tiefe gilt 228 und davon 160 sichtbar.
Also hat die GBA CPU einen Takt von 16777216 Hz

Die Speichergeschwindigkeiten sind unterschiedlich! Der ROM-Timings können eingstellt werden. Am besten dazu mein tut auf meiner HP lesen, es kommt auch bald auf devgba.

Wenn du viel berechnest wirst du wohl in den WRAM auslagern müssen. Wenn du aber mehrere Pixel in einen Schlag berechnen kannst, dann kannst du es dir auch sparen, ldmia/stmia mit mehreren Registern ist auch kaum langsammer als DMA.

Ach so, der Programmcode sollte wenn es zeitkritisch ist und er im ROM liegt Thumb sein, oder ARM im IWRAM. IWRam ist immer schneller.
Wichtig ist, das Bei Zufällige Speicherzugriff es etwas länger dauert, bei Sequentiellen gehts schneller (BURST) also ldm/stm oder DMA.

mfg goldmomo
goldmomo ist offline   Mit Zitat antworten
Antwort

  portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nintendo DS programmieren? Tomarr Sovai Sonstiges (Nintendo DS) 2 16.04.2007 13:19
homebrew programmieren Animus Homebrew (PSP) 0 26.11.2006 12:08
Flash programmieren Ranger Sonstiges (PSP) 2 21.09.2006 21:56
Handhelds Programmieren... testest Development Abteilung 7 03.07.2006 14:59
PC-Spiele programmieren DJ Molmed Development Abteilung 12 14.10.2002 19:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:34 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0
Template-Modifikationen durch TMS
PortableGaming.de © bk 2000 - 2010

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231