int main(void) { //Create game object zephyrjc_t *game = zephyrjc_init(); //Init graphics zephyrjc_init_graphics(game, 640, 480, 32); //Init keyboard zephyrjc_keyboard_init(game); //Create scenario and set as current scenario_t *test_scenario = scenario_create(game); zephyrjc_set_current_scenario(game, test_scenario); //Create an abstract object object_t *obj = object_create(test_scenario); //Add transform component to object component_t *transform = transform_create(obj); //Add tilemap component_t *tileengine = tileengine_create(obj); tilepool_t *tp = create_tilepool("tiles.png", 16, 16, 0, 0, 55, 36); uint16_t test_array[36][55]; for(int y=0;y<36;y++) { for (int x=0;x<55;x++) { test_array[y][x] = x+y*55; } } tilemap_t *tilemap = create_tilemap(tp, (uint16_t*) *test_array, 55, 36, 0); tileengine_t *cte = (tileengine_t*) tileengine; cte->current_tilemap = tilemap; cte->source.x = 0; cte->source.y = 0; cte->source.w = 640; cte->source.h = 480; //Add sprite component to object. Set sprite sprite_t *sp = (sprite_t*) sprite_create(obj); spriteBuffer_t *sprite = create_sprite(); load_bmp(sprite, "mario.png"); sprite_set(sp, sprite); //Start Zephyr Jarlsberg & Chedar engine zephyrjc_start(game); return 0; }
int main(void) { music_init(); music_play(3); u16 delay_mod = 4; u16 col_inc_cnt = 0; setup(); reset_demo: hint_val = 3; col = 0; col_off = 0; phrase_num = 0; scroll_off = 0; dscroll = 0; term_pos = 0; term_scrolling = 0; sprites_dma_simple(); term_pos = 0; VDP_setHInterrupt(0); VDP_clearPlan(VDP_PLAN_A, 0); VDP_clearPlan(VDP_PLAN_B, 0); // Greyscale palette for text VDP_setPaletteColor(0,0x000); VDP_setPaletteColor(1,0x444); VDP_setPaletteColor(2,0x888); VDP_setPaletteColor(3,0xEEE); VDP_setScreenWidth256(); bios_boot_demo(); VDP_setScreenWidth320(); VDP_clearPlan(VDP_PLAN_A, 0); VDP_clearPlan(VDP_PLAN_B, 0); awful_put_logo(8, 2); startup_stretch(); VDP_setVerticalScroll(PLAN_A, 252); VDP_setVerticalScroll(PLAN_B, 252); VDP_setHIntCounter(hint_val); SYS_setHIntCallback((_voidCallback *)h_int); volatile u8 p1 = pad_read(0); sprites_init(); col_puts40(8,0,"Computer Science House"); // Initialize background stars star stars[NUM_STARS]; u16 i = 0; for (i = 0; i < NUM_STARS; i++) { stars[i].x = i * 5; stars[i].y = 128 + i * 8; stars[i].speed = (i % 7) + 1; stars[i].offset = (3 * i) % 4; stars[i].size = (i % 4 == 0) ? ('.' + COL_FONT_VRAM_OFFSET) : (128 + '.' + COL_FONT_VRAM_OFFSET); } print_phrase(8); u16 delay = 0; u8 dir = 0; VDP_setHInterrupt(1); for (;;) { delay++; if (col_inc_cnt == 0) { col_inc_cnt = hint_val; col_off += 0x002; } else { col_inc_cnt--; } if (delay == 512) { if (phrase_num == 8) { phrase_num = 0; VDP_setHInterrupt(0); sprite_set(0, 0, 0, 0, 0, 0); sprites_dma_simple(); while (vbl_wait) { __asm__("nop"); } vbl_wait = 1; goto reset_demo; } hint_val++; if (hint_val == 10) { hint_val = 3; } delay_mod = delay_mod >> 1; if (delay_mod == 0) { delay_mod = delay_mod = 4; } VDP_setHIntCounter(hint_val); VDP_setHInterrupt(0); print_phrase(phrase_num); VDP_setHInterrupt(1); phrase_num++; delay = 0; } process_stars(&stars); while (vbl_wait) { __asm__("nop"); } VDP_setHInterrupt(0); VDP_setPaletteColor(14,palette[col]); col = col_off; vbl_wait = 1; sprites_dma_simple(); VDP_setHInterrupt(1); } return 0; }