Subversion Repositories NedoOS

Rev

Rev 954 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. #ifndef LEVEL1_C
  2. #define LEVEL1_C
  3. #include "gameloop.c"
  4. #include "level_fragments.h"
  5. #include "engine.c"
  6. #include "resources.h"
  7. #include "dialogs.c"
  8. #include "gameloop.c"
  9. #include "level2.c"
  10. #include "interpreter.c"
  11.  
  12. //static void init_level(u8 image);
  13. static void init_level(u8 pal, char *fn);
  14. static void start_level(u8 pal, char *fn, u8 *name);
  15.  
  16. static void dialog_level1();
  17.  
  18. static void prepare_boss1()
  19. {
  20.     flush_sprites();
  21.     music_play(MUS_NWZ);
  22.     dialog_level1();
  23.     bullet_sprite = MARISA_BULLET;
  24.     //init_level(IMG256_BG2);
  25. init_level(PAL256_BG2, "bg2-16.bmp");
  26.     scroll_pos = 192;
  27.     push_npc(144, 20, 0, 0, MARISA, 255, 1500, 1);
  28. }
  29.  
  30. static void l1f_dialog()
  31. {
  32.     init_dialog();
  33.     swap_screen();
  34.     put_dialog_string(MARISA_FACE, "Cool down, Reimu!", 0);
  35.     put_dialog_string(REIMU_FACE, "???", 1);
  36.     put_dialog_string(MARISA_FACE, "I've heard buzzing\nfairies near Shrine", 0);
  37.     put_dialog_string(REIMU_FACE, "Welll...\nThese insects will subside\nnow.", 1);
  38. //swap_screen();
  39.     wait_for_space();
  40.     init_level2();
  41. }
  42.  
  43. static void process_boss1()
  44. {
  45.     Npc *boss;
  46.     i8 b;
  47.     u8 c;
  48.     if (scroll_pos < 2)
  49.         scroll_speed = 0;
  50.  
  51.     boss = find_npc_by_type(BOSS_TYPE);
  52.     if (boss == 0)
  53.     {
  54.         l1f_dialog();
  55.         return;
  56.     }
  57.  
  58.     switch (level_loop)
  59.     {
  60.     case 1:
  61.         boss->sprite.dx = -1;
  62.         break;
  63.         just_star(2, boss->sprite.x + 16, boss->sprite.y + 16);
  64.         just_star(6, boss->sprite.x + 16, boss->sprite.y + 16);
  65.         just_star(11, boss->sprite.x + 16, boss->sprite.y + 16);
  66.     case 13:
  67.         boss->sprite.dx = 1;
  68.         break;
  69.         boss_shoot1(16, boss->sprite.x + 16, boss->sprite.y + 16);
  70.         just_star(26, boss->sprite.x + 16, boss->sprite.y + 16);
  71.         just_star(31, boss->sprite.x + 16, boss->sprite.y + 16);
  72.         just_star(36, boss->sprite.x + 16, boss->sprite.y + 16);
  73.         boss_shoot1(41, boss->sprite.x + 16, boss->sprite.y + 16);
  74.     case 57:
  75.         boss->sprite.dx = -1;
  76.         break;
  77.         boss_shoot1(58, boss->sprite.x + 16, boss->sprite.y + 16);
  78.     case 90:
  79.         boss->sprite.dx = 0;
  80.         break;
  81.         boss_shoot1(91, boss->sprite.x + 16, boss->sprite.y + 16);
  82.     case 120:
  83.         level_loop = 0;
  84.         for (c = 0; c < 5; c++)
  85.             push_bonus(BONUS_CARD, boss->sprite.x + 16, boss->sprite.y + 16, 3 - (c * 2), 2);
  86.     default:
  87.         break;
  88.     }
  89. }
  90.  
  91. static void dialog_level1()
  92. {
  93.     init_dialog();
  94.     swap_screen();
  95.     put_dialog_string(REIMU_FACE, "Have you seen my donation\nbox?", POSITION_LEFT);
  96.     put_dialog_string(MARISA_FACE, "Where was no money?!\nWho will need it?", POSITION_RIGHT);
  97.     put_dialog_string(REIMU_FACE, "I'll beat you for these\nwords!", POSITION_LEFT);
  98. //swap_screen();
  99.     wait_for_space();
  100. }
  101.  
  102. const u8 level1_bytecode[] = {
  103.     Nop(5),
  104.     MakeEnemiesPair(FAIRY, 1, 10),
  105.     Nop(5),
  106.     MakeCaravan(16, FIARY2, 2, 10, BONUS_CARD),
  107.     Nop(5),
  108.     MakeLeftFlyers(160, GHOST, 10, BONUS_CARD),
  109.     MakeRightFlyers(100, GHOST, 10, BONUS_CARD),
  110.     Nop(20),
  111.     MakeBoomFairy(32, 30, HEALTH_CARD),
  112.     Nop(15),
  113.     MakeBoomFairy(200, 30, HEALTH_CARD),
  114.     Nop(20),
  115.     MakeEnemyWave(FIARY3, 1, 15),
  116.     MidBoss1(GHOST, 255),
  117.     DoubleCaravan(FAIRY, 5, 25, BONUS_CARD),
  118.     Nop(20),
  119.     MakeBoomFairy(160, 30, HEALTH_CARD),
  120.     MakeLeftFlyers(160, FAIRY, 10, 0),
  121.     MakeRightFlyers(100, FIARY3, 10, 0),
  122.     MakeLeftFlyers(32, FIARY2, 10, 0),
  123.     JustStar(160, 120, 3),
  124.     Nop(10),
  125.     JustStar(32, 32, 1),
  126.     JustStar(210, 132, 1),
  127.     Nop(10),
  128.     MakeShootingStar(160, 100, INJAN, 10, 20),
  129.     Nop(15),
  130.     MakeShootingStar(64, 64, INJAN, 10, 20),
  131.     Nop(15),
  132.     MakeShootingStar(256, 64, INJAN, 10, 20),
  133.     Nop(20),
  134.     PushNpc(160, -10, 0, 1, MARISA, 255, 1024, 0),
  135.     Nop(10),
  136.     End };
  137.  
  138. static void process_level1()
  139. {
  140.     if (executing) {
  141.         vm_step();
  142.     } else {
  143.         prepare_boss1();
  144.         process_level = process_boss1;
  145.     }
  146. }
  147.  
  148. #endif