掌機 - Game Boy Color - C/C++ - Hello, world!



參考資訊:
https://bgb.bircd.org/
https://github.com/mrombout/gbdk_playground
http://gbdk.sourceforge.net/doc/html/book01.html

Palette(BG)設定

void set_bkg_palette(UINT8 first_palette, UINT8 nb_palettes, UINT16 *rgb_data) NONBANKED;

第一個參數是Palette目標位置(0~7)
第二個參數是需要複製多少個Palette(1~8)
第三個參數是Palette來源位置

main.c

#include <stdio.h>
#include <gb/gb.h>
#include <gb/cgb.h>

unsigned short palette[] = {RGB_YELLOW, RGB_RED, RGB_GREEN, RGB_BLUE};

void main(void)
{
    set_bkg_palette(0, 1, palette);
    printf("Hello, world!");
}

編譯

$ export PATH=$PATH:/opt/gbdk/bin
$ lcc -o main.gb main.c
$ printf '\x80' | dd of=main.gb bs=1 seek=323 count=1 conv=notrunc
$ rgbfix -v -p0 main.gb

由於gbdk的makebin在x64環境無法正確執行,因此,司徒使用printf加上dd做0x143的修正,最後再使用rgbfix做checksum修正

執行bgb.exe,然後在bgb視窗上,按滑鼠右鍵,選擇Load ROM...,載入main.gb


在bgb視窗上按滑鼠右鍵,選擇Other => VRAM Viewer,可以查看目前設定的Palette