| English | Português (Brasil) |
Diagnósticos de análise semântica utilizam o intervalo E3000-E3999.
nes.run ausentenes.run incondicional de nível superior.Gatilho:
begin
nes.set_background_color($21);
end.
Saída esperada do compilador:
E3001 demo.nsp:4:1
The program must start the runtime with nes.run.
nes.run; de nível superior após a inicialização
e antes de qualquer instrução nes.wait_frame.nes.runnes.run, mas chamadas adicionais a nes.run não são permitidas.Gatilho:
nes.run;
nes.run;
Saída esperada do compilador:
E3002 demo.nsp:2:1
nes.run may appear only once.
nes.run.nes.set_background_color antes de nes.run. Chamadas enfileiradas posteriores são permitidas.Gatilho:
begin
nes.run;
end.
Saída esperada do compilador:
E3003 demo.nsp:3:1
The program must set its initial background color exactly once.
nes.set_background_color(value); antes de nes.run.Gatilho:
var
Color: byte;
COLOR: byte;
Saída esperada do compilador:
E3004 demo.nsp:3:5
Symbol COLOR is already declared.
Gatilho:
Counter := Missing;
Saída esperada do compilador:
E3005 demo.nsp:1:12
Unknown identifier: Missing.
Gatilho:
Maximum := $10;
Saída esperada do compilador:
E3006 demo.nsp:1:1
Cannot assign to constant Maximum.
Gatilho:
Missing := $01;
Saída esperada do compilador:
E3007 demo.nsp:1:1
Unknown variable: Missing.
var.Gatilho:
var
BackgroundColor: nes_color;
begin
nes.set_background_color(BackgroundColor);
Saída esperada do compilador:
E3008 demo.nsp:4:30
Variable BackgroundColor is read before it is assigned.
nes.set_background_color(BackgroundColor);
^^^^^^^^^^^^^^^
nes.run deve ser executado exatamente uma vez no bloco principal de
nível superior e não pode ser colocado em um caminho de execução condicional. Chamadas de
paleta são permitidas e enfileiram alterações após o início do runtime.Gatilho:
if Enabled then
nes.run;
Saída esperada do compilador:
E3009 demo.nsp:2:5
nes.run cannot appear inside a conditional branch.
break e continue necessitam de um laço while, repeat ou for
delimitador que forneça seu alvo de controle de fluxo.Gatilho:
begin
break;
end.
Saída esperada do compilador:
E3010 demo.nsp:2:5
break can appear only inside a loop.
nes.run deve ser executado exatamente uma vez e não pode ser repetido
por um laço. Chamadas de paleta são permitidas e enfileiram alterações após o início do runtime.Gatilho:
while Running do
nes.run;
Saída esperada do compilador:
E3011 demo.nsp:2:5
nes.run cannot appear inside a loop body.
for detém sua variável de controle enquanto seu corpo está em
execução. Atribuir a ela, atualizá-la com inc ou dec, ou reutilizá-la como a variável
de controle de um for aninhado tornaria o término do laço imprevisível.Gatilho:
for Index := $00 to $03 do
Index := $01;
Saída esperada do compilador:
E3012 demo.nsp:2:5
For control variable Index cannot be modified inside its loop body.
Gatilho:
begin
Missing;
end.
Saída esperada do compilador:
E3013 demo.nsp:2:5
Unknown procedure: Missing.
Gatilho:
procedure Again;
begin
Again;
end;
Saída esperada do compilador:
E3014 demo.nsp:4:5
Recursive procedure call involving Again is not supported.
nes.run pertence à sequência principal de inicialização e nes.wait_frame
depende da fase conhecida de runtime do bloco principal. Chamadas de paleta são permitidas
em procedimentos e funções e publicam alterações para o VBlank. A restrição vale para
ambos os tipos de rotina.Gatilho:
procedure WaitInsideProcedure;
begin
nes.wait_frame;
end;
Saída esperada do compilador:
E3015 demo.nsp:4:5
nes.wait_frame cannot appear inside a procedure.
Gatilho:
procedure Initialize(Value: byte);
begin
end;
begin
Initialize;
end.
Saída esperada do compilador:
E3016 demo.nsp:7:5
Procedure Initialize expects 1 argument(s), but 0 were provided.
nes.wait_frame observa um contador alterado pela NMI. Antes de nes.run,
a NMI está desabilitada e a espera nunca seria concluída.Gatilho: Compilar tests/fixtures/diagnostics/frame_wait_before_run.nsp, ou escrever:
nes.set_background_color($21);
nes.wait_frame;
nes.run;
Saída esperada do compilador:
E3017 frame_wait_before_run.nsp:4:5
nes.wait_frame cannot execute before nes.run starts NMI.
nes.wait_frame e seu laço de quadros para depois da chamada
incondicional de nível superior nes.run.nes.on_update(Missing);Saída esperada do compilador:
E3018 demo.nsp:4:19
Unknown callback procedure: Missing.
procedure Update(Value: byte); com nes.on_update(Update);.E3019 seguido por Callback procedure Update must not have parameters.nes.on_update(...) na inicialização.E3020 seguido por Only one update callback may be registered.nes.on_vblank(...) na inicialização.E3021 seguido por Only one VBlank callback may be registered.nes.run.nes.on_update(Update); em um if, laço, procedimento ou após nes.run.E3022 seguido por uma explicação do contexto de registro de callback.nes.run.while, repeat, for, aritmética, comparação, nes.wait_frame
ou outra instrução não suportada no caminho de chamada do VBlank.E3023 identifica a operação não segura e o caminho de
procedimentos que a alcança.inc/dec simples, condicionais seguras, chamadas de preparação de paleta com valores livres
de temporários e helpers validados.E3024 identifica a aresta de chamada inválida.Both com nes.on_update(Both); e nes.on_vblank(Both);.E3025 seguido por Procedure Both cannot be registered as both update and VBlank callbacks.nes.controller_down($03, nes.button_a) ou índice $00.E3026 identifica a constante inválida.$01, $02 ou uma constante byte declarada com um desses valores.E3027 seguido por requires a compile-time controller index.$01, $02 ou uma constante declarada direta de byte.nes.button_* padrão,
e não um literal, constante de usuário, expressão ou nome desconhecido de botão.nes.controller_down($01, nes.button_fire).E3028 identifica o botão inválido.E3029 reporta a contagem fornecida.nes.controller_pressed($01, nes.button_start).nes.set_sprite_zero com quantidade diferente de quatro argumentos.E3030 reporta a contagem fornecida.byte. Este helper não é uma API geral de sprites.byte em tempo de compilação
de $00 até $03.$04 ou uma expressão dinâmica para nes.set_background_palette ou sua
forma de cor individual.E3031 identifica o índice e API inválidos.$00..$03 ou uma constante byte nesse intervalo.byte em tempo de compilação
de $00 até $03.$04 ou uma expressão dinâmica para nes.set_sprite_palette ou sua
forma de cor individual.E3032 identifica o índice e API inválidos.$00..$03 ou uma constante byte nesse intervalo.$00..$03 em tempo de compilação.$04 ou uma expressão dinâmica.E3033 identifica o índice de cor inválido.$00..$03 ou uma constante byte nesse intervalo.E3034 reporta a contagem esperada e real.nes.load_background() seleciona o fundo configurado pelas opções do
compilador e, portanto, não recebe argumentos na linguagem-fonte.nes.load_background($00);E3035 reporta a contagem de argumentos fornecida.nes.load_background(); sem argumentos.nes.run habilitar a renderização.nes.load_background(); após nes.run;.E3036 identifica o comando inseguro.nes.run;.nes.load_background(); duas vezes no bloco principal.E3037 aponta para a segunda chamada.nes.set_tile requer X do tile, Y do tile e o índice do tile.tests/fixtures/diagnostics/set_tile_argument_count.nsp, ou omitir ou adicionar um argumento a nes.set_tile.E3038 reporta a contagem esperada e real.nes.set_tile(x, y, tile) com três valores byte.nes.get_tile requer X do tile e Y do tile.tests/fixtures/diagnostics/get_tile_argument_count.nsp, ou omitir ou adicionar um argumento a nes.get_tile.E3039 reporta a contagem esperada e real.nes.get_tile(x, y) com dois valores byte.nes.set_attribute requer X do atributo, Y do atributo e um byte de atributo bruto.tests/fixtures/diagnostics/set_attribute_argument_count.nsp.E3040 reporta a contagem esperada e real.nes.set_attribute(x, y, value) com três valores byte.nes.clear_background_updates() não recebe argumentos.tests/fixtures/diagnostics/clear_background_updates_argument_count.nsp.E3041 reporta a contagem fornecida.nes.clear_background_updates(); sem argumentos.tests/fixtures/diagnostics/invalid_tile_coordinate.nsp, usar X acima
de 31 ou Y acima de 29 em nes.set_tile ou nes.get_tile.E3042 identifica a coordenada e o intervalo válido.tests/fixtures/diagnostics/invalid_attribute_coordinate.nsp, usar X acima
de 7 ou Y acima de 7 em nes.set_attribute.E3043 identifica a coordenada e o intervalo válido.nes.background_updates_overflowed() lê uma flag fixa de runtime e não recebe argumentos.tests/fixtures/diagnostics/background_updates_overflowed_argument_count.nsp.E3044 reporta a contagem fornecida.nes.background_updates_overflowed() sem argumentos e utilize seu resultado boolean.nes.clear_background_update_overflow() limpa uma flag fixa de runtime e não recebe argumentos.tests/fixtures/diagnostics/clear_background_update_overflow_argument_count.nsp.E3045 reporta a contagem fornecida.nes.clear_background_update_overflow(); sem argumentos.nes.set_scroll requer exatamente dois argumentos: rolagem horizontal e rolagem vertical.nes.set_scroll com menos ou mais de dois argumentos.E3046 seguido pelas contagens esperada e real de argumentos.byte, por exemplo nes.set_scroll($08, $04);.sprite e um valor de
propriedade. nes.sprite_hide e nes.sprite_show requerem apenas o índice do sprite.tests/fixtures/diagnostics/sprite_argument_count.nsp, ou omitir ou adicionar
um argumento a uma instrução nes.sprite_*.E3047 reporta as contagens esperada e real de argumentos do comando.nes.sprite_set_palette deve estar em $00..$03.tests/fixtures/diagnostics/invalid_sprite_palette.nsp, ou passar $04 ou
maior como valor de paleta em tempo de compilação.E3048 identifica o valor e o intervalo válido.$00, $01, $02 ou $03.nes.sprite_create() é uma expressão de reserva de OAM sem parâmetros em tempo de compilação.tests/fixtures/diagnostics/sprite_create_argument_count.nsp ou passar qualquer
argumento para nes.sprite_create.E3049 reporta que zero argumentos eram esperados e identifica a contagem fornecida.nes.sprite_create() com parênteses vazios.nes.sprite_create()
e componentes de metasprites detidos estaticamente compartilham a capacidade fixa de 64 entradas de OAM do NES.
A alocação estática não pode reservar outra entrada ou grupo de componentes não conflitante.tests/fixtures/diagnostics/sprite_capacity_exhausted.nsp ou de outra forma
reservar todos os 64 índices antes de outro local de criação.E3050 identifica o local de criação que não pode receber uma entrada de OAM.nes.run, deve nomear um asset configurado com --metasprite, e todo asset
configurado deve ser importado.tests/fixtures/diagnostics/invalid_metasprite_import.nsp sem configurar seus
metadados de player, aninhar a importação ou movê-la para após o início do runtime.E3051 identifica a importação inválida ou o asset configurado que
carece de uma instrução de importação.nes.import_metasprite(player); diretamente no bloco
principal antes de nes.run;.tests/fixtures/diagnostics/duplicate_metasprite_import.nsp com o asset player configurado.E3052 identifica a segunda importação.nes.metasprite_create requer exatamente um quadro simbólico importado como player.idle_0.
O local de criação possui uma identidade estática persistente e não é uma alocação de heap.tests/fixtures/diagnostics/invalid_metasprite_create.nsp ou chamar o intrínseco
sem um quadro simbólico.E3053 explica o formato inválido de criação.tests/fixtures/diagnostics/metasprite_argument_count.nsp.E3054 reporta as contagens esperada e real.tests/fixtures/diagnostics/incompatible_metasprite_frame.nsp com ambos os assets
referenciados configurados.E3055 nomeia a instância e os assets de quadros.nes.metasprite_set_animation requer uma animação simbólica importada pertencente
ao asset de criação da instância. Nomes de animação são símbolos exclusivos do compilador e não
podem ser substituídos por valores numéricos.tests/fixtures/diagnostics/invalid_metasprite_animation.nsp, ou passar uma
animação estaticamente conhecida de outro asset.E3056 identifica a seleção de animação não simbólica ou incompatível.player.movement_right a partir do mesmo asset importado
utilizado por nes.metasprite_create.tests/fixtures/diagnostics/invalid_builtin_context.nsp, ou escrever
nes.sprite_create(); como uma instrução autônoma.E3057 nomeia o builtin e seu contexto registrado.E3058 cobre assinaturas comuns que anteriormente não possuíam um diagnóstico dedicado.tests/fixtures/diagnostics/invalid_builtin_argument_count.nsp.E3058 reporta as contagens esperada e fornecida de argumentos.tests/fixtures/diagnostics/unknown_function.nsp.tests/fixtures/diagnostics/function_argument_count.nsp.() em chamadas sem parâmetros.tests/fixtures/diagnostics/function_used_as_statement.nsp.tests/fixtures/diagnostics/procedure_used_as_expression.nsp.tests/fixtures/diagnostics/undefined_function_result.nsp.nes.random_range
possuem mínimo maior que o máximo.tests/fixtures/diagnostics/invalid_random_range.nsp.E3064 identifica o range constante invertido.