あとワークエリアは流石にu8 buf[16]; とかしておいて
「(s16)(((s16*)buf)+0) は x で…+2 は y で…」なんてやってられないので
(snip)
とかで this = (HOGE)buf; してから this->x とか this->y とか にしたらだいぶ見た目がふつうになったンゴ!
(わかる人ならこれで大丈夫だと思うけど)いくらなんでも説明が雑すぎたので集合知のためにもう少し詳しく残しておきますね。
typedef struct { Map *map; s16 x, y; s16 n, c; s16 w, h; } TH_REGISTER_MAP, *TH_LPREGISTER_MAP; u8 g_pThisRegister[16]; void thDemo_WallpaperInit(void) { /* s16 *reg = (s16*)g_pThisRegister; *(reg + 0) = 0; *(reg + 1) = 0; *(reg + 2) = 256; *(reg + 3) = 160; **/ TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister; reg-> map = g_pMaps[1]; reg-> x = 0; reg-> y = 0; reg-> w = 256; reg-> h = 160; } void thDemo_WallpaperMain(void) { /* Map *map = g_pMaps[1]; TH_LPREGISTER_S16 reg = (TH_LPREGISTER_S16)g_pThisRegister; *(reg + 0) = *(reg + 0) + 1; *(reg + 1) = *(reg + 1) + 1; MAP_scrollTo(map, ((*(reg + 0)) % (*(reg + 2))), ((*(reg + 1)) % (*(reg + 3)))); **/ TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister; reg->x++; reg->y++; MAP_scrollTo(reg->map, (reg->x) % (reg->w), (reg->y) % (reg->h)); }