GBAで何やら作ってみようという人の為のスレ。ライセンス不要。
初心者歓迎。質問歓迎。英語苦手な人歓迎。冷やかし歓迎。ネカマ歓迎。
資料、リンク等
http://www.devrs.com/gba/
http://www.gbadev.org/
http://www.vsync.org/agb/
http://nocash.emubase.de/gbatek.htm
http://www.bomber.co.jp/chaola/docs/ARM/
開発環境
DevkitAdvance http://devkitadv.sourceforge.net/index.html
DevkitARM http://www.devkit.tk/
VisualHAM http://visualham.console-dev.de/
DragonBasic http://jm-basic.com/dragon/index.php
GBA Wiki
http://cgi.f26.aaacafe.ne.jp/~gbawiki/pukiwiki/pukiwiki.php
【GBA】Linuxから目覚めるぼくらのゲームボーイ!
http://pc5.2ch.net/test/read.cgi/linux/1070983168/
ゲームボーイアドバンス(GBA)開発@ゲ製板(避難所)
http://bbs.gamdev.org/test/read.cgi/gamedev/1055111303/
前スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1013750899/
ゲームボーイアドバンス(GBA)非公式開発 Part2
■ このスレッドは過去ログ倉庫に格納されています
04/10/30 15:50:05ID:XmInH8YR
159名前は開発中のものです。
2005/05/28(土) 23:46:29ID:w56wSIin まずは>>158を日本語に訳してくれる有志を募ろうか
160名前は開発中のものです。
2005/05/29(日) 00:44:05ID:tpMSB+bX まあ、そこまで言わなくても一行の文章を短く終わらせて書けば。
161名前は開発中のものです。
2005/05/29(日) 02:55:21ID:UFZ9c0zv SaTaって人が全く同じことやってるよ
162名前は開発中のものです。
2005/05/31(火) 16:11:29ID:llLI5kWl memsetは使えてるっぽいけどsprintfは使えないのかな?DevkitAdvance
-nostdlib ってどういう意味だろ?
最適化は面倒だからパスしようかな、とりあえずの目標はクリアしたり・・・
-nostdlib ってどういう意味だろ?
最適化は面倒だからパスしようかな、とりあえずの目標はクリアしたり・・・
163名前は開発中のものです。
2005/06/01(水) 01:30:53ID:61IqLEFZ このまったりとした流れなら言えそうなので質問、音楽鳴らそうと思ってダイレクトサウンドについて調べた
C言語ファイルでデータを記述するものとオブジェクトデータでデータを記述するものがあるらしい
容量的にはオブジェクトデータの方が軽くなるらしいので使おうと思ったがC言語ファイルのデータを読むサンプルしか見つからない
pcmconvでコンバートしその後オブジェクトデータを出力するらしいbin2oを実行しても元ファイルに非常に似たファイルが出てくるだけです
その後調べてみたところリンカーの辺りで結合するらしいのですが、分からない事がいくつか出てきました
どのようにして結合すれば良いのでしょうか?
またデータがどこにおいてあるのかどうやって調べれば良いのでしょうか?
一番の問題としてポインタすら完全には理解できていない人の手に負えるものでしょうか?
開発環境はDevkitAdvanceのバージョン4です
C言語ファイルでデータを記述するものとオブジェクトデータでデータを記述するものがあるらしい
容量的にはオブジェクトデータの方が軽くなるらしいので使おうと思ったがC言語ファイルのデータを読むサンプルしか見つからない
pcmconvでコンバートしその後オブジェクトデータを出力するらしいbin2oを実行しても元ファイルに非常に似たファイルが出てくるだけです
その後調べてみたところリンカーの辺りで結合するらしいのですが、分からない事がいくつか出てきました
どのようにして結合すれば良いのでしょうか?
またデータがどこにおいてあるのかどうやって調べれば良いのでしょうか?
一番の問題としてポインタすら完全には理解できていない人の手に負えるものでしょうか?
開発環境はDevkitAdvanceのバージョン4です
164名前は開発中のものです。
2005/06/01(水) 06:10:01ID:by7iY2yF >>163
ヒント:__iwram_overlay_lma
ヒント:__iwram_overlay_lma
165名前は開発中のものです。
2005/06/01(水) 07:29:52ID:61IqLEFZ (u8 *)(&__iwram_overlay_lma)
これですか?
宣言の後にこれで読めると言うのは分かりました。
同じ所でファイルそのものをバイナリで結合していたのですが
こんな事をやっても大丈夫?と言うかこれが普通なのでしょうか?
(とりあえず確めてみてだめだったらもう一度ヒントもらいに来ます
>>164 有難うございました
これですか?
宣言の後にこれで読めると言うのは分かりました。
同じ所でファイルそのものをバイナリで結合していたのですが
こんな事をやっても大丈夫?と言うかこれが普通なのでしょうか?
(とりあえず確めてみてだめだったらもう一度ヒントもらいに来ます
>>164 有難うございました
166名前は開発中のものです。
2005/06/01(水) 10:00:55ID:OOZ2G8Rs __iwram_overlay_lmaは生のデータを後から追加で結合したいときだけに使え。
.oを作れるならリンクしたほうが確実だぞ。リンクの仕方は分かってるのか?
bin2o hoge.bin hoge.o !hogeでhoge.oを作ったとして
Cから使うにはextern const unsigned char hoge[];と宣言するだけだ。
.oを作れるならリンクしたほうが確実だぞ。リンクの仕方は分かってるのか?
bin2o hoge.bin hoge.o !hogeでhoge.oを作ったとして
Cから使うにはextern const unsigned char hoge[];と宣言するだけだ。
167名前は開発中のものです。
2005/06/01(水) 11:02:19ID:61IqLEFZ リンクの仕方もわかってません
makefile.txtに色々書きこんでバッチ処理の時に一緒に読み込ませてるのはわかるので
とりあえずググッていくつかの.o読み込んでるサンプル眺めて来ます
ついでにC言語ファイルでは音が出せました
けど割り込みで失敗します
研究所の割り込みのソースのブランクをTIMER0に変えるだけでは駄目なのでしょうか?
makefile.txtに色々書きこんでバッチ処理の時に一緒に読み込ませてるのはわかるので
とりあえずググッていくつかの.o読み込んでるサンプル眺めて来ます
ついでにC言語ファイルでは音が出せました
けど割り込みで失敗します
研究所の割り込みのソースのブランクをTIMER0に変えるだけでは駄目なのでしょうか?
168名前は開発中のものです。
2005/06/01(水) 12:22:10ID:OOZ2G8Rs リンクの仕方が分からないようなら書こうと思ったけど、調べるんならいいや。
>研究所の割り込みのソースのブランクをTIMER0に変えるだけでは駄目なのでしょうか?
TM0CNTの割り込みフラグは立ててるか?
>研究所の割り込みのソースのブランクをTIMER0に変えるだけでは駄目なのでしょうか?
TM0CNTの割り込みフラグは立ててるか?
169名前は開発中のものです。
2005/06/01(水) 19:16:47ID:61IqLEFZ >TM0CNTの割り込みフラグ
それだ!
タイマー開始のところの数字弄ったら解決できました。有難うございます。
それだ!
タイマー開始のところの数字弄ったら解決できました。有難うございます。
170162
2005/06/02(木) 15:39:03ID:F8Q5wqFY やっぱり最適化してます
プログラムをIRAMに置かない場合、thumb用でコンパイルしないといけないんだよな?
objdumpで逆アセンブルしてみたら4Byte間隔で0x0800****番地に配置されて
いるのはARM用にコンパイルされてるから?
#リンク時に -Ttext 0x08000000 としてます
コンパイル時の指定はどうすればthumbでコンパイルできるの?
-bかな?machineの指定はどうすればいいんだろう・・・
プログラムをIRAMに置かない場合、thumb用でコンパイルしないといけないんだよな?
objdumpで逆アセンブルしてみたら4Byte間隔で0x0800****番地に配置されて
いるのはARM用にコンパイルされてるから?
#リンク時に -Ttext 0x08000000 としてます
コンパイル時の指定はどうすればthumbでコンパイルできるの?
-bかな?machineの指定はどうすればいいんだろう・・・
171名前は開発中のものです。
2005/06/02(木) 16:32:58ID:mT3sDBIJ172162
2005/06/02(木) 17:41:22ID:F8Q5wqFY ありがと>>171
いろいろ調べてみたけど、みんな気にしてないのかな?
たいてい指定無しでmakefileつくってる。-mthumb-interworkだけで
> ちなみにARMだろうかTHUMBだろうが動くんじゃないかな。
うん、いまのとこ何も指定しなくても(ってことはARMか)でも動いてる
いままではCのプログラムとしては最適化してきたけど
GBA用としてはまったく最適化してないの
つーか、GBAの機能はビデオバッファとその指定(MODE3,BG2限定)、キー入力の
#define KEYS *(volatile u32*)0x04000130
しかつかってないや・・・
みんなすごいね、割り込みとか、タイマーとか、スプライトとか、音とか・・・
いろいろ調べてみたけど、みんな気にしてないのかな?
たいてい指定無しでmakefileつくってる。-mthumb-interworkだけで
> ちなみにARMだろうかTHUMBだろうが動くんじゃないかな。
うん、いまのとこ何も指定しなくても(ってことはARMか)でも動いてる
いままではCのプログラムとしては最適化してきたけど
GBA用としてはまったく最適化してないの
つーか、GBAの機能はビデオバッファとその指定(MODE3,BG2限定)、キー入力の
#define KEYS *(volatile u32*)0x04000130
しかつかってないや・・・
みんなすごいね、割り込みとか、タイマーとか、スプライトとか、音とか・・・
173名前は開発中のものです。
2005/06/03(金) 22:30:00ID:aUPd22sd typedef const unsigned char u8;
u8 foo[] = { }
っていうデータの音楽のファイルを馬鹿でかく(1.4MB)してコンパイルしよう
としたら
Virtual memory exhausted: Permission denied
って出るんだが…これってメモリに入りきらないって事?
普段はROMに置きっぱなしで必要な時だけ読み出すとかで解決出来るのであればその解決方を誰か教えて頂けないでしょうか?
u8 foo[] = { }
っていうデータの音楽のファイルを馬鹿でかく(1.4MB)してコンパイルしよう
としたら
Virtual memory exhausted: Permission denied
って出るんだが…これってメモリに入りきらないって事?
普段はROMに置きっぱなしで必要な時だけ読み出すとかで解決出来るのであればその解決方を誰か教えて頂けないでしょうか?
174名前は開発中のものです。
2005/06/04(土) 00:22:05ID:VXQa3VA9 >>173
Cのソースがでかすぎてコンパイル出来ねえよってこと。
コンパイルオプションに-O0(マイナスオーゼロ)をつけるか
bin2oで出来たオブジェクトファイルを直接リンクするか
ソースをasm(.s)で書け。
Cのソースがでかすぎてコンパイル出来ねえよってこと。
コンパイルオプションに-O0(マイナスオーゼロ)をつけるか
bin2oで出来たオブジェクトファイルを直接リンクするか
ソースをasm(.s)で書け。
175名前は開発中のものです。
2005/06/04(土) 08:49:38ID:Ri0Izx+x オブジェクトファイルのリンクが出来ない…orz
研究所のWav2gba_guiで.oファイルを作り
makefileの
OFILES += main.o \
bgm01.o
ってやってるんだが何度やっても変数がないって罵られる
makefileが悪いのかそれとも他に原因があるのか…
誰か初心者が陥っているであろうミスを教えてくれ
研究所のWav2gba_guiで.oファイルを作り
makefileの
OFILES += main.o \
bgm01.o
ってやってるんだが何度やっても変数がないって罵られる
makefileが悪いのかそれとも他に原因があるのか…
誰か初心者が陥っているであろうミスを教えてくれ
176175
2005/06/04(土) 10:32:44ID:Ri0Izx+x 自己レス
とりあえず原点回帰ということで
Dark Fader's site
のwav2gba bin2oで.oファイル作ったらコンパイルできた
今度は音がならない…
とりあえず原点回帰ということで
Dark Fader's site
のwav2gba bin2oで.oファイル作ったらコンパイルできた
今度は音がならない…
177175
2005/06/04(土) 16:55:43ID:Ri0Izx+x またも自己レス
宣言をu16にしたら音は出たんだがCソースのデータでやってた時と比べて激しくノイジー
次から次に問題が出てくるんだが自分なんか間違ったやり方でやってるんだろうか?
宣言をu16にしたら音は出たんだがCソースのデータでやってた時と比べて激しくノイジー
次から次に問題が出てくるんだが自分なんか間違ったやり方でやってるんだろうか?
178175
2005/06/04(土) 17:23:30ID:Ri0Izx+x もう何が原因だったのかわからない。
もう一度u8に戻しても音再生できたしorz
ついでにノイジーになったのはシンクロナイズ外してたからでコンパイル時のミスではありませんでした
まる一日掛けて駄レスしまくってスマソ
もう一度u8に戻しても音再生できたしorz
ついでにノイジーになったのはシンクロナイズ外してたからでコンパイル時のミスではありませんでした
まる一日掛けて駄レスしまくってスマソ
179162
2005/06/06(月) 21:58:46ID:PaMPnmfV 質問です
memcpyでローカル変数の配列データをVRAMへデータをセットしようとすると
上手くいく時となんか行かない時が規則的に現れるんですが
原因はなんだと思いますか?
現状は:
配列データは多分予想どおりのデータが入ってる。
#memcpyを使わないでforループで書き込むと上手くいってる
objdumpでみると多分/arm-agb-elf/lib/thumb/interwork/libc.aの中のmemcpyをリンクしている
ヒントでもいいからプリーズ
memcpyでローカル変数の配列データをVRAMへデータをセットしようとすると
上手くいく時となんか行かない時が規則的に現れるんですが
原因はなんだと思いますか?
現状は:
配列データは多分予想どおりのデータが入ってる。
#memcpyを使わないでforループで書き込むと上手くいってる
objdumpでみると多分/arm-agb-elf/lib/thumb/interwork/libc.aの中のmemcpyをリンクしている
ヒントでもいいからプリーズ
180162
2005/06/06(月) 22:32:35ID:PaMPnmfV 追加:
memcpyの座標が1dot x方向に増えた座標へcopyすると上手くいく
#逆に上手くいってたものが上手く色を塗らなくなった
どう変かといえば、白が薄ピンク色になる
#オセロ盤で本来なら全部白いマスのはずが白いマスとピンクのマスが交互に並んでしまう
memcpyの座標が1dot x方向に増えた座標へcopyすると上手くいく
#逆に上手くいってたものが上手く色を塗らなくなった
どう変かといえば、白が薄ピンク色になる
#オセロ盤で本来なら全部白いマスのはずが白いマスとピンクのマスが交互に並んでしまう
181名前は開発中のものです。
2005/06/06(月) 22:41:15ID:TKmnaeHh ヒント: バス幅
182162
2005/06/06(月) 22:51:05ID:PaMPnmfV あ、もしかして書込み先が4Byte境界じゃないと上手く動かないのかな?
183名前は開発中のものです。
2005/06/06(月) 23:34:11ID:TKmnaeHh ヒント: 8× 16○ 32○
184162
2005/06/06(月) 23:46:08ID:PaMPnmfV >>182 サンクス
ここのページの
ttp://home.att.ne.jp/blue/moonlight/uraha/gbadevmemo.html
真ん中少し上の「メモリアクセス速度について」の
VRAMのwriteの書き込み制限(8bitでは×)のことかな?
こんな制限あったんだ、なるほど
wmemcpyを使えばいいんだろうか?
ここのページの
ttp://home.att.ne.jp/blue/moonlight/uraha/gbadevmemo.html
真ん中少し上の「メモリアクセス速度について」の
VRAMのwriteの書き込み制限(8bitでは×)のことかな?
こんな制限あったんだ、なるほど
wmemcpyを使えばいいんだろうか?
185名前は開発中のものです。
2005/06/06(月) 23:47:19ID:s0kMJQK9 http://www.work.de/nocash/gbatek.htm#memorymap
Address Bus Width and CPU Read/Write Access Widths
VRAMって使いづらいよね。
Address Bus Width and CPU Read/Write Access Widths
VRAMって使いづらいよね。
186名前は開発中のものです。
2005/06/07(火) 01:57:10ID:hxwVLTzF ドット単位でなにかしたいのなら
仮想VRAMに書いてドカッとコピーするか、
奇数偶数で演算を変えればいいだけだが?
もっともGBAはそういうアーキじゃないけどな
仮想VRAMに書いてドカッとコピーするか、
奇数偶数で演算を変えればいいだけだが?
もっともGBAはそういうアーキじゃないけどな
187名前は開発中のものです。
2005/06/07(火) 09:09:18ID:x9MyQnam VRAMは書き込みが遅いので、
mallocでとっておいて、
そこに書いた後DMA転送するのがいいです。
バイト単位で書き込みできるしね。
外部ファイルから取り込んだビットマップデータとかならDMA一発だしな。
mallocでとっておいて、
そこに書いた後DMA転送するのがいいです。
バイト単位で書き込みできるしね。
外部ファイルから取り込んだビットマップデータとかならDMA一発だしな。
188162
2005/06/07(火) 18:32:29ID:ZI5uYn33 mallocを使うのってsbrkを移植するの?
newlibを移植すればいいのかな?このあたりのことはよくわからん
この辺に書いてあるかな?
C/C++による組み込みシステムプログラミング
ttp://www.amazon.co.jp/exec/obidos/ASIN/4873110130/
newlibを移植すればいいのかな?このあたりのことはよくわからん
この辺に書いてあるかな?
C/C++による組み込みシステムプログラミング
ttp://www.amazon.co.jp/exec/obidos/ASIN/4873110130/
189名前は開発中のものです。
2005/06/07(火) 21:20:15ID:3YUGrd7x >>188
#include <malloc.h>
u16* pseudoscreen;
if ((pseudoscreen = malloc(sizeof(u16) * ScreenWidth * ScreenHeight)) == NULL) while (1) {};
とか。
#include <malloc.h>
u16* pseudoscreen;
if ((pseudoscreen = malloc(sizeof(u16) * ScreenWidth * ScreenHeight)) == NULL) while (1) {};
とか。
190162
2005/06/07(火) 23:38:21ID:ZI5uYn33 mallocって前もって準備しなくても使えるの?devkitadvance使ってます
PCでmallocの使い方はわかるけど、GBAの開発でそのまま使えるとは思わなかった
manでみるとsbrkのサポートが必要みたいだけどこれはどうなってるの?
使えるなら質問
mallocで確保されるメモリはIWRAM領域から確保されるの?
EWRAM領域?bssで指定された領域?グローバル変数との使い分けは大丈夫なの?
PCでmallocの使い方はわかるけど、GBAの開発でそのまま使えるとは思わなかった
manでみるとsbrkのサポートが必要みたいだけどこれはどうなってるの?
使えるなら質問
mallocで確保されるメモリはIWRAM領域から確保されるの?
EWRAM領域?bssで指定された領域?グローバル変数との使い分けは大丈夫なの?
191名前は開発中のものです。
2005/06/07(火) 23:51:14ID:f73nwpU2 実際にmallocしてアドレス確認すりゃいいと思うんだが
192名前は開発中のものです。
2005/06/08(水) 00:20:06ID:mCV1pDkj >>190
つ[crt0.s]
つ[crt0.s]
193名前は開発中のものです。
2005/06/08(水) 02:08:57ID:Rbo74Gtn それよりはlnkscriptとgccの吐くmapファイルを見比べるべきだと思うが。
crt0.Sなんか見ても役に立たんぞ。
crt0.Sなんか見ても役に立たんぞ。
194名前は開発中のものです。
2005/06/08(水) 10:20:33ID:q69/QVDR >>190
つ「論よりRUN」
つ「論よりRUN」
195名前は開発中のものです。
2005/06/08(水) 11:15:54ID:VgzV7AVL 悩むな
u16 buff[ScreenWidth * ScreenHeight];
これでおっけー
u16 buff[ScreenWidth * ScreenHeight];
これでおっけー
196162
2005/06/08(水) 23:15:03ID:aq/RdM9p ヒントがあるかと思ってnewlibのコンパイルに挑戦
makeは出来たっぽいけどmake installが上手くいかん
でもlibc.aは出来たし(同じとは限らんが)、malloc等標準ライブラリのソースも
付いてたのはうれしい発見だな
#おかげでmemcpyが8bit毎にコピーしてるのが確かめられた
ふーん、libc.aって***.oをarで固めたものなんだ。
やっぱり組み込み側の知識が足りんなぁ
参考資料:
Interface2005年1月号フリーソフトウエア活用組み込みプログラミング
第4章 C標準ライブラリ(newlib)を使ってみよう
makeは出来たっぽいけどmake installが上手くいかん
でもlibc.aは出来たし(同じとは限らんが)、malloc等標準ライブラリのソースも
付いてたのはうれしい発見だな
#おかげでmemcpyが8bit毎にコピーしてるのが確かめられた
ふーん、libc.aって***.oをarで固めたものなんだ。
やっぱり組み込み側の知識が足りんなぁ
参考資料:
Interface2005年1月号フリーソフトウエア活用組み込みプログラミング
第4章 C標準ライブラリ(newlib)を使ってみよう
197名前は開発中のものです。
2005/06/09(木) 01:51:48ID:cFLah592 >>196
おいおい、ゲーム製作とは違うところに逝ってるぞw
おいおい、ゲーム製作とは違うところに逝ってるぞw
198名前は開発中のものです。
2005/06/09(木) 12:45:46ID:TWsYVQDp 質問が途切れたみたいなので質問
PCMの合成はどうすれば出来るのでしょうか?
ゲーム製作時にどのチャンネルはBGMとか決めておくものなのでしょうか?
(英語の説明書が理解できなくて海外のサウンドドライバの使い方がわからない orz
PCMの合成はどうすれば出来るのでしょうか?
ゲーム製作時にどのチャンネルはBGMとか決めておくものなのでしょうか?
(英語の説明書が理解できなくて海外のサウンドドライバの使い方がわからない orz
199名前は開発中のものです。
2005/06/09(木) 15:55:56ID:NH9D76hP200名前は開発中のものです。
2005/06/09(木) 16:40:56ID:tx6qK9Bb201名前は開発中のものです。
2005/06/09(木) 17:35:13ID:Cuk1n6wp202名前は開発中のものです。
2005/06/09(木) 18:04:21ID:txnsDHBq >>201
signed shortで合成しておいて、後で一括してクリッピングしてもいいかもな
signed shortで合成しておいて、後で一括してクリッピングしてもいいかもな
203名前は開発中のものです。
2005/06/10(金) 00:05:29ID:3crWFAgA >>200
つ ttp://belogic.com/gba/directsound.shtml
つ ttp://belogic.com/gba/directsound.shtml
204名前は開発中のものです。
2005/06/10(金) 14:55:38ID:YPq61nfL すっごい素人なんだけどBGMって割り込みで鳴らすの?
205名前は開発中のものです。
2005/06/10(金) 17:17:15ID:sKosQ+eo 音用のメモリがあるからそこにDMA転送で入れる。
DMAはTimer割り込み(正しくはFIFOとか言うのが割り込んでるらしいが)で送らせるように設定しておく。
ついでにビットレートはTimerの設定速度によって決まる(なんか勝手にゲーム本体がそうする)からTimerで使う値を多く取れば
低解像度(ビットレートが少ない低音質の音楽ファイル)の音が鳴る(高音質のはむちゃくちゃ遅くなる)
だから使いたい音のビットレートによってTimerに入れる値は変わる。
…らしい(所詮勘でプログラムしてるから理解していない厨wwww
DMAはTimer割り込み(正しくはFIFOとか言うのが割り込んでるらしいが)で送らせるように設定しておく。
ついでにビットレートはTimerの設定速度によって決まる(なんか勝手にゲーム本体がそうする)からTimerで使う値を多く取れば
低解像度(ビットレートが少ない低音質の音楽ファイル)の音が鳴る(高音質のはむちゃくちゃ遅くなる)
だから使いたい音のビットレートによってTimerに入れる値は変わる。
…らしい(所詮勘でプログラムしてるから理解していない厨wwww
206162
2005/06/13(月) 00:15:38ID:WeLHi+pU チラシの裏:
newlibのmake,make install成功。
上手くいかなかった原因はdevkitadb/binがPATHの検索順で自分でコンパイルしたarm-elf-**より先にあったためと思われる
対処方法としてdevkitadb/binをPATHからはずしてbinutils,gcc,newlibを作成
ありがとう、みんな
newlibのmake,make install成功。
上手くいかなかった原因はdevkitadb/binがPATHの検索順で自分でコンパイルしたarm-elf-**より先にあったためと思われる
対処方法としてdevkitadb/binをPATHからはずしてbinutils,gcc,newlibを作成
ありがとう、みんな
207162
2005/06/20(月) 10:45:55ID:nuWkCFET #mallocから逃げてるオイラ
memcpyの代わりにDMAを使ってローカル変数配列をVRAMに描くことで最適化できないかと思い
for(行数分){
// memcpy();
DMAmemcpy(); //中でDMAをつかってる
}
こんな感じでDMAをつかってmemcpyしたら速くなるかな?とおもって作ってみました。
でも動かないT_T
こんな感じでDMAを使うのはまちがってるんでしょうか?
#間違ってるんだろうなぁ・・・
#小さい画像データならスプライト使うほうが正しいんだろうなぁ・・・
memcpyの代わりにDMAを使ってローカル変数配列をVRAMに描くことで最適化できないかと思い
for(行数分){
// memcpy();
DMAmemcpy(); //中でDMAをつかってる
}
こんな感じでDMAをつかってmemcpyしたら速くなるかな?とおもって作ってみました。
でも動かないT_T
こんな感じでDMAを使うのはまちがってるんでしょうか?
#間違ってるんだろうなぁ・・・
#小さい画像データならスプライト使うほうが正しいんだろうなぁ・・・
208名前は開発中のものです。
2005/06/20(月) 11:08:20ID:eN4g0qsd DMAmemcpy();の中身か、せめてパラメータを書いてくれないと全く要領を得んな。
・memcpyと違ってDMAの転送サイズ指定は2バイトか4バイト単位
・表示期間中はDMAでVRAMへの転送は出来ない
・そもそもDMAの設定方法が間違ってる
このどれか。
・memcpyと違ってDMAの転送サイズ指定は2バイトか4バイト単位
・表示期間中はDMAでVRAMへの転送は出来ない
・そもそもDMAの設定方法が間違ってる
このどれか。
209162
2005/06/20(月) 12:03:40ID:nuWkCFET >>208
さんくす
たぶん、「 表示期間中はDMAでVRAMへの転送は出来ない」これだろうなぁ
1番はエラーチェック入れてるし、3番は多分間違ってない、と思うし
描画タイミングなんて考えたこと無かった
う〜ん、イベントループで描画用イベントをつくり、描画はそちらにまとめないと駄目だなぁ・・・
さんくす
たぶん、「 表示期間中はDMAでVRAMへの転送は出来ない」これだろうなぁ
1番はエラーチェック入れてるし、3番は多分間違ってない、と思うし
描画タイミングなんて考えたこと無かった
う〜ん、イベントループで描画用イベントをつくり、描画はそちらにまとめないと駄目だなぁ・・・
210名前は開発中のものです。
2005/06/20(月) 13:03:44ID:eN4g0qsd それにしても動かないってことは無いだろ。
数ミリ秒ロックかかるだけなんだから。
数ミリ秒ロックかかるだけなんだから。
211162
2005/06/20(月) 13:29:38ID:nuWkCFET 動かない、ってのは誤解させたか
正確に言えば、その部分の描画処理をしてくれない、かな
四角く塗りつぶす関数
for(y行分){ for(x幅){ VRAMへ書き込む } }
を
for(x幅){ローカル配列に書き込み}
for(y行分){ローカル配列をDMAmemcpyでVRAMへ}
って処理にしたら塗ってくれなくなったのよ
調べてたらDMAチャンネルうんぬんってのがあるみたいだし、
CPUが空いててもDMAコントローラ(?)は空いてないだろうし・・・
正確に言えば、その部分の描画処理をしてくれない、かな
四角く塗りつぶす関数
for(y行分){ for(x幅){ VRAMへ書き込む } }
を
for(x幅){ローカル配列に書き込み}
for(y行分){ローカル配列をDMAmemcpyでVRAMへ}
って処理にしたら塗ってくれなくなったのよ
調べてたらDMAチャンネルうんぬんってのがあるみたいだし、
CPUが空いててもDMAコントローラ(?)は空いてないだろうし・・・
212名前は開発中のものです。
2005/06/20(月) 13:56:46ID:3V9hgg4C214名前は開発中のものです。
2005/06/21(火) 01:26:05ID:tMrqvmNm215162
2005/06/21(火) 17:36:36ID:2bu24OLk 一番の目標は、組み込み向け開発ノウハウの勉強
それも、単純なLEDだけの世界じゃなくて、ある程度GUIがある組み込み。
でもそれだけじゃ漠然としすぎてどこから手をつけたらいいか迷うので
今作ってるのはパズル。「数独」ってしってる?
これならグラフィックやシナリオで迷わなくていい。
次はマインスイーパかソリティアでもつくろうかなって思ってるところ
それも、単純なLEDだけの世界じゃなくて、ある程度GUIがある組み込み。
でもそれだけじゃ漠然としすぎてどこから手をつけたらいいか迷うので
今作ってるのはパズル。「数独」ってしってる?
これならグラフィックやシナリオで迷わなくていい。
次はマインスイーパかソリティアでもつくろうかなって思ってるところ
216名前は開発中のものです。
2005/06/25(土) 01:31:23ID:e5faRMhJ ちょっと質問です。
自分もGBAで何か作ってみようと思い、まず画像を表示する程度のものを作りました。
が、エミュ(VisualBoyAdvance)上では問題無く動くのですが、実機に転送すると動きませんでした。
試しに、ttp://j-gbadev.hp.infoseek.co.jp/ にあるサンプルを転送してみましたがやはり動かず。
ttp://optimize.ath.cx/bootcable/index.html のパズルは動作しましたが、逆にこちらはエミュ上で動かず。
実機で動作させるには何が必要なのでしょうか。
自分もGBAで何か作ってみようと思い、まず画像を表示する程度のものを作りました。
が、エミュ(VisualBoyAdvance)上では問題無く動くのですが、実機に転送すると動きませんでした。
試しに、ttp://j-gbadev.hp.infoseek.co.jp/ にあるサンプルを転送してみましたがやはり動かず。
ttp://optimize.ath.cx/bootcable/index.html のパズルは動作しましたが、逆にこちらはエミュ上で動かず。
実機で動作させるには何が必要なのでしょうか。
217名前は開発中のものです。
2005/06/25(土) 08:06:17ID:BG1w9J0p >216
パズルの方はフラッシュに焼いて実行するなら、
makefile の LDFLAGS の -Ttext=0x02000000 を
-Ttext=0x08000000 にするんじゃない??
パズルの方はフラッシュに焼いて実行するなら、
makefile の LDFLAGS の -Ttext=0x02000000 を
-Ttext=0x08000000 にするんじゃない??
218名前は開発中のものです。
2005/06/25(土) 08:09:59ID:BG1w9J0p 誤:パズルの方はフラッシュに焼いて実行するなら
正:パズルの法はエミュレータやフラッシュに焼いて実行するなら
正:パズルの法はエミュレータやフラッシュに焼いて実行するなら
219名前は開発中のものです。
2005/06/25(土) 14:05:30ID:8t7IF5k/ optimizeのパズルサンプルをエミュレータで動かしたい場合は拡張子を.mb.gbaにすればいい。
>>216が作ったのはたぶんROMに焼いて動かすためのイメージだから
実機で動かすにはFlashROMを買ってくるか、
実機のRAMに直接転送して動くように作り直す必要がある。
プログラム研究所のサンプルも同様。
>>216が作ったのはたぶんROMに焼いて動かすためのイメージだから
実機で動かすにはFlashROMを買ってくるか、
実機のRAMに直接転送して動くように作り直す必要がある。
プログラム研究所のサンプルも同様。
220名前は開発中のものです。
2005/06/25(土) 16:01:46ID:IKOdqJ6y221216
2005/06/25(土) 21:10:36ID:aa82OW6G やはり原因は0x08000000 -> 0x02000000でした。
無事実機でも動きました!
皆様色々ありがとうございました。
無事実機でも動きました!
皆様色々ありがとうございました。
222名前は開発中のものです。
2005/06/26(日) 02:14:00ID:YOehEJSa const int __gba_multiboot;
これもあったなあ
これもあったなあ
223名前は開発中のものです。
2005/06/28(火) 09:12:06ID:lhzk0oNN224名前は開発中のものです。
2005/07/05(火) 22:13:11ID:ioT9KUEt とりあえず環境落として始めてみたんだが、
ゲーム作るためのライブラリを作るだけでおなかいっぱいになりそうだ_| ̄|○
ゲーム作るためのライブラリを作るだけでおなかいっぱいになりそうだ_| ̄|○
225162
2005/07/07(木) 22:26:25ID:IdWw8xni 一応動くようになりました。
ちゃんと動くかな?
質問に答えてもらったお礼です。
http://up.isp.2ch.net/up/4b16ea0ad8c0.lzh
http://up.isp.2ch.net/upload/c=03okari/index.cgi
ちゃんと動くかな?
質問に答えてもらったお礼です。
http://up.isp.2ch.net/up/4b16ea0ad8c0.lzh
http://up.isp.2ch.net/upload/c=03okari/index.cgi
226162
2005/07/07(木) 22:28:21ID:IdWw8xni 操作方法は
・selectでメニュー
・Aでセルの数字が増える
・Bでセルクリア
・十字キーで移動
です
・selectでメニュー
・Aでセルの数字が増える
・Bでセルクリア
・十字キーで移動
です
227名前は開発中のものです。
2005/07/12(火) 03:52:28ID:gP0YBH4B すみません。ど素人な質問なんですが、できればお答え下さい。
GBAのプログラムはだいたいどの位までの、データを実機で使えるものでしょうか?
個人的に、電子辞書+単語帳代わりにデータを写して使いたいのですが、
200Mbyteぐらいいけますか。また、基本的な組み込み系のプログラムはまるで触ったことのない人間なのですが、
C言語とC++をちょっとさわったくらい(ベターC程度にしか使えません)でも扱えるような物でしょうか?
あと、起動時間は10秒ぐらいでしょうか?
GBAのプログラムはだいたいどの位までの、データを実機で使えるものでしょうか?
個人的に、電子辞書+単語帳代わりにデータを写して使いたいのですが、
200Mbyteぐらいいけますか。また、基本的な組み込み系のプログラムはまるで触ったことのない人間なのですが、
C言語とC++をちょっとさわったくらい(ベターC程度にしか使えません)でも扱えるような物でしょうか?
あと、起動時間は10秒ぐらいでしょうか?
228名前は開発中のものです。
2005/07/12(火) 04:50:21ID:vNvKsOE9 ROMが最大32Mbyte RAMが256kbyte+32kbyte
言語はCが使えれば充分 C++はベターCで全然よし
起動時間はメーカーロゴが入るので5秒くらい メーカーロゴを含めなければ一瞬
ビットマップにフォントを表示できるようになれば簡単な辞書ならすぐ作れると思う
ただし容量が少ないのでデータを厳選するか きつめに圧縮するかしないと
いけないだろうな
頑張れや
言語はCが使えれば充分 C++はベターCで全然よし
起動時間はメーカーロゴが入るので5秒くらい メーカーロゴを含めなければ一瞬
ビットマップにフォントを表示できるようになれば簡単な辞書ならすぐ作れると思う
ただし容量が少ないのでデータを厳選するか きつめに圧縮するかしないと
いけないだろうな
頑張れや
229名前は開発中のものです。
2005/07/12(火) 23:31:40ID:mrySnnDH230162
2005/07/13(水) 14:04:49ID:QdmkZAfq printfくらいは自作してもいいけど入力どうしようかな?
ケータイみたいな仮想キーを作ってそれで入力する、かなぁ
これなら12この仮想キー(ボタン?)で済む
「ホームランド」みたいな入力システム作れればいいんだろうけど、ムズカシイ・・・
ケータイみたいな仮想キーを作ってそれで入力する、かなぁ
これなら12この仮想キー(ボタン?)で済む
「ホームランド」みたいな入力システム作れればいいんだろうけど、ムズカシイ・・・
231名前は開発中のものです。
2005/07/13(水) 18:15:54ID:D6iTUR2S >>230
RとLボタンで文字種変更、十字キーで文字変更(右左で子音・上下で
母音変更とか、ケータイ方式とか)でAボタンで決定、Bでクリアとか。
SELECTでエディットモード抜けて十字キーかRLボタンでカーソル移動とか。
RとLボタンで文字種変更、十字キーで文字変更(右左で子音・上下で
母音変更とか、ケータイ方式とか)でAボタンで決定、Bでクリアとか。
SELECTでエディットモード抜けて十字キーかRLボタンでカーソル移動とか。
232名前は開発中のものです。
2005/07/13(水) 19:05:41ID:wV9jl+rf どうせやるならNDSでやったほうが良いと思う。入力デバイスの問題で。
実機で動かす方法は知らんが。
実機で動かす方法は知らんが。
233名前は開発中のものです。
2005/07/13(水) 21:26:47ID:oLrfzE3q ゆうていみやおうきむこうでいいやん
234名前は開発中のものです。
2005/07/17(日) 21:50:58ID:ATGoGOE4 >>233
ドラクエですな。
ドラクエですな。
235名前は開発中のものです。
2005/07/30(土) 16:31:02ID:rH8bjVXA とあるラベルを4バイトアラインで配置したいときってどうするんでしょう?
今は配置したいラベルの前に、
asm(".align 4");
って入れているんですが、何か違うような、もっとすっきりした方法があるような気がします
今は配置したいラベルの前に、
asm(".align 4");
って入れているんですが、何か違うような、もっとすっきりした方法があるような気がします
237名前は開発中のものです。
2005/07/30(土) 20:02:20ID:XQpHvBfH >>235 gcc なら __attribute__((aligned(4))) とか
238名前は開発中のものです。
2005/08/01(月) 02:57:48ID:dbKAP3Zw >>237
できました。ありがとうございます。
それはそうと、gccでラベル全てをアライン付けるオプション試してみたけど、何も変わりませんでした
devkitのこれとは違うんでしょうか。自分が意味を取り違えてる可能性のほうが高いと思うけど。
できました。ありがとうございます。
それはそうと、gccでラベル全てをアライン付けるオプション試してみたけど、何も変わりませんでした
devkitのこれとは違うんでしょうか。自分が意味を取り違えてる可能性のほうが高いと思うけど。
239名前は開発中のものです。
2005/08/01(月) 08:54:44ID:4ELQCf+V >>238 そんなオプションあったっけ?
240名前は開発中のものです。
2005/08/01(月) 09:19:43ID:FTLI7gLF 無いはずだが。何かと勘違いしてるんじゃないか?
241名前は開発中のものです。
2005/08/12(金) 17:27:25ID:tqMQkZm3 ちょっと程度の低い事ですが質問です。
スプライトの画像を左右を逆転して表示したいのですが、
sprites[0].attribute1 |= 0x1000;
とかやってますが、どうもうまくいきません。
どのようにすれば、反転して表示できるのでしょうか。
スプライトの画像を左右を逆転して表示したいのですが、
sprites[0].attribute1 |= 0x1000;
とかやってますが、どうもうまくいきません。
どのようにすれば、反転して表示できるのでしょうか。
242名前は開発中のものです。
2005/08/12(金) 19:16:14ID:oL+JILND attribute0の拡縮フラグは0になってるか?
それぐらいしか思い浮かばないが・・・。
それぐらいしか思い浮かばないが・・・。
243名前は開発中のものです。
2005/08/12(金) 19:42:07ID:3HIzF5vl244名前は開発中のものです。
2005/08/12(金) 21:11:23ID:tqMQkZm3 >242
うう、まさしくそれでした。
削ったつもりだったのですが、色々試してた時のが残っていて。。。という感じでした。
兎も角、ちゃんと反転表示はできるようになりました。ありがとうございます。
>243
まんま「GBAプログラミング研究所」さんのサンプルを利用してます。
うう、まさしくそれでした。
削ったつもりだったのですが、色々試してた時のが残っていて。。。という感じでした。
兎も角、ちゃんと反転表示はできるようになりました。ありがとうございます。
>243
まんま「GBAプログラミング研究所」さんのサンプルを利用してます。
245名前は開発中のものです。
2005/08/13(土) 01:01:17ID:NcqonvKf246名前は開発中のものです。
2005/08/15(月) 23:35:09ID:zl773reD247名前は開発中のものです。
2005/08/22(月) 13:25:40ID:xaZ8lnmP DMAに手を出してみたけど…むつかしいね。
というか、devkitのDMA転送マクロをそのまま使うと、ちゃんと動作しないときがあるっぽい
(同じチャンネルを使い、連続して転送を実行した場合?)
別のサイトから拾ってきたソースのを使ったらうまくいったけど…ごめん。URL忘れた。
というか、devkitのDMA転送マクロをそのまま使うと、ちゃんと動作しないときがあるっぽい
(同じチャンネルを使い、連続して転送を実行した場合?)
別のサイトから拾ってきたソースのを使ったらうまくいったけど…ごめん。URL忘れた。
248名前は開発中のものです。
2005/08/27(土) 22:41:20ID:hXi5z/ZH DevkitAdvanceを使えと言われそうですが、都合により Thumb/ARM GCC の環境を作ろうとしていて、
そのために必要な libg.a を探しています。
ぐぐって探したところ、Glibc というライブラリに入ってそうな感じがしたのですが
ダウンロードしてアーカイブをバラしても見つかりませんでした。
どなたか持っている方がいたらアップして頂けないでしょうか?
ttp://gamdev.org/up/
そのために必要な libg.a を探しています。
ぐぐって探したところ、Glibc というライブラリに入ってそうな感じがしたのですが
ダウンロードしてアーカイブをバラしても見つかりませんでした。
どなたか持っている方がいたらアップして頂けないでしょうか?
ttp://gamdev.org/up/
249248
2005/08/28(日) 16:48:57ID:rrKRiOqt すいません、自己解決しました。
ttp://eodevtools.sourceforge.jp/cgi-bin/wiki.cgi?page=Linux%CD%D1EOTA%A5%AF%A5%ED%A5%B9%B3%AB%C8%AF%B4%C4%B6%AD
ここにある eota-crosslib-0.8.1.tar.gz というアーカイブを展開したら出てきました
ttp://eodevtools.sourceforge.jp/cgi-bin/wiki.cgi?page=Linux%CD%D1EOTA%A5%AF%A5%ED%A5%B9%B3%AB%C8%AF%B4%C4%B6%AD
ここにある eota-crosslib-0.8.1.tar.gz というアーカイブを展開したら出てきました
250名前は開発中のものです。
2005/08/30(火) 22:10:58ID:4nbPwlJS 自作の同人ゲーをブートスティックに入れて売ってみたいんだが、
やっぱオプティマイズの中の人の許可が無いと色々怒られっかな。
やっぱオプティマイズの中の人の許可が無いと色々怒られっかな。
251名前は開発中のものです。
2005/08/31(水) 00:14:27ID:mrP0HODf オプティマイズの中の人も任天堂に許可を取って売っているわけではない
規模にもよるだろうけど構わないんじゃないの
規模にもよるだろうけど構わないんじゃないの
252名前は開発中のものです。
2005/08/31(水) 04:25:15ID:ZKQSe8Kh スプライト表示の際ブレンド指定したら、全てのスプライトが半透明になっちゃったんですが
何か気をつけるべきことってありましたっけ?attribute0のb10,11はきっちり設定しています
あとちょっと確認なのですが、
スプライト#0はブレンド、#1はDARK…みたいにはできませんよね?
あくまでもブレンドモードなら128枚全てブレンド(か通常表示かwindow)、DARKなら128枚全てDARKで
何か気をつけるべきことってありましたっけ?attribute0のb10,11はきっちり設定しています
あとちょっと確認なのですが、
スプライト#0はブレンド、#1はDARK…みたいにはできませんよね?
あくまでもブレンドモードなら128枚全てブレンド(か通常表示かwindow)、DARKなら128枚全てDARKで
253名前は開発中のものです。
2005/08/31(水) 12:22:02ID:mrP0HODf >>252
ちょっと勘違いしてる
REG_BLDMODは面全体に掛ける指定で、OBJを指定したらOBJ面全部が半透明になる
スプライトattribute0の半透明属性は、スプライト一個一個に対して個別に
ブレンドを指定したいときに使う
スプライトを一個だけ半透明にしたいのならREG_BLDMODのOBJフラグは立てないように
また、attribute0で半透明にしておいて、さらにREG_BLDMODでDARKにすることは可能らしい
ちょっと勘違いしてる
REG_BLDMODは面全体に掛ける指定で、OBJを指定したらOBJ面全部が半透明になる
スプライトattribute0の半透明属性は、スプライト一個一個に対して個別に
ブレンドを指定したいときに使う
スプライトを一個だけ半透明にしたいのならREG_BLDMODのOBJフラグは立てないように
また、attribute0で半透明にしておいて、さらにREG_BLDMODでDARKにすることは可能らしい
254名前は開発中のものです。
2005/08/31(水) 22:01:06ID:sP0tVan0 >249
それは x86 で動く EOTA という OS 専用のバイナリなので、他では使えませんよ
それは x86 で動く EOTA という OS 専用のバイナリなので、他では使えませんよ
255名前は開発中のものです。
2005/08/31(水) 22:17:56ID:8NGuRNsc あちゃ、Vブランク関係のせいでコンパイルがうまく通らなかったのはそれのせいか・・・?
(↑の関数を一つコメントアウトしたら通ったけど)
経験が浅いので正直よくわかりませんが
(↑の関数を一つコメントアウトしたら通ったけど)
経験が浅いので正直よくわかりませんが
256名前は開発中のものです。
2005/09/01(木) 02:23:37ID:ZXvSssjt >>253
ありがとうございます。
特定のスプライトだけ半透明にしたいときは、
パラメータはREG_COLEVで与えるだけで、REG_BLDMODは0のまま
半透明にしたいスプライトのattribute0をつつくってことでいいってことですよね。
いろいろこねくりまわしてみたす。
ありがとうございます。
特定のスプライトだけ半透明にしたいときは、
パラメータはREG_COLEVで与えるだけで、REG_BLDMODは0のまま
半透明にしたいスプライトのattribute0をつつくってことでいいってことですよね。
いろいろこねくりまわしてみたす。
257名前は開発中のものです。
2005/09/01(木) 22:04:30ID:n0AYkfq0258名前は開発中のものです。
2005/09/13(火) 21:09:53ID:2pOo5niL■ このスレッドは過去ログ倉庫に格納されています
ニュース
- れいわ議員「母親はね、子どもを戦争に行かせるために産んだんじゃないんだよ」 高市総理に“10秒回答”迫り、残り5分は“独壇場”★3 [♪♪♪★]
- 中国国防省が再反論 SNSで公開した音声とは“別の通報”で日本に訓練の時間や海域を通報したと主張★3 [夜のけいちゃん★]
- BreakingDown選手がくも膜下出血、瓜田純士、平手打ちを行った江口響は「もう格闘技も辞めます。責任取りたいです』とまで言ってきてる」 [muffin★]
- フィンランド、ミスや国会議員つり目投稿 くり返されるアジア人差別 ★4 [蚤の市★]
- 資さんうどんが「PayPay」の取り扱いを停止 他のキャッシュレス決済は引き続き利用可能 [少考さん★]
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 ★7 [お断り★]
- 反安倍・プーアノン・親イスラエル・反高市の勝利だったよな [805596214]
- ダーケストダンジョンマスター来てくれ!
- もう割とガチでVIP終わりだな…
- 【速報】高市早苗、文春砲wwwwwwwwwwwwwwwwwwwwwwwwwwwww [339035499]
- 今オナニーしながらスレ立てしてる。お前らがスレ開く頃に射精するよ
- 明日体育だからオナできない
