家用機 - Sega Genesis - C/C++ - SGDK - Load Image(Tilemap)



參考資訊:
https://github.com/Stephane-D/SGDK
https://github.com/iratahack/m68k-elf-gcc/releases

main.c

#include <genesis.h>

#include "res.h"

int main(bool hard)
{
    VDP_loadTileSet(myimage.tileset, TILE_USER_INDEX, DMA);
    VDP_setTileMapEx(BG_A, myimage.tilemap, TILE_ATTR_FULL(PAL0, FALSE, FALSE, FALSE, TILE_USER_INDEX), 0, 0,  0, 0, 30, 12, CPU);
    PAL_setColors(0, (u16 *)myimage.palette->data, 16, CPU);

    while (TRUE) {
        SYS_doVBlankProcess();
    }

    return 0;
}

main.res

IMAGE myimage "main.png" NONE

P.S. Resource用法可以參考/opt/sgdk/bin/rescomp.txt說明

main.png


編譯、執行

$ java -jar /opt/sgdk/bin/rescomp.jar main.res res.s -dep res.o
$ m68k-elf-gcc -I/opt/sgdk -I/opt/sgdk/inc -m68000 -c main.c
$ m68k-elf-gcc -x assembler-with-cpp -c res.s -o res.o
$ m68k-elf-gcc -m68000 -T /opt/sgdk/md.ld -nostdlib main.o res.o /opt/sgdk/out/release/sega.o /opt/sgdk/lib/libmd.a -lgcc -o rom.out
$ m68k-elf-objcopy -O binary rom.out rom.bin
$ java -jar /opt/sgdk/bin/sizebnd.jar rom.bin -sizealign 131072 -checksum
$ blastem rom.bin