タイルセットと衝突

日17 月Apr 年2021

テレセット、テレマップ、パレット

目的

私たちの目的は、スクリーンショットのようにタイルマップを再作成することですが、タイルセットとタイルマップは異なります。タイルマップには透明なタイルがあり、透明なタイルの背後に背景が表示されます。デモのスクリーンショットには、タイルセットに2つのタイルのみがあり、背景はなく、小さなパレットがあります。背景パレットで背景を追加し、新しいタイルマップを追加します。

古いタイルマップ

タイルマップ
以前から。

#include <string.h>
#include <maxmod.h>
#include "toolbox.h"
#include "input.h"
#include "backgrounds/autumnBackground.h"
#include "backgrounds/winterBackground.h"
#include "backgrounds/springBackground.h"
#include "backgrounds/summerBackground.h"
#include "tilesets/seasonsTileset.h"
#include "tilemaps/springMap.h"
#include "soundbank.h"
#include "soundbank_bin.h"
#define IRQ_VBLANK 0x001

// マップのサイズ
#define MapWidth 256
#define MapHeight 256

// マップを画面エントリの配列 (16 ビット値) として解釈する
u16 *my_map = (u16*)(autumnBackgroundMap);

// GBA スクリーンブロックのサイズ
#define SbWidth 32
#define SbHeight 32
int map_x = 0;
int map_y = 0;
// これらを変更して、マップの別の部分をロードします。
int map_offset_x = 0;
int map_offset_y = 0;

// コピー先のスクリーンブロック
const int sbb = 30;

地図の読み込み

これは、マップをセクションにロードするための関数です。

void load_map() {
    for (int y = 0; y < SbHeight; y++) {
        for (int x = 0; x < SbWidth; x++) {
            // マップ内の座標を把握する
            map_x = map_offset_x + x;
            map_y = map_offset_y + y;

            //se_mem[sbb][x + y*SbWidth] |= SE_PALBANK(0);

            se_mem[sbb][x + y*SbWidth] = my_map[map_x + map_y * MapWidth];
        }
    }
}

バックグラウンド

背景画像は分割され、タイルマップとして表示されます。

タイルマップ
背景を追加します。

#define BackgroundLayer 0
void background()
{
 // パレットをロード
    memcpy(pal_bg_mem, autumnBackgroundPal, autumnBackgroundPalLen);
    // タイルを CBB 0 にロードする
    memcpy(&tile_mem[0][31], autumnBackgroundTiles, autumnBackgroundTilesLen);
    // SBB 30にマップをロード
    //load_map();

    memcpy(&se_mem[30][0], autumnBackgroundMap, autumnBackgroundMapLen);
 for (int i=0; autumnBackgroundMapLen; i++)
  se_mem[30][i] |= SE_PALBANK(0);


    // charblock 0 と screenblock 31 を使用して、
    //4bpp 64x32px マップ用に BG0 を設定します
    REG_BG0CNT= BG_CBB(0) | BG_SBB(30) | BG_4BPP | BG_REG_32x32;
}



タイルセット

これが使用するタイルセットです

タイルマップ
タイルセット。

テレマップ

これが使用するタイルマップです。 Usenti で開き、.c または .h ファイルとしてエクスポートします。

タイルマップ
背景を追加します。

エクスポート設定「Usenti」

タイルマップ
エクスポート設定「Usenti」

TilemapStudio

タイルマップは、Windows 用のタイルマップ エディターである Tilemap Studio を使用して作成できます。 タイルマップ
背景を追加します。

Tiled

また、「Tiled」mapeditor.orgを使用することができますタイルマップ
背景を追加します。

インクルード

インクルードを追加することから始めます。