//ヒルタルヒ word search //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ aiset.c.h VSーCPU頭脳 typedef struct { u8 ca; // 初期左カプセル色 u8 cb; // 〃 右 〃 } AI_NEXT; AI_NEXT aiNext; // 次カプセル色 typedef struct { u8 co; // 色情報 u8 st; // ステータス情報 } AI_FIELD; AI_FIELD aiFieldData[][]; // フィールド情報 AI_FIELD aiRecurData[][]; // フィールド情報(再帰検索用) typedef struct { u8 tory; // 縦/横フラグ u8 x; // X座標 u8 y; // Y座標 } AI_EDGE; // カプセル置き場情報 u8 aiTEdgeCnt; // 縦置き可能エッジ数 u8 aiYEdgeCnt; // 横置き 〃 typedef struct { u8 ok; // 移動可能フラグ u8 tory; // 縦/横フラグ u8 x; // X座標 u8 y; // Y座標 u8 rev; // 反転フラグ u8 ccnt; // 同色数 s16 pri; // 優先度( ポイント計算 ) →この値が一番高い者が優先される。 s16 dead; // 危険度( .. ) u8 hei[2][8]; // 縦ライン計測( マスター、スレーブ ) u8 wid[2][8]; // 横 .. ( .. ) u8 elin[2]; // 消去ライン合計数( メイン,サブ ) u8 only[2]; // マスター、スレーブ単独フラグ u8 sub; // スレーブ側は メイン? サブ? u8 nouse; //( 未使用 ) } AI_FLAG; AI_FLAG aiFlag[100]; // カプセルが置ける位置の情報、置き場所決定ワーク u8 aiFlagCnt; // フラグデータ数 u8 success; // 経路okフラグ u8 decide; // 最終的決定するフラグデータ番号 typedef struct { u8 x; u8 y; } AI_ROOT; AI_ROOT aiRoot[ROOTCNT]; // 投下カプセルのルート u8 aiRootCnt; // ルートのカウンタ u8 aiFallSp; // 落下速度 u8 aiDownSp; // 下キー押下時速度 u8 aiKeyCount; u8 aiSpeedCnt; u8 aiRollCnt; u8 aiSpUpFlag; // スピードアップするかフラグ u8 aiSpUpStart; // スピードアップするスタート位置 u8 aiSpUpCnt; // スピードアップするカウント u8 vl; // virus level u8 aiLinePri[] = {}; // x軸ラインの優先順位 AI_FIELD aif_field[][]; // 画面疑似情報 u8 hei_data[8]; // タテ列チェック u8 wid_data[8]; // ヨコ列チェック s16 bad_point[] = {}; // 自殺行為減算ポイント s16 pri_point[] = { NULL, // Erase: Line -> EraseLinP[x] 30, // Virus 9, // BombCount NULL, // No Erase: InLineCount -> LinesAllp[x] // 30, // Virus // 10, // Virus 15, // Virus NULL, // LineSpace( < 4:BadLine ) NULL,NULL, }; s16 EraseLinP[] = {}; // [LnEraseLin] 消去ラインボーナス s16 LinesAllp[] = {}; // [LnLinesAll] 並びラインボーナス s16 AloneCapP[] = {}; // af->only[] 単独カプセル誕生減算ポイント //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ bground1.c オチゲーBG #include "h_statics/background/bg_1p.h" // 1P画面テクスチャ,TLUT #include "h_statics/background/bg_2p.h" // 2P .. #include "h_statics/background/Bg_4p.h" // 4P .. //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ fontmgr.c.h fontwrk.c デバッグフォント作成 u8 FWStringField[][]; // デバッグフォント作成領域 u16 TLUT_fontarc[]; // フォント基本色 u8 TEX_fontarc_0_0[]; // フォントテクスチャ 1/2 圧縮データ uObjTxtr uOT_SPBitmap[]; // ビットマップセット uObjSprite uOS_SPString[]; // スプライト登録ワーク FNTCNT FNT_Control[]; // フォントコントロールワーク u8 FNT_Number[][]; // フォントナンバーワーク u16 fm_uos_cnt; // スプライト構造体カウンター ( 1フレーム毎ゼロクリア? ) //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ graphic10.c オチゲー描画タスク作成 PWORK* gpw; // graphic10.c 内 1p〜4pアドレスワーク typedef struct { // 実領域セグメント,テクスチャ、TLUTアドレス int seg; u8* tex; u16* tlut; u16 xpos; } BGRES; BGRES BGReserve[]; //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ joy.c コントローラ(現在、スレッド化していない) OSContStatus joystt[MAXCONTROLLERS]; // コントローラステータス OSContPad joypad[MAXCONTROLLERS]; // データ OSContPad *joyptr[MAXCONTROLLERS]; // データポインタ u16 joynew[MAXCONTROLLERS]; // 最新 * u16 joyold[MAXCONTROLLERS]; // 前回 u16 joyupd[MAXCONTROLLERS]; // トリガ * joy(new,upd,cur)を主に使用する u16 joycur[MAXCONTROLLERS]; // タ...タタタ * u16 joyflg[MAXCONTROLLERS]; // joycur,joycnt 起動トリガ u16 joycnt[MAXCONTROLLERS][16]; // sabccccudlrzLR u16 joystp; // スタートボタン pause on/off u16 joycur1,joycur2; // カーソルタイミング1,2 → default 12,6 in dr.mario int joynum; // no.(インデクス) u8 joygmf[MAXCONTROLLERS]; // 下記使用フラグ u16 joygam[MAXCONTROLLERS]; // ゲーム用 //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ main.c.h ジェネラル enum { // 各メイン番号 MAIN_03,MAIN_10,MAIN_11,MAIN_12, MAIN_20,MAIN_21, MAIN_30,MAIN_31,MAIN_32, }; NNSched sched; // NNスレッド構造体 int main_no;// メイン番号 //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ main10.c オチゲーメイン PWORK *pw; // 1p〜4pアドレスワーク { CONCAP *caps,*next; // { 総合ワーク.txt参照 BLKCAP *block; // { u8 keepjoy[4]; // コントローラ関連 u8 counjoy[4]; u16 idexjoy[4];  ★デモデータ作成手順  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1.evsworks.h,289: //#define PAD_SEQ_KEEP → コメント"//"をはずす 2.evsworks.h 421: //#define DEBUG_ButtonAct_on → コメント"//"をはずす   (これは、( 1 )1p、2p、4pすべてにおいて、次のゲームに進む前のキー受け時に  U_CBUTTONS を押すとセレクト画面に戻れるというおいしいデバッグ機能、( 2 )ポーズ時の キーリピート操作、( 3 ) R_TRIG でゲーム中にLEVELアップを行えるようになる。) 3.main10.c, aimain31.c evsworks.c main1x.c をコンパイル  (この時点で、リセット後、最後にプレーした内容1p、2p、4pがデモになる) 4.Partner64 にてオチゲー(1p、2p、4p)をプレイをする。 5.気に入ったプレイが終了し、キー受け待ち時に U_CBUTTONS を押す。   ゲームオーバー時は A_BUTTON。 6.タイトル画面まで戻り、L_TRIG を押すと速攻でデモ確認できる。 7.オールo.k.ならば、まずプログラム停止。 8.下記コマンドを入力 >n10 >wr zzCapmag.bin,magkeep,magkeep+3*256 >wr zzJoyKeep.bin,joykeep,joykeep+7*2*3600 >wr zzViset.bin,viskeep,viskeep+7*2*12*21 >wr zzLev.bin,levkeep,levkeep+8*2   又は、 >dr 9.Windows上で demoseq.exe 起動 0.main10.c コンパイルで、新しいデモの出来上がり 1.このままにしておくと、「常時データ更新型」にもなる。 //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ nnsched.c.h nnスケジューラ  ★タスクバー起動法  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1.nnsched.h 106: //#define NN_SC_PERF → コメント"//"をはずす 2.evsworks.h 421: //#define DEBUG_ButtonAct_on → コメント"//"をはずす 3.支障がなければ全コンパイル。あれば #ifdef NN_SC_PERF の行があるすべてのソースを   コンパイル。 4.ゲーム中 R_CBUTTONS でタスクバーの on/offが出来る。 //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ spmgr.c.h スプライトマネージャ #define SPRITE_FREE 640 // sp_freebuf[x]登録総数 #define AUTO_PILOT 3 // 一度設定しておけばオールクリアをのぞき勝手に描画する #define EndOfData 255 #define SPRITE_PAGE 0 #define GROUND_PAGE 3 #define AI_SPRITE_PAGE 3 // ANIDAT.procフラグ enum { ASQ_NORMAL, // 通常制御 ASQ_GOTO, // ANIDAT.cnt => SEQANI.idx ASQ_END, // シーケンス終了 }; // SEQANI.sqeフラグ enum { SQE_ENDALL, // すべて終了( SPFREE使用終了 ) SQE_ErOBJ, // オブジェクトを非表示, シーケンス終了 SQE_StopOBJ, // オブジェクトを表示したままシーケンス終了 }; // SEQANI.movフラグ enum { SMV_PIVOT, // 基準位置 SMV_TRANS, // 現在位置 SMV_NOMOVE, // 動かない }; // アニメシーケンスデータ typedef struct { u8 proc; // 制御番号 u8 cnt; // フレーム数 u16* tlut; // パレットアドレス u8* tex[2]; // テクスチャイメージアドレス u16 tadr[2];// テクスチャアドレス( ピクセル数 ) float x,y; // 移動値x,y } ANIDAT; // アニメシーケンス処理 typedef struct { ANIDAT* ani; // アニメデータ先頭アドレス u8 mov; // 下記x,yの使用法 float x,y; // ポジションx,y u8 idx; // アニメデータインデクス u8 cnt; // 固定フレーム数 u8 spn; // 使用スプライト数( 使用SPFREE数 ) u8 sqe; // 終了時動作 u8 pau; // ポーズ( シーケンスカウント停止 ) } SEQANI; typedef struct { char c[16]; } WRKSPMs08; typedef struct { u8 uc[16]; } WRKSPMu08; typedef struct { short s[8]; } WRKSPMs16; typedef struct { u16 us[8]; } WRKSPMu16; typedef struct { int i[4]; } WRKSPMs32; typedef struct { u32 ui[4]; } WRKSPMu32; typedef struct { float f[4]; } WRKSPMf32; typedef union { WRKSPMs08 c; WRKSPMu08 uc; WRKSPMs16 s; WRKSPMu16 us; WRKSPMs32 i; WRKSPMu32 ui; WRKSPMf32 f; } WRKSPM; typedef struct { // スプライト登録ワーク u8 flag; // 使用有無( TRUEorFALSE ) u8 wspf; // スプライト描画有無( TRUE,FALSE ) SEQANI sqa; // アニメーションシーケンサ(SEQANI.ani == NULLなら起動しない) int (*func)(); // 起動プログラム void* fptr0; // void* fptr1; // WRKSPM work; // unionワーク Gfx* predl; // 初期 DL u8 bflg; // TRUE = 非常駐エリアのカラーパレット u8 page; // gfx_freebuf[x] uObjTxtr* tex; // テクスチャリード u16* tlut; // TLUTリード u16 tsiz; // TLUTサイズ( 16,256 ) u16 tnum; // .. パレット番号 uObjSprite sp; // スプライト設定構造体 } SPFREE; SPFREE sp_freebuf[]; // スプライト登録 int spm_count; // 制御カウンタ //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ sprite.c オチゲースプライトデータ #include "h_statics/character/items/mitem08r.h" // 8x8”赤”カプセル #include "h_statics/character/items/mitem08y.h" // ”黄” #include "h_statics/character/items/mitem08b.h" // ”青” #include "h_statics/character/items/mitem10.h" // 10x10”赤”カプセル #include "h_statics/character/items/mitem15.h" // ”黄”パレットデータのみ #include "h_statics/character/items/mitem20.h" // ”青”パレットデータのみ #include "h_statics/character/mario/make1_ha.h" // ”ゲームオーバー”1上部 #include "h_statics/character/mario/make1_hb.h" // .. 1下部 #include "h_statics/character/mario/make2_ha.h" // ”ゲームオーバー”2上部 #include "h_statics/character/mario/make2_hb.h" // .. 2下部 #include "h_statics/character/mario/make3_ha.h" // ”ゲームオーバー”3上部 #include "h_statics/character/mario/make3_hb.h" // .. 3下部 #include "h_statics/character/mario/make4_ha.h" // ”ゲームオーバー”4上部 #include "h_statics/character/mario/make4_hb.h" // .. 4下部 #include "h_statics/character/mario/nage_1_ha.h" // ”カプセル投げ”1上部 #include "h_statics/character/mario/nage_1_hb.h" // .. 1下部 #include "h_statics/character/mario/nage_2_ha.h" // ”カプセル投げ”2上部 #include "h_statics/character/mario/nage_2_hb.h" // .. 2下部 #include "h_statics/character/mario/nage_3_ha.h" // ”カプセル投げ”3上部 #include "h_statics/character/mario/nage_3_hb.h" // .. 3下部 #include "h_statics/character/mario/back0.h" // ”マリオ背景”上部 #include "h_statics/character/mario/back1.h" // .. 下部 #include "h_statics/character/mario/win_1_ha.h" // ”ステージクリア”1上部 #include "h_statics/character/mario/win_1_hb.h" // .. 1下部 #include "h_statics/character/mario/win_2_ha.h" // ”ステージクリア”2上部 #include "h_statics/character/mario/win_2_hb.h" // .. 2下部 #include "h_statics/character/mario/win_3_ha.h" // ”ステージクリア”3上部 #include "h_statics/character/mario/win_3_hb.h" // .. 3下部 #include "h_statics/character/mario/win_4_ha.h" // ”ステージクリア”4上部 #include "h_statics/character/mario/win_4_hb.h" // .. 4下部 #include "h_statics/character/mario/win_5_ha.h" // ”ステージクリア”5上部 #include "h_statics/character/mario/win_5_hb.h" // .. 5下部 #include "h_statics/character/mario/wait_1_ha.h" // ”ポーズ中”1上部 #include "h_statics/character/mario/wait_1_hb.h" // .. 1下部 #include "h_statics/character/mario/wait_2t_ha.h" // ”ポーズ中”2上部 #include "h_statics/character/mario/wait_2t_hb.h" // .. 2下部 #include "h_statics/character/virus/R_1.h" // 虫眼鏡の赤ウイルス 歩き1 #include "h_statics/character/virus/R_2.h" //           2 #include "h_statics/character/virus/R_3.h" //           3 #include "h_statics/character/virus/R_D_1.h" //         ジタバタ1 #include "h_statics/character/virus/R_D_2.h" //             2 #include "h_statics/character/virus/R_D_3.h" //             3 #include "h_statics/character/virus/R_L_1.h" //         嘲笑1 #include "h_statics/character/virus/R_L_2.h" //           2 #include "h_statics/character/virus/kie_r.h" //         煙 #include "h_statics/character/virus/Y_1.h" // 虫眼鏡の黄ウイルス 歩き1 #include "h_statics/character/virus/Y_2.h" //           2 #include "h_statics/character/virus/Y_3.h" //           3 #include "h_statics/character/virus/Y_D_1.h" //         ジタバタ1 #include "h_statics/character/virus/Y_D_2.h" //             2 #include "h_statics/character/virus/Y_D_3.h" //             3 #include "h_statics/character/virus/Y_L_1.h" //         嘲笑1 #include "h_statics/character/virus/Y_L_2.h" //           2 #include "h_statics/character/virus/kie_y.h" //         煙 #include "h_statics/character/virus/B_1.h" // 虫眼鏡の青ウイルス 歩き1 #include "h_statics/character/virus/B_2.h" //           2 #include "h_statics/character/virus/B_3.h" //           3 #include "h_statics/character/virus/B_D_1.h" //         ジタバタ1 #include "h_statics/character/virus/B_D_2.h" //             2 #include "h_statics/character/virus/B_D_3.h" //             3 #include "h_statics/character/virus/B_L_1.h" //         嘲笑1 #include "h_statics/character/virus/B_L_2.h" //           2 #include "h_statics/character/virus/kie_b.h" //         煙 #include "h_statics/character/virus/spot32w.h" // スポットライト #include "h_statics/character/items/clown.h" // 王冠 #include "h_statics/character/items/pause.h" // PAUSE #include "h_statics/character/items/mes00.h" // STAGE CLEAR #include "h_statics/character/items/mes01.h" // TRY NEXT #include "h_statics/character/items/mes02.h" // GAME OVER #include "h_statics/character/items/sample2.h" // SAMPLE #include "h_statics/character/items/arithmetic.h" // 0〜9 #include "h_statics/character/items/font_lmh.h" // LOW,MED,HI #include "h_statics/character/items/back_col.h" // #include "h_statics/character/items/lamp.h" // 4p対戦用1〜4ランプ //ヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルヒルタルヒ vr_init.c オチゲー、ゲーム前初期配置 static unsigned long mt[N]; /* the array for the state vector */ static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */ VIBLOCK viset[PLAYER_MAX][MFy][MFx]; // マトリクスブロックワーク PWORK *ipw; u8 upper_limit_table[] = // レベルによるvirus積み込み上限テーブル, max = LEVLIMIT { 6,6,6,6,6, 6,6,6,6,6, 6,6,6,6,6, 5,5,4,4,3, 3,3,3,3 }; #define UP_WEIGHT 1 // 上1/3の重み #define MIDDLE_WEIGHT 2 // 中 .. #define LOW_WEIGHT 3 // 下 .. #define VIRUS_GETA 1