blob: 6d7d79e813b22bd7c668f85ce6d4d82fd7683b61 [file] [log] [blame]
/* automaticaly generated from the file start.asm do not modify */
static void emit_start(FILE *f)
{
emit(f,".org 0x2100\n");
emit(f,".db \"MN\"\n");
emit_irq_vectors(f);
emit(f,".orgfill 0x21A4\n");
emit(f,".db \"NINTENDO\"\n");
emit(f,".db \"%s\"\n", game_id);
emit(f,".db \"%s\"\n", game_name);
emit(f,".orgfill 0x21BC\n");
emit(f,".db \"2P\"\n");
emit(f,".orgfill 0x21D0\n");
emit(f,"vbcc___start_rom_vars:\n");
emit(f,".org 0x1000\n");
emit(f,"vbcc___start_ram_vars:\n");
emit(f,".org 0x2000\n");
emit(f,"vbcc___end_ram_vars:\n");
emit(f,".org 0x31D0\n");
emit(f,".equ vbcc___ram_vars_offset %d - 0x1000\n", start_ram_vars);
emit(f, "%s0:\n", int_handler_prefix);
emit(f,"\tmov\t\tx, vbcc___start_rom_vars + vbcc___ram_vars_offset\n");
emit(f,"\tmov\t\ty, vbcc___start_ram_vars + vbcc___ram_vars_offset\n");
emit(f,"\tmov\t\thl, vbcc___end_ram_vars\n");
emit(f,"vbcc__copy_vars_loop:\n");
emit(f,"\tmov\t\ta,[x]\n");
emit(f,"\tmov\t\t[y],a\n");
emit(f,"\tinc\t\tx\n");
emit(f,"\tinc\t\ty\n");
emit(f,"\tcmp\t\thl, y\n");
emit(f,"\tjnz\t\tvbcc__copy_vars_loop\n");
emit(f,"\tmovw\tsp, 0x2000\n");
emit(f,"\tmovw\tnn, 0x2000\n");
emit(f,"\tmovb\t[nn+0x21], 0x0C\n");
emit(f,"\tmovb\t[nn+0x25], (1<<7)\n");
emit(f,"\tmovb\tflags, 0\n");
emit(f,"\tmovb\t[nn+0x80], 0b00001000\n");
emit(f,"\tmovb\t[nn+0x81], 0b00001001\n");
emit(f,"\tcall\tmain\n");
emit(f,"vbcc___infinite_loop:\n");
emit(f,"\tjmp\tvbcc___infinite_loop\n");
}