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 27.06.2003, 16:05   #1
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard Grundlegendes

Hi!
Ich möchte mich jetzt nach ein haufen BASIC-Sprachen
etwas mti C++ austopen, und will aber mit dem GBA
anfangen zu programmieren. Habe mir GCC mit allen
drum und dran geholt, und auch schon das erste Pro-
gramm/ROM erfolgreich kompiliert. OK aber jetzt will
ich etwas über die Struktur von GBA wissen.

So wie ich mir das vorstelle, muss ich mit C++ "nur"
an den angegebenen Speicheradressen des GBA-
Processors (ARM) werte belegen ?oder. Heißt, das
ich jetzt z.B. einen Register für Sprites habe (der auch
glaube 1024 Byte umfasst), in dem ich dann die
Eigenschaften + Data (also die Pixel) auf dieser Adresse
ablege. Also eine Art Structure von der ich den Pointer
erhalte, und um an die Werte heran zu kommen, imm
er die Adresse höhe gehe. Oder wie ist das?

Wenn es soetwas änliches wie Strukturen gibt,
wo kann man deren Aufbau nachlesen? Am besten
für alle Register.

Danke schonmal!
mfg olli
Vertex ist offline   Mit Zitat antworten
Sponsored Links
Alt 28.06.2003, 11:49   #2
ehem. Teammitglied
 
Benutzerbild von Tharo
 
Registriert seit: 02.09.2002
Ort: フランクフルト
Spielt gerade: FF7 Remake

Tharo wird schon bald berühmt werdenTharo wird schon bald berühmt werden

Standard

Ja, das hast du schon richtig verstanden.

Du machst beim C programmieren auf dem GBA im prinzip nichts anderes als Pointer auf die einzelnen Register zu verteilen und dann in diese zu schreiben wie in normale Variablen.
__________________
Ney ney ney. So viel Sand und keine Förmchen

Code:
Hey DU! Join uns im PG Discord! https://discord.gg/SVqutfFpTc
Tharo ist offline   Mit Zitat antworten
Alt 28.06.2003, 12:24   #3
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Danke, das hilft mir schonmal sehr!
Ich hätte da jetzt noch eine Frage zu den Einzelnen
Registern.

System ROM: Was kann man damit anstellen?
Ist der der von nutzen für Spiele?

Work RAM: Kann ich da meine Variablen auslagern?

Internal Work RAM ist das das selbe wie der Work
RAM nur schneller?

IO RAM, ist das der Register für die Eingabe von
Tasten, also wo ich prüfen lassen kann, welche
Taste gedrückt wurden ist? Und was kann ich damit
ausgeben lassen?

Palette: Werden sicherlich Paletten abgespeichert,
aber wie? Kann ich den RGB (also 24 Bit) bzw.
sogar 32 Bit für Alpha zuweisen, oder nur 16 Bit Werte
pro Index?

Video RAM: Mode 0,1,2,3 Sind da Tiles = Sprites?

OAM: Hier werden sicherlich die ganzen Sprites
abgespeichert ?oder Aber müssen die aufjedenfall
auf Paletten zugreifen, oder kann ich wie beim Video
RAM in Mode3 direkt mit Farben mittels RGB16 Funktion
umwandeln?

ROM: Kann ich hier Savegames speichern?
Wenn ja, können die dann von anderen Spielen
überschreiben werden?

ROM Image1 und ROM Image2: Wo liegt der Unterschied zum Register ROM?

Cart Ram: Hmm da kann ich mir eigentlich garnix
darunter vorstellen. Was ist das?

In welchen Register speichert man eigentlich Sounds
ab, wieviel Channels unterstützt GBA, sind das un-
komprimierte Sounds und wenn ja, haben die dann
auch so einen änlichen Aufbau wie eine WAV Datei,
natürlich nur mit anderen Header?

Warum kann der Processor nicht mit Float Werten
arbeiten? Kann man das nicht per Bit-Shifting oder so
selber machen?

Kann man auf einzelne Bits zugreifen (bin an BASIC
gewohnt, das ich höchstens auf Bytes zugreifen kann)

So das währen erstmal meine Fragen
thx schonmal!

mfg olli

Edit: Mir sind noch schnell 3 Fragen eingefallen:
Wie kann man Zufallszahlen erstellen lassen?

Unterstützt der GBA eigentlich Grundrechenarten
wie + - / * ^ und mod, weil man doch nicht die math.h
einbinden sollte ?oder
oder ist das alles nur auf Bit-Ebene möglich?

Und dann noch, ob der GameBoy Classic genau so
angesteuert wird, wie der GBA, nur ohne Palette.
Weil ich hier nur den GB-Classic herumliegen habe,
und ich damit eigentlich nix mehr anfangen kann, nur
höchstens jetzt dafür Spiele zu programmieren. Oder
ist das jetzt seeeeehhhhhrrrr viiieel schwerer als mit
dem GBA?
Vertex ist offline   Mit Zitat antworten
Alt 28.06.2003, 19:54   #4
ehem. Teammitglied
 
Benutzerbild von Tharo
 
Registriert seit: 02.09.2002
Ort: フランクフルト
Spielt gerade: FF7 Remake

Tharo wird schon bald berühmt werdenTharo wird schon bald berühmt werden

Standard

Zitat:
Original von Vertex
Danke, das hilft mir schonmal sehr!
Ich hätte da jetzt noch eine Frage zu den Einzelnen
Registern.

System ROM: Was kann man damit anstellen?
Ist der der von nutzen für Spiele?
ROm - Read only Memory. Da liegen all deine Daten drinnen.

Zitat:
Original von Vertex
Work RAM: Kann ich da meine Variablen auslagern?
Musst du dich beim c nich drum kümmern. Ja, dort liegen meistens deine Variablen

Zitat:
Original von Vertex
Internal Work RAM ist das das selbe wie der Work
RAM nur schneller?
Nicht genau das selbe. Es liegt näher an der CPU. Schneller, nur minimal.


Zitat:
Original von Vertex
IO RAM, ist das der Register für die Eingabe von
Tasten, also wo ich prüfen lassen kann, welche
Taste gedrückt wurden ist? Und was kann ich damit
ausgeben lassen?
O-RAM ist das Obejkt mamory. Hier liegen die Daten für die spites usw nebst den Sprite grafiken die du gerade benutzen willst.

Zitat:
Original von Vertex
Palette: Werden sicherlich Paletten abgespeichert,
aber wie? Kann ich den RGB (also 24 Bit) bzw.
sogar 32 Bit für Alpha zuweisen, oder nur 16 Bit Werte
pro Index?
Die Sprites und die meisten backgrounds benutzen eine Palette von 16x16 oder 256 Farben. Hintergrund und sprites getrennt also zwei paletten und maximal (außer in mode 3 und 5) 512 verschiedene Farben auf dem bildschirm.
Die Farben sind dort als 15Bit GBR Farben gespeichert.

Zitat:
Original von Vertex
Video RAM: Mode 0,1,2,3 Sind da Tiles = Sprites?
Nope, das ind die anzeigemodis.

Zitat:
Original von Vertex
OAM: Hier werden sicherlich die ganzen Sprites
abgespeichert ?oder Aber müssen die aufjedenfall
auf Paletten zugreifen, oder kann ich wie beim Video
RAM in Mode3 direkt mit Farben mittels RGB16 Funktion
umwandeln?
OMA sind die register für die einstellungen WIE welches sprite mit was angezeigt werden soll. Mit bilddaten hat diese registersammlung wenig zu tun.

Zitat:
Original von Vertex
ROM: Kann ich hier Savegames speichern?
Wenn ja, können die dann von anderen Spielen
überschreiben werden?
Es gibt einen beschreibbaren RAM (der iss je nach modul ggf. woanders) in dem kannst du schreiben wie in normalem ram auch, es bleibt aber erhalten.
Nutze wieder pointer

Zitat:
Original von Vertex
ROM Image1 und ROM Image2: Wo liegt der Unterschied zum Register ROM?
Ist kein unterschied. Es gibt zwei mögliche bedeutungen:
1. Du hast mehrere Raubkopien in deinem Modul. Image 1 und image 2. PFUI !!
2. Das ROM besteht normal aus mehreren "banken" ... so wie in der Schule, jede bank hat eine gewisse größe.
Die meisten module unterstützten eine funktion zu sagen "ignorier die ersten beiden bänke, die 3. ist die erste". Das ist aber nix was du brauchst.


Zitat:
Original von Vertex
Cart Ram: Hmm da kann ich mir eigentlich garnix
darunter vorstellen. Was ist das?
Das ist wenn das Modul extra RAM eingebaut hat, denke ich.

Zitat:
Original von Vertex
In welchen Register speichert man eigentlich Sounds
ab, wieviel Channels unterstützt GBA, sind das un-
komprimierte Sounds und wenn ja, haben die dann
auch so einen änlichen Aufbau wie eine WAV Datei,
natürlich nur mit anderen Header?
Fragen über fragen. <keuch>
Sound spielst du ab indem du erstmal den sound registern sagst das sie an sein sollen, und dann in zwei register immer den aktuellen "ton" hin kopierst.
Wie genau das geht frag TOM.

Zitat:
Original von Vertex
Warum kann der Processor nicht mit Float Werten
arbeiten? Kann man das nicht per Bit-Shifting oder so
selber machen?
Nintendo war zu knausig. Japs, du kannst es selber machen.


Zitat:
Original von Vertex
Kann man auf einzelne Bits zugreifen (bin an BASIC
gewohnt, das ich höchstens auf Bytes zugreifen kann)
Ließ mal mein 2. Tutorial, da benutze ich den zugriff auf einzele Bits.

Zitat:
Original von Vertex
So das währen erstmal meine Fragen
thx schonmal!

mfg olli
Juhu !!
Man das waren auch viele !!


Zitat:
Original von Vertex
Edit: Mir sind noch schnell 3 Fragen eingefallen:
fuck

Zitat:
Original von Vertex
Wie kann man Zufallszahlen erstellen lassen?
Hmm, das musst du per hand machen wie der PC auch: Zwei Zeitregister nehmen und die durch einander dividieren. Kommt immer was andres raus

Denke sicher hat jemand schon sowas erstellt.

Zitat:
Original von Vertex
Unterstützt der GBA eigentlich Grundrechenarten
wie + - / * ^ und mod, weil man doch nicht die math.h
einbinden sollte ?oder
oder ist das alles nur auf Bit-Ebene möglich?
klar kann er das. Er hat sogar register für hochzahlen und wurzel rechnungen!
Die grundrechenarten gehen ganz normal auch ohne extra befehle

Zitat:
Original von Vertex
Und dann noch, ob der GameBoy Classic genau so
angesteuert wird, wie der GBA, nur ohne Palette.
Weil ich hier nur den GB-Classic herumliegen habe,
und ich damit eigentlich nix mehr anfangen kann, nur
höchstens jetzt dafür Spiele zu programmieren. Oder
ist das jetzt seeeeehhhhhrrrr viiieel schwerer als mit
dem GBA?
Der GBA und GBC sind sich sehr ähnlich, absichtlich.
Aber sie haben zwei unterschiedliche CPUs. Wenn du ein GB spiel in deinen gba steckst springt die zweite CPU (ja er hat zwei) an und macht alles.
Nein, man kann nicht per software die cpu's wechseln.


ok ...
__________________
Ney ney ney. So viel Sand und keine Förmchen

Code:
Hey DU! Join uns im PG Discord! https://discord.gg/SVqutfFpTc
Tharo ist offline   Mit Zitat antworten
Alt 28.06.2003, 21:05   #5
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Vielen vielen Dank!
ROm : und welche Daten liegen da genau drinn?

In Deinem 2. Tutorial beschreibst Du, wie man den
Held in 12 Teile zerlegt. Ist dies unbedingt notwendig,
oder kann ich auch ein 32 * 24 Pixel großes Sprite
direkt nutzen? Und wegen der Palette: Reicht der Speicher nicht sogar für 4 256-Paletten und für
64 16-Paletten aus? Kann ich auch unterscheidliche
Paletten da speichern, also 2 256-Paletten und
32 16-Paletten? Ich meine weil in diesem ASM-Tut
steht, das der Palettenregister 1 KB also 1024 Byte
groß wäre
Übrigens ein super Tutorial!

So das wären jetzt nciht so viele Fragen
mfg olli

P.S. Kann man eigentlich hier auch irgendwie Karma-
Punkte vergeben, ich meine soviel Aufwand sollte ja
belohnt werden.
Vertex ist offline   Mit Zitat antworten
Alt 29.06.2003, 00:33   #6
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard

hi!

Also du hast genau 1kbyte für paletten, diese teilen sich in genau 2*256Paletten mit je 2Byte pro Farbe (16Bit (15Bit GBR)) auf. Die erste Palette ist nur für die normalen Bildschirme, die zweite ist nur für die Sprites.

Jede Palette kann auch als 16*16Farben Palette gesehen werden, wenn man einen Tile eine der 16Farbbänke zuteilt.

Wenn du mehr als 256Farben brauchst, musst du sie mittels des HBlanks ändern.

Zu den Sprites:

Grössen wären:

8x8,16x8,32x8,16x16,32x16,32x32,64x64,64x32

da Farbe 0 transparent ist, können sie auch gleiner sein (virtuell). Auf jedenfall sollten/müssen es in 8x8 Schritte bei der Grösse sein.


Achso Code im IRAM ist ca 4-5mal schneller (ARM) als im ROM/WRAM. Da habe ich ein Tut auf meiner HP drüber, kommt auch bald als html auf devgba.de.

mfg
goldmomo ist offline   Mit Zitat antworten
Alt 29.06.2003, 09:08   #7
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Danke!
Achso, stimmt ja, die Farbe ist ja ein 2 Byte großer
Wert. Wenn ich überhaupt Transparenz nutzen möchte,
muss ich da in dem Sprite-Data Array einfach für den
Pixel den Palettenindex 0 zuweisen, oder einfach in die
Palette RGB(0,0,0) einmal als Farbe/index verwenden?
Kann oder muss man die Paletten in 2 * 256 und 16*16
Paletten unterteilen? Oder würde auch 4 * 256 bzw.
32 * 16 gehen?

Und wegen ROM / WRAM verstehe ich leider noch nicht
so, weil ich absolut null Ahnung von ASM habe sorry.

Wie macht Ihr eigentlich Eure Kollisionserkennung?
Kann man den GBA auch Pixekollision zutrauen?

mfg olli
Vertex ist offline   Mit Zitat antworten
Alt 29.06.2003, 12:36   #8
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard

Farbe 0 ist bei Sprites Transparent.

Zu den Paletten,
die normalen Bildschirmmodies können nur auf EINE 256 Palette zugreigen. Die zweite ist nur für die Sprites.

Bei den Tilemodes kannst du wählen ob ein Teil 256 Farben hat oder aus eine der 16x16Paletten die Farben nimmt. Alle Hintergründe benutzen aber die selbe 256Palette. Selbiges gilt für die Sprites.
Du kannst dir die Palette natürlich gedanklich auch teilen, musst dann bei mehr als 16Farben pro Teil aber 256Teile nehmen.

Mit der Kollision ist es schlecht auf dem GBA, der hat komischerweise keine Hardwarekollision, da musst du dir etwas ausdenken.
goldmomo ist offline   Mit Zitat antworten
Alt 29.06.2003, 17:02   #9
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Ok dann währe bis auf 2 Dinge alles geklährt...
Wenn man eine Slideshow bzw. ein Video abspielen
möchte, habe ich mir ausgerechnet, würden ca.
42 Frames herauskommen. Weil ich pro Frame 3
64*64 Sprites verwenden würde, und bei max. 128
Sprites ist das m.M. nach nicht sehr viel. Selbst mein
Taschenrechner(nagut er ist monochrome) schafft da
mehr. Jetzt weiss ich aber nicht noch nicht, ob die Datas
für jeden Sprite in den WorkRAM ausgelagert werden,
oder doch in den VideoRAM. Weil 128 Sprites sind
etwas wenig, wenn man bedenkt, wenn z.B. eine
Laufanimation benötigt wird, meinetwegen 20 Frames
dafür drauf gehen. Also ob man mehr Sprites verwenden
kann, durch manipulation der Datas, da der WorkRAM
32KB hat. Mario Land hat doch sicherlich auch ein
haufen Levels, die alle mit anderen Sprites bestückt
sind, und da würden doch 128 Sprites insgesamt nicht
ausreichen ?oder

Und dann würde mich interessieren, ob man eine Art
midi Format schreiben kann. Man kann ja die Töne
alle anhand der Noten berechnen. Nur würde mich
interessieren, ob ich vieleicht so ein Sample das ca.
1 Sekunde lang geht als Data nehme und loopen
lasse. Und je Note diese Data wieder manipuliere.

Ich hoffe, ich habe mich nicht zu dumm ausgedrückt
mfg olli
Vertex ist offline   Mit Zitat antworten
Alt 29.06.2003, 20:55   #10
ehem. Teammitglied
 
Benutzerbild von Tharo
 
Registriert seit: 02.09.2002
Ort: フランクフルト
Spielt gerade: FF7 Remake

Tharo wird schon bald berühmt werdenTharo wird schon bald berühmt werden

Standard

Ja man kann es schreiben.
Aber auch für dich gild das, was für alle coder und besucher hier gild:

Keine Wunsche äußern, selber machen
__________________
Ney ney ney. So viel Sand und keine Förmchen

Code:
Hey DU! Join uns im PG Discord! https://discord.gg/SVqutfFpTc
Tharo 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



Alle Zeitangaben in WEZ +2. Es ist jetzt 20:57 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