nes-pascal

Estrutura do programa

English Português (Brasil)

Um programa contém:

  1. a palavra-chave program;
  2. um nome de programa;
  3. um ponto e vírgula;
  4. uma seção opcional type;
  5. uma seção opcional const;
  6. uma seção opcional var;
  7. zero ou mais declarações de procedimentos e funções;
  8. um bloco que se inicia com begin;
  9. uma sequência de instruções;
  10. a palavra-chave end;
  11. um ponto final.

Exemplo:

program Minimal;

const
    DefaultBackgroundColor: nes_color = $21;

var
    BackgroundColor: nes_color;
    FrameCounter: byte;
    RenderingEnabled: boolean;

procedure Initialize(Start: byte; Enabled: boolean);
begin
    FrameCounter := Start;
    RenderingEnabled := Enabled;
end;

begin
    BackgroundColor := DefaultBackgroundColor;
    Initialize($00, true);
    nes.set_background_color(BackgroundColor);
    nes.run;
end.

As seções de declaração devem aparecer nesta ordem: type, const e var, seguidas por procedimentos e funções intercalados. O bloco principal contém a sequência de inicialização de nível superior e pode continuar com a lógica da thread principal sincronizada por quadros após nes.run.

A seção type pode declarar enumerações nominais e records de layout fixo. Campos de record podem usar qualquer enum declarado na seção; campos record aninhados continuam não suportados.

Os registros estáticos nes.on_update(Procedure) e nes.on_vblank(Procedure), quando presentes, pertencem à sequência incondicional de inicialização de nível superior antes de nes.run. Consulte Callbacks de quadro.

O comando opcional nes.load_background() também é uma instrução incondicional de inicialização de nível superior antes de nes.run. Ele não recebe argumentos e requer dados de nametable configurados.

Atualizações de fundo em runtime limitadas podem ser preparadas a partir do código principal ou de procedimentos. Suas operações que modificam a fila não são permitidas no caminho de um callback de VBlank; a consulta simples de estouro é segura nesse contexto.