public static Keys WaitForKeys() { // to prevent a compiler bug int a = 0; Keys key; while (true) { if (C64.IsKeyPressed(Keys.Space) || (C64.Joysticks.Joystick2.Pressed & JoystickButtons.Fire) == JoystickButtons.Fire) { key = Keys.Space; break; } if (C64.IsKeyPressed(Keys.B)) { key = Keys.B; break; } } // wait for key up while (true) { if (!C64.IsKeyPressed(key)) { break; } Delay.Wait(500); } return(key); }
public override void Present() { Screen.Clear(Colors.Green); C64.Write(17, 12, "F O R", Colors.Green); var c64Logo = new MovingLogo { SpriteTL = C64.Sprites.Sprite0, SpriteBL = C64.Sprites.Sprite1, SpriteTR = C64.Sprites.Sprite2, SpriteBR = C64.Sprites.Sprite3, MinX = 220, MaxX = 265, MinY = 50, MaxY = 170, X = 220, Y = 160 }; var csharpLogo = new MovingLogo { SpriteTL = C64.Sprites.Sprite4, SpriteBL = C64.Sprites.Sprite5, SpriteTR = C64.Sprites.Sprite6, SpriteBR = null, MinX = 30, MaxX = 90, MinY = 50, MaxY = 170, X = 50, Y = 50 }; c64Logo.Init(); csharpLogo.Init(); for (; ;) { Delay.Wait(100); if (C64.IsKeyPressed(Keys.Space) || (C64.Joysticks.Joystick2.Pressed & JoystickButtons.Fire) == JoystickButtons.Fire) { break; } c64Logo.Step(); csharpLogo.Step(); } }
public override void Present() { Colors color = Colors.Black; C64.Write(15, 12, "D E M O", Colors.Black); for (ulong i = 0; i < 1000; i++) { C64.SetBackgroundColor(color); C64.SetBorderColor(color); color++; if (C64.IsKeyPressed(Keys.Space) || (C64.Joysticks.Joystick2.Pressed & JoystickButtons.Fire) == JoystickButtons.Fire) { break; } } }
public static void Display() { Screen.Clear(Colors.White); C64.CopyMemory(C64Address.FromLabel("(screenMemory+$CD)"), C64Address.FromLabel("titleScreen"), 0); C64.CopyMemory(C64Address.FromLabel("(screenMemory+$1CD)"), C64Address.FromLabel("titleScreen+$100"), 0); C64.CopyMemory(C64Address.FromLabel("(screenMemory+$21B)"), C64Address.FromLabel("titleScreen+$14E"), 0); C64.Write(13, 1, "OCEAN SOFTWARE", Colors.Green); C64.Write(13, 3, " PRESENTS ", Colors.White); C64.Write(25, 21, " BY J.STEELE", Colors.Green); C64.Write(7, 23, "PRESS F1 FOR INSTRUCTIONS", Colors.White); C64.Write(7, 24, " OR SPACE TO START ", Colors.White); var tones = GetTones(); for (; ;) { var color = (uint)1; foreach (var t in tones) { color++; if (color == 7) { color = 1; } C64.Sound.PlayEffectReg1(WaveForm.Saw, t.Frequency, 0, 9, 0, false); C64.FillMemory(C64Address.FromLabel("(colorMemory+$CD)"), color, 0); C64.FillMemory(C64Address.FromLabel("(colorMemory+$1CD)"), color, 0); C64.FillMemory(C64Address.FromLabel("(colorMemory+$21B)"), color, 0); for (uint k = 0; k < 50u; k++) { for (uint kk = 0; kk < t.Sustain; kk++) { if (C64.IsKeyPressed(Keys.Space) || (C64.Joysticks.Joystick2.Pressed & JoystickButtons.Fire) == JoystickButtons.Fire) { return; } } } } } }
public bool Play(LevelDescription description, PlayerStats playerStats) { Wall wall = new Wall(); wall.Draw(description.Color, description.WallType); playerStats.Draw(); Player player = new Player() { Sprite = C64.Sprites.Sprite0 }; player.Init(wall); Knight knight = new Knight() { Sprite = C64.Sprites.Sprite1 }; knight.Init(); GetReady(); Rope rope = null; if (description.WallType == WallType.Rope) { rope = new Rope { Sprite1 = C64.Sprites.Sprite3, Sprite2 = C64.Sprites.Sprite4, }; rope.Init(); } else { C64.Sprites.Sprite3.Visible = false; C64.Sprites.Sprite4.Visible = false; } Enemy enemy = new Enemy() { Sprite = C64.Sprites.Sprite2, EnemyType = description.EnemyType }; enemy.Init(); var gameObjects = new GameObject[] { enemy, knight, rope, wall }; for (; ;) { player.Move(); var collisions = C64.Sprites.Collisions; if ((collisions & 1u) > 0) { if ((collisions & 6u) > 0) // Player-enemy collision { player.Die(); } else { player.SetOnRope(rope); } } if (player.Dead) { return(false); } if (player.Complete) { return(true); } foreach (var go in gameObjects) { go?.Move(); } Delay.Wait(100); if (C64.IsKeyPressed(Keys.L)) { return(true); } } }