[過去ログ] ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
421: 2006/02/14(火)00:34 ID:WgJRobF9(1/3) AAS
>>420
sprintfで文字列を作って
その文字列を表示する関数を作るんだ
printfは最初から無いものとして諦めろ
422: 2006/02/14(火)00:40 ID:945ce4fT(1) AAS
研究所のやつじゃなくてもいいので
使い勝手のいいマップエディタしりませんか?
ドラクエ風のワールドマップを作りたいのですが。。。。
423: 2006/02/14(火)00:51 ID:kJMSUOot(1) AAS
外部リンク[htm]:user.chem.tue.nl
この辺とかは?
424
(7): [age] 2006/02/14(火)00:51 ID:DPfKwksc(1) AAS
sprintfって使えたっけ?devkitadv
自作snprintfで対応しちゃった
#あと文字が書いてあるbitmap背景の2本立て
425
(1): 384 2006/02/14(火)00:59 ID:tYPhpHwC(1) AAS
俺もprintf関数もどき作りました。

全角の文字列を引数として受け取って、
その先頭のアドレスから、内容を4ビット(16進一桁、要するに文字コードの中の一桁)
ずつチェックしていき、最終的に文字コードとBGタイル番号をつき合わせて
BG一面に出力するようにしました

BGを一つ占領しちゃうんであまりよいやり方では無さそうですが
426: 2006/02/14(火)01:49 ID:WgJRobF9(2/3) AAS
>>424-425
自作するよりそっちの方が簡単だろうと思ってな
printf関数の仕組みが分からないとも書いてるし

もちろんsprintfはstring.hをincludeすれば使えるぞ
427
(1): 2006/02/14(火)18:19 ID:KtOq4mfG(1/2) AAS
スプライトの表示数についてなんですが
最大128個でモード0〜2のVRAMのスプライトキャラクター領域は
32kバイトですよね?
32*32dotで16色のスプライトを扱う場合
下記の計算だと最大64個だと思うんですが
それ以上の表示が可能です。複数のエミュで確認したんですが
どれも表示できました。
省8
428: 2006/02/14(火)18:55 ID:WgJRobF9(3/3) AAS
画像データ領域(VRAM)とキャラクター領域(OAM)は分離して考えろ
>>427の例で言うと
OAMには128個登録できても
VRAMには64種類の画像しか収まらない

逆に言うと64種類の画像を128個表示できるということ
429
(1): 429 2006/02/14(火)19:29 ID:KtOq4mfG(2/2) AAS
なるほど、つまりVRAMにおさまりさえすれば
64*64の画像を128個表示することができると
いうことなんですね。
430: 424 [age] 2006/02/14(火)21:44 ID:oQP7vhex(1) AAS
自作snpritnf(snprintf_mini)です。良かったらどうぞ
外部リンク[lzh]:49uper.com:8080
431: 420 2006/02/15(水)23:02 ID:UMaLkZ5l(1) AAS
ありがとうございます!
正直、よく分からないですが、参考にするか
もしくはそのまま使わせて頂きます!
432
(1): 2006/02/16(木)00:00 ID:htR/zHvl(1) AAS
コンパイル出来たけど何も表示しまへん。

コンパイル用バッチファイル
SET PATH=c:\devkitadv;c:\devkitadv\bin;c:\devkitadv\tools:$PATH;
gcc -o main.elf main.c utils.c -mthumb-interwork
objcopy -O binary main.elf main.gba

どこがいかんのでしょう
みたとこ画像データが無いようですが。
433
(2): 424 [age] 2006/02/16(木)09:40 ID:IJObToHy(1/3) AAS
うん、文字画像データは入ってないよ
あくまでもおいらが作ったsnprintfの実装(snprintf_mini)だから文字列を作るだけです。

main.cはちゃんと作れているかどうか確認している単体テスト用のプログラム
なのでdevkitadvのgcc(arm-agb-elf-gcc)じゃなくて普通(?)のgccを使って
snprintf実装例を確認してね。
GUIなデバッガがあればどんな感じで処理してるか追っかけられるでしょ
#VCだとsnprintfが使えないかも。そのときはsprintfで代用して確認してね
省3
434: 2006/02/16(木)09:44 ID:zo8+sFWC(1) AAS
AA省
435: 2006/02/16(木)18:36 ID:kz0iIF7u(1) AAS
>>433
これだけヒントを貰ってるのに文字表示すら自分で作れない香具師に
何をアドバイスしてやっても無駄だって。
436: 2006/02/16(木)20:06 ID:M6PXBfNk(1/2) AAS
>>433
親切すぎる。
漏れは呆れてレスする気がしなかったぐらいだってのに。
437: 424 [age] 2006/02/16(木)21:32 ID:IJObToHy(2/3) AAS
確認用に作った文字表示用プログラムです
外部リンク[lzh]:49uper.com:8080

VCとVisualBoyAdvanceの両方で動作確認できるようにちょっと細工してます
このフォントデータは多分ライセンス違反になると思います。
#外見はラスタフォント6x13そのままです。
#文字を表示した状態のスクリーンショットBMPからデータを作りました・・・
438
(2): 2006/02/16(木)22:19 ID:M6PXBfNk(2/2) AAS
拙作
画像リンク[png]:gamdev.org
439: 2006/02/16(木)22:21 ID:kxrgDS8c(1) AAS
>>438
俺が流用してるフォントと同じのを使ってる・・・気がする
俺は8x8でやってるけど
440: 2006/02/16(木)22:53 ID:Jk3f3/1N(1) AAS
>>438
liarsoftさん?
441: 424 [age] 2006/02/16(木)23:55 ID:IJObToHy(3/3) AAS
へー、かっこいい
フリーのフォントって知らなかったけど調べてみたらいろいろあるんだな
とりあえず、FONTX形式にすればいいのだろうか?
442: 432 2006/02/17(金)16:40 ID:x9jBkP1z(1) AAS
サンプルありがとうございます。
私は420=431さんとは別人です、横入りすみません。

フリーのフォント、元GBA研究所のサンプルにあったものを
流用しようと・・問題有りますでしょうか
完全フリーなものが欲しいのですけどそうなるとなかなか
ありませんよね。フリーソフトのみとかメールでの通知義務とか。
443: 2006/02/17(金)18:32 ID:iAZtWxeh(1) AAS
外部リンク[html]:khdd.net
444: 424 [age] 2006/02/18(土)01:08 ID:uRwRaCgY(1) AAS
おお、サンクス
でもbdfフォーマットの仕様書はadobeの有料開発メンバじゃないと読めないのね・・・

で、探した結果、良さそうなページを発見
外部リンク[html]:hp.vector.co.jp

あとは日本語文字コードか、やれやれ。
445: 2006/02/18(土)02:27 ID:QKtp7HhO(1) AAS
DIRECTSOUNDをDMAで鳴らそうと
外部リンク:belogic.com
を参考にしてるんですが、演奏を止めるためのTM1設定
REG_TM1CNT_L=0x7098; //0xffff-the number of samples to play
REG_TM1CNT_H=0xC4; //enable timer1 + irq and cascade from timer 0
のthe number of samples to playの算出式がよくわかりません。
単純にデータサイズというわけではなさそうですが。。。
446
(1): 2006/02/18(土)03:41 ID:4ZdB2i2h(1) AAS
データサイズで合ってる
cascade from time 0になっているということは
timer 0が桁あふれしたときにtimer 1が1つ進むということ
timer 0が桁あふれしたとき同時に何が起こっているのか考えてみればそのうち分かる
頑張れ
447
(1): 2006/02/18(土)16:03 ID:1rrcgcm5(1) AAS
>>446
すみません、もう少し教えてください
データサイズが0xffffを超える場合はどう設定すればいいのでしょうか?
448: 2006/02/18(土)17:05 ID:ZbScaNGm(1) AAS
フリーの日本語ビットマップフォント一覧
外部リンク[html]:kappa.allnet.ne.jp
449: 2006/02/18(土)18:51 ID:iQRmZRdR(1) AAS
5つほど上に既に貼ってあるジャマイカ
450: 2006/02/18(土)21:15 ID:yUcx3isO(1) AAS
研究所が未だに復活しない件。
猫でもみたいなTips集的な使い方をしていたので、他所を探すのが以外に大変。
451: 2006/02/18(土)22:05 ID:q2PjLLP+(1) AAS
儂はウェブアーカイブで拾ってきたよ。zipファイルは保存してないからサンプルは取れないけど。
ヘッダとソースは見られる。makefileが無いのが難点。
452
(2): 2006/02/19(日)01:10 ID:prU8DMPB(1/2) AAS
>>447
どうしてもtimerを使って止めたいならtimer 2を使えばいい
お勧めしないが。。。

// (0xXXXX * 0xYYYY = datasize)
REG_TM1CNT_L=0x10000 - 0xXXXX;
REG_TM1CNT_H=0x84; //enable timer1 + cascade from timer 0
REG_TM1CNT_L=0x10000 - 0xYYYY;
省3
453: 452 2006/02/19(日)01:11 ID:prU8DMPB(2/2) AAS
間違ったスマソ

// (0xXXXX * 0xYYYY = datasize)
REG_TM1CNT_L=0x10000 - 0xXXXX;
REG_TM1CNT_H=0x84; //enable timer1 + cascade from timer 0
REG_TM2CNT_L=0x10000 - 0xYYYY;
REG_TM2CNT_H=0xC4; //enable timer2 + irq and cascade from timer 1
REG_IE=0x20; //enable irq for timer 2
省1
454: 2006/02/19(日)02:00 ID:m3SmeD2S(1) AAS
>>452
了解しました。トライしてみます。
あと、timerを使わずに止める方法があるのならご教授プリーズ。
455
(2): 2006/02/19(日)04:25 ID:iq15VETn(1) AAS
チョット違うことしてるのかな?一応
つdirecsoundサンプル
外部リンク[zip]:gamdev.org
456: 2006/02/19(日)10:19 ID:QSXlPkGt(1) AAS
>>455
BeLogicのサンプルみたく別タイマーで止めないとダメだとばかり思い込んでました。
このスレよく読み直したら過去にヒントが出てたんですね。。。orz
457: 2006/02/19(日)21:44 ID:oTR8sHnf(1) AAS
DarkFaderのMylibとかNylibとか入れてみようと思ってやってみたがダメだ…。
やり方が悪いのかサンプルmakeできなかった。
ライブラリ自体はすごそうだ。使ってる人いる?
458: 2006/02/20(月)03:17 ID:B+Dm9jGk(1) AAS
NyLibは任天堂の純正ライブラリそのものだから使わないほうがいいぞ
MyLibはゴミ
459
(2): 2006/02/20(月)21:23 ID:bbMb17ur(1) AAS
1Dモードでスプライトの属性を指定します。
attr2(ゼロが最初)のキャラクタ番号(0-9ビットまで)に指定の番号をセットすると正しく表示されません。
2倍の値をセットすると正しく指定できました。
これってあってる? ゼロビット目がキャラクタ番号じゃないんじゃ、とか思います。
1Dのスプライトについて書かれているページとかありませんか?
460: 2006/02/20(月)21:39 ID:LHhnamaS(1/2) AAS
マジですか。コンパイルもようできんからgcc自分で持ってきてarm-elfで作ったりしたんだがなぁ。
最低限eloistのgba.hとgbatekとかのドキュメント、あとは自分でがんばるかね。
461: 2006/02/20(月)22:06 ID:LHhnamaS(2/2) AAS
>>459
スプライトが256色設定の場合は2倍で指定するらしいからそのせいではないかな?
462: 2006/02/21(火)00:33 ID:zwimk+yf(1) AAS
>>459
気になるならVBAのTile Viewerでタイル番号とアドレスを確認すれ
463
(1): 2006/02/21(火)05:42 ID:uuzcpC5q(1) AAS
ボタンを押した瞬間を取得したいんですが
下記のソースがうまく動作しません。
何がいけないかわかりますか?

//ボタンに関する列挙型
typedef enum{UP,DOWN,RIGHT,LEFT,A,B,L,R,START,SELECT} KEY;

//スタティックグローバル変数
static u32 sgKey; /* キーセンス */
省21
464: 2006/02/21(火)07:28 ID:GiHvck/8(1) AAS
書き込みできるかテスト
465: 2006/02/21(火)08:22 ID:BSGVJJY5(1) AAS
>>463
それぞれの変数の値を出力してみろ
466
(3): 2006/02/25(土)15:23 ID:LRNrnoNa(1/4) AAS
ある構造体に汎用的な配列を用意し、状況によって汎用配列部分に
別の構造体をキャストすることでいろいろ使い分けられるように
したいんですが下記(分けて書き込みます)のようなソースがうまく動きません。
「w->cnt = 5;」等の部分で値を代入しているのに正しい値がはいりません。
VC++では正しく代入できるようです。なぜだかわかりますか?
仕様なんでしょうか?
467
(1): 2006/02/25(土)15:24 ID:LRNrnoNa(2/4) AAS
typedef struct{
u8use;/* 動作フラグ */
u16no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8wrk[48];/* 汎用ワークエリア */
void*entryfunc;/* 実行関数 */
}TSKWRK;
省18
468: 2006/02/25(土)15:25 ID:LRNrnoNa(3/4) AAS
変数の型と変数名がつながっているのは書き込み時に
つながってしまったもので実際には正しく記述しています。
469
(1): 2006/02/25(土)16:32 ID:ChwfFfDn(1/3) AAS
>>466-467
アライメントの勉強をしてみよう。
外部リンク:www.google.co.jp

この場合は u8 のアライメントしか持っていない wrk に
u16 としてアクセスしていることが原因。
GBA の CPU である ARM ではアライメント違反した書き込みはできない。
VC++ で正しく動作するように見えるのは CPU が違うから。
省1
470
(2): 424 [age] 2006/02/25(土)17:25 ID:T5T+YA0I(1) AAS
こういう使い方をしたいときはunionを使うんだっけ?

使ったことないけど
471
(1): 2006/02/25(土)17:28 ID:JLoubNl/(1/2) AAS
>>466
>>469を踏まえてこれでもう一度テストしれ

typedef struct{
u8 use;/* 動作フラグ */
u16 no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8 wrk[48];/* 汎用ワークエリア */
省8
472
(1): 2006/02/25(土)17:30 ID:JLoubNl/(2/2) AAS
>>470
この場合unionは全く関係ないし的外れ
473: 2006/02/25(土)17:32 ID:+k+s2zkt(1) AAS
メモリをダンプしてみろ
それからだ。
474
(2): 2006/02/25(土)17:38 ID:ChwfFfDn(2/3) AAS
>>470,472
union 使ってアライメント確保する方法がある。
Cだとコレぐらいでいいんじゃないかな?

union
{
 u8 size_holder[48];
 void* pointer_align;
省8
475
(1): 2006/02/25(土)18:20 ID:LRNrnoNa(4/4) AAS
みなさん、アドバイスありがとうございます。
アライメント自体の概念はわかりました。
実用についてはまだよくわからんのですこし調べてみます。

>>474
unionのサンプルの意味は
u8でサイズを決めつつ、何のデータを扱ってもいいように
void型のポインタと最大サイズの整数と浮動少数で
省5
476: 474 2006/02/25(土)18:33 ID:ChwfFfDn(3/3) AAS
>>475
サンプルの意味はそういうこと。
union 自体のアライメント要求がメンバの中で最大の物になることを利用したもの。

GBA のハードウェアで4バイト以上のアライメントを要求するものは
無かったと思うので、 GBA に限った動作だけを考えれば
u32 での置き換えで問題ないと言える。
477: 2006/02/26(日)00:08 ID:WfB5cmW7(1) AAS
関係ないけど
GBAって電源切ったとき画面の色が黒でなく白なのはなんでだろう?
478: 2006/02/26(日)00:10 ID:vz2qCRmn(1) AAS
白黒液晶ってのは黒色の文字を表示するものだから背景が黒かったらどうしようもないと
ここまで書いてGBAが白黒ではないという事実を思い出した
479
(1): 2006/02/26(日)07:47 ID:e+6sQVje(1/2) AAS
>>381 ノベル制作ツール「のべ〜る」で
VisualBoyAdvanceでプログラムスタート直後に音割れする現象の対策

*TOP:
#play_wav 1 music0.bin
#page
■セロ弾きのゴーシュ;
ゴーシュは町の活動写真館でセロを弾く係りでした。#w ;
省9
480
(1): 479 2006/02/26(日)07:53 ID:e+6sQVje(2/2) AAS
のべ〜るは>>380
でした。失礼。
481: 466 2006/02/26(日)15:39 ID:UpVKMws2(1) AAS
構造体のキャストで質問したものです。
とりあえず、みなさんのおかげで
スプライト制御が一段落したんで
経過をご報告します。
外部リンク[zip]:2ch-library.com
482
(3): 2006/02/27(月)22:06 ID:KqQE3G30(1) AAS
くだ質で大変申し訳ないのですが、
C++でGBAのプログラミングはできないのでしょうか?
様々なサイトをググってみたのですが、すべてCでの開発で
C++を扱っているサイトを全く見かけません。

よろしければご教授をお願いします。
483: 2006/02/27(月)22:45 ID:NtZAdaLq(1) AAS
>>482 gcc なんだから、できるよ。
484
(1): 2006/02/27(月)23:07 ID:yy1S2zAQ(1) AAS
>>482
つ Tennodai Bunko
485: 482 2006/02/28(火)00:35 ID:jBhKnEbd(1) AAS
>>484氏に紹介いただいたサイトを見る限り、DevkitAdvanceで普通にできそうですね。
早速試してみようと思います。

どうもありがとうございました。
486: 2006/02/28(火)09:22 ID:1wwrrnAa(1) AAS
GBAプログラミング研究所のBMP2RGB.exeで256色の出力のとき、
255番のパレットを指定したドットが0x00になり、
255番のパレット自体も0x0000になって出力されるんだけど
何か意味があるのでしょうか。
487: 2006/02/28(火)13:47 ID:ykuetkSe(1) AAS
確証は無いけど透明色じゃないの?
488: 2006/03/01(水)17:29 ID:CwoNSWML(1) AAS
ソースレベルデバッグをしたいんですが
MAPPY VMとVHAM&DevkitAdvanceの組み合わせの場合
どのようにすればよいのでしょうか?
また、NO$GBAとMAPPY VMだとどの程度違いますか?
489: 2006/03/02(木)21:30 ID:yUNPC8aZ(1) AAS
Insight + VBA(devel版) で*.elf読ませる方が楽っぽくね?
490
(1): 2006/03/02(木)22:48 ID:LnIoHKvJ(1) AAS
arm-agb-elf-insightつかってデバッグするときにVisualBoyAdvanceの画面の状態を
確認しながらデバッグするにはどうしたらいいのですか?

File-TargetSettingからConnection-TargetをSimulatar選んでからOptionをVBAの
GDB接続待ちPortの数字にあわせればいいのですか?

InsightデバッガからRun-ConnectTargetはSucessfully connectedってでるから
成功したのかな?
でも、VBA側の接続待ち状態ダイアログが消えないから違うんだろうなぁ
491: 2006/03/02(木)23:52 ID:fFp03F4Q(1) AAS
>>490
漏れの環境ではVBA-SDLでしかInsightと接続できないorz
492
(2): 2006/03/04(土)11:46 ID:m5qLcxRB(1/2) AAS
ところでGBAゲームでセーブデータってどうやって作るんですが?
研究所にはあったみたいだけど落ちてて見れない・・・
493
(1): 2006/03/04(土)13:52 ID:x3hAFwv9(1) AAS
>>492
VBAでGBAファイル起動
494
(1): 2006/03/04(土)14:06 ID:KUpila9P(1/3) AAS
>>455
このサンプルでDirectSoundの再生方法を試しているんですが
サウンド再生関数を1回目に実行した際には音がならず
2回目の実行で音がなります。
これ以外のDirectSoundのサンプルでも同様の現象が起きます。
455のサンプルに関してはソースをまんまでコンパイルしても
同様の現象になります。
省2
495: 2006/03/04(土)17:16 ID:KUpila9P(2/3) AAS
やっとこさゲームらしくなってきたんですけど
サウンドがなるとめっさ重いんですよね。
GBAってこんなもんなんでしょうか?
それともプログラムがヘボイだけ?
外部リンク[zip]:2ch-library.com
496: 2006/03/04(土)17:18 ID:vi0lIxtr(1) AAS
AGBがまともにサウンドを鳴らせないほど非力なのは仕様です
497
(1): 2006/03/04(土)17:34 ID:KUpila9P(3/3) AAS
まじですか!?
じゃあ、GB互換音源を使うしかないんですね。
研究所が消滅してコンバーターの入手も難しいし
こまったもんだ…。
498
(1): 492 2006/03/04(土)21:18 ID:m5qLcxRB(2/2) AAS
>>493
いや、そういう意味じゃなくて、
自作したゲームにセーブデータを作らせようと思ったらどうすればいいんですか?
499: 2006/03/04(土)21:53 ID:Msh9zdwX(1/2) AAS
>494
キーを入力しないと鳴らないんです。
main.cをコレで鳴るんじゃない?
mu_wok = 0;// 再生の直前に++のため、0からの値になります。
se_wok = 0;
PlayMusic(mu_wok,PLAY_LOOP_ON); //※追加
while(1)
省4
500
(1): 2006/03/04(土)22:08 ID:Msh9zdwX(2/2) AAS
GBAプログラミング研究所って結局どうなりました?
どこかへ移転したとか…
日本のGBA開発に欠かせないサイトだったし、あれほどみんなが
利用していたのに突如閉鎖というのは有り得ない。
501: 2006/03/04(土)22:30 ID:ega3649d(1) AAS
>>498
SRAM(0x0E000000〜)に数値書き込めばいい
1-
あと 501 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s