From 3edb861693c0ee4653d7506ab147957d77cea8b8 Mon Sep 17 00:00:00 2001 From: Daan Vanden Bosch Date: Mon, 29 Jul 2019 01:02:22 +0200 Subject: [PATCH] Object code and labels are now represented by segments. Each segment describes the instructions or data denoted by a label. --- src/data_formats/cursor/AbstractCursor.ts | 13 + src/data_formats/cursor/Cursor.ts | 5 + src/data_formats/parsing/quest/bin.test.ts | 14 +- src/data_formats/parsing/quest/bin.ts | 399 +++++---- src/data_formats/parsing/quest/index.test.ts | 8 +- src/data_formats/parsing/quest/index.ts | 55 +- src/data_formats/parsing/quest/opcodes.ts | 101 ++- src/domain/index.ts | 14 +- .../{Assembler.ts => AssemblyAnalyser.ts} | 25 +- src/scripting/assembler_messages.ts | 11 +- src/scripting/assembly.test.ts | 73 +- src/scripting/assembly.ts | 810 +++++++++--------- src/scripting/assembly_worker.ts | 6 +- src/scripting/disassembly.ts | 65 +- .../quest_editor/AssemblyEditorComponent.tsx | 8 +- test/resources/quest27_e.bin | Bin 0 -> 81173 bytes test/resources/quest27_e.qst | Bin 0 -> 111056 bytes 17 files changed, 879 insertions(+), 728 deletions(-) rename src/scripting/{Assembler.ts => AssemblyAnalyser.ts} (61%) create mode 100644 test/resources/quest27_e.bin create mode 100644 test/resources/quest27_e.qst diff --git a/src/data_formats/cursor/AbstractCursor.ts b/src/data_formats/cursor/AbstractCursor.ts index 084d61d2..6dd0895b 100644 --- a/src/data_formats/cursor/AbstractCursor.ts +++ b/src/data_formats/cursor/AbstractCursor.ts @@ -168,6 +168,19 @@ export abstract class AbstractCursor implements Cursor { return array; } + i32_array(n: number): number[] { + this.check_size("n", n, 4 * n); + + const array = []; + + for (let i = 0; i < n; ++i) { + array.push(this.dv.getInt32(this.offset + this.position, this.little_endian)); + this._position += 4; + } + + return array; + } + vec2_f32(): Vec2 { return new Vec2(this.f32(), this.f32()); } diff --git a/src/data_formats/cursor/Cursor.ts b/src/data_formats/cursor/Cursor.ts index f85bf7f1..9094cd60 100644 --- a/src/data_formats/cursor/Cursor.ts +++ b/src/data_formats/cursor/Cursor.ts @@ -128,6 +128,11 @@ export interface Cursor { */ u32_array(n: number): number[]; + /** + * Reads n signed 32-bit integers and increments position by 4n. + */ + i32_array(n: number): number[]; + /** * Reads 2 32-bit floating point numbers and increments position by 8. */ diff --git a/src/data_formats/parsing/quest/bin.test.ts b/src/data_formats/parsing/quest/bin.test.ts index 343ada7b..d6d974dd 100644 --- a/src/data_formats/parsing/quest/bin.test.ts +++ b/src/data_formats/parsing/quest/bin.test.ts @@ -1,15 +1,15 @@ import { readFileSync } from "fs"; import { Endianness } from "../.."; +import { prs_decompress } from "../../compression/prs/decompress"; import { ArrayBufferCursor } from "../../cursor/ArrayBufferCursor"; import { BufferCursor } from "../../cursor/BufferCursor"; import { parse_bin, write_bin } from "./bin"; -import { prs_decompress } from "../../compression/prs/decompress"; /** * Parse a file, convert the resulting structure to BIN again and check whether the end result is equal to the original. */ -test("parse_bin and write_bin", () => { - const orig_buffer = readFileSync("test/resources/quest118_e.bin"); +function test_quest(path: string) { + const orig_buffer = readFileSync(path); const orig_bin = prs_decompress(new BufferCursor(orig_buffer, Endianness.Little)); const test_buffer = write_bin(parse_bin(orig_bin)); const test_bin = new ArrayBufferCursor(test_buffer, Endianness.Little); @@ -33,4 +33,12 @@ test("parse_bin and write_bin", () => { } expect(matching_bytes).toBe(orig_bin.size); +} + +test("parse_bin and write_bin with quest118_e.bin", () => { + test_quest("test/resources/quest118_e.bin"); +}); + +test("parse_bin and write_bin with quest27_e.bin", () => { + test_quest("test/resources/quest27_e.bin"); }); diff --git a/src/data_formats/parsing/quest/bin.ts b/src/data_formats/parsing/quest/bin.ts index b4c00504..aea8ab95 100644 --- a/src/data_formats/parsing/quest/bin.ts +++ b/src/data_formats/parsing/quest/bin.ts @@ -1,10 +1,12 @@ import Logger from "js-logger"; import { Endianness } from "../.."; +import { ArrayBufferCursor } from "../../cursor/ArrayBufferCursor"; import { Cursor } from "../../cursor/Cursor"; import { ResizableBufferCursor } from "../../cursor/ResizableBufferCursor"; import { WritableCursor } from "../../cursor/WritableCursor"; import { ResizableBuffer } from "../../ResizableBuffer"; import { Opcode, OPCODES, Type } from "./opcodes"; +import { number } from "prop-types"; export * from "./opcodes"; @@ -17,32 +19,9 @@ export class BinFile { readonly quest_name: string, readonly short_description: string, readonly long_description: string, - /** - * Map of labels to instruction indices. - */ - readonly labels: Map, - readonly instructions: Instruction[], + readonly object_code: Segment[], readonly shop_items: number[] ) {} - - get_label_instructions(label: number): Instruction[] | undefined { - const index = this.labels.get(label); - - if (index == null || index > this.instructions.length) return undefined; - - const instructions: Instruction[] = []; - - for (let i = index; i < this.instructions.length; i++) { - const instruction = this.instructions[i]; - instructions.push(instruction); - - if (instruction.opcode === Opcode.ret) { - break; - } - } - - return instructions; - } } /** @@ -68,13 +47,13 @@ export class Instruction { const arg = args[i]; this.param_to_args[i] = []; - if (arg == null) { + if (arg == undefined) { break; } switch (type) { case Type.U8Var: - case Type.U16Var: + case Type.ILabelVar: this.arg_size++; for (let j = i; j < args.length; j++) { @@ -90,10 +69,32 @@ export class Instruction { } } - this.size = opcode.code_size + this.arg_size; + this.size = opcode.size + this.arg_size; } } +export enum SegmentType { + Instructions, + Data, +} + +/** + * Segment of object code. + */ +export type Segment = InstructionSegment | DataSegment; + +export type InstructionSegment = { + type: SegmentType.Instructions; + label: number; + instructions: Instruction[]; +}; + +export type DataSegment = { + type: SegmentType.Data; + label: number; + data: ArrayBuffer; +}; + /** * Instruction argument. */ @@ -121,55 +122,68 @@ export function parse_bin(cursor: Cursor, lenient: boolean = false): BinFile { const shop_items = cursor.u32_array(932); + const label_offset_count = Math.floor((cursor.size - label_offset_table_offset) / 4); + cursor.seek_start(label_offset_table_offset); + + const label_offsets = cursor.i32_array(label_offset_count); + const offset_to_labels = new Map(); + + for (let label = 0; label < label_offsets.length; label++) { + const offset = label_offsets[label]; + + if (offset !== -1) { + let labels = offset_to_labels.get(offset); + + if (!labels) { + labels = []; + offset_to_labels.set(offset, labels); + } + + labels.push(label); + } + } + const object_code = cursor .seek_start(object_code_offset) .take(label_offset_table_offset - object_code_offset); - const instructions = parse_object_code(object_code, lenient); + const segments = parse_object_code(object_code, offset_to_labels, lenient); - let instruction_size = 0; + // Sanity check parsed object code. + let segments_size = 0; - for (const instruction of instructions) { - instruction_size += instruction.size; + for (const segment of segments) { + if (segment.type === SegmentType.Instructions) { + for (const instruction of segment.instructions) { + segments_size += instruction.size; + } + } else { + segments_size += segment.data.byteLength; + } } - if (object_code.size !== instruction_size) { - throw new Error( - `Expected to parse ${object_code.size} bytes but parsed ${instruction_size} instead.` - ); + if (object_code.size !== segments_size) { + const message = `Expected to parse ${object_code.size} bytes but parsed ${segments_size} instead.`; + + if (lenient) { + logger.error(message); + } else { + throw new Error(message); + } } - const label_offset_count = Math.floor((cursor.size - label_offset_table_offset) / 4); - cursor.seek_start(label_offset_table_offset); - - const labels = new Map(); - - for (let label = 0; label < label_offset_count; ++label) { - const offset = cursor.i32(); - - if (offset >= 0) { - let size = 0; - let index = 0; - - for (const instruction of instructions) { - if (offset === size) { - break; - } else if (offset < size) { - logger.warn( - `Label ${label} offset ${offset} does not point to the start of an instruction.` - ); - break; + // Verify labels. + outer: for (let label = 0; label < label_offset_count; label++) { + if (label_offsets[label] !== -1) { + for (const segment of segments) { + if (segment.label === label) { + continue outer; } - - size += instruction.size; - index++; } - if (index >= instructions.length) { - logger.warn(`Label ${label} offset ${offset} is too large.`); - } else { - labels.set(label, index); - } + logger.warn( + `Label ${label} with offset ${label_offsets[label]} does not point to anything.` + ); } } @@ -179,22 +193,14 @@ export function parse_bin(cursor: Cursor, lenient: boolean = false): BinFile { quest_name, short_description, long_description, - labels, - instructions, + segments, shop_items ); } export function write_bin(bin: BinFile): ArrayBuffer { - const labels: number[] = [...bin.labels.entries()].reduce((ls, [l, i]) => { - ls[l] = i; - return ls; - }, new Array()); - const object_code_offset = 4652; - const buffer = new ResizableBuffer( - object_code_offset + 10 * bin.instructions.length + 4 * labels.length - ); + const buffer = new ResizableBuffer(object_code_offset + 100 * bin.object_code.length); const cursor = new ResizableBufferCursor(buffer, Endianness.Little); cursor.write_u32(object_code_offset); @@ -222,26 +228,14 @@ export function write_bin(bin: BinFile): ArrayBuffer { cursor.write_u8(0); } - const object_code_size = write_object_code(cursor, bin.instructions); + const { size: object_code_size, label_offsets } = write_object_code(cursor, bin.object_code); - for (let label = 0; label < labels.length; label++) { - const index = labels[label]; + for (let label = 0; label < label_offsets.length; label++) { + const offset = label_offsets[label]; - if (index == null) { + if (offset == undefined) { cursor.write_i32(-1); } else { - let offset = 0; - - for (let j = 0; j < bin.instructions.length; j++) { - const instruction = bin.instructions[j]; - - if (j === index) { - break; - } else { - offset += instruction.size; - } - } - cursor.write_i32(offset); } } @@ -255,11 +249,83 @@ export function write_bin(bin: BinFile): ArrayBuffer { return cursor.seek_start(0).array_buffer(file_size); } -function parse_object_code(cursor: Cursor, lenient: boolean): Instruction[] { - const instructions: Instruction[] = []; +function parse_object_code( + cursor: Cursor, + offset_to_labels: Map, + lenient: boolean +): Segment[] { + const segments: Segment[] = []; + const data_labels = new Set(); try { + let instructions: Instruction[] | undefined; + while (cursor.bytes_left) { + // See if this instruction and the ones following belong to a new label. + const offset = cursor.position; + const labels: number[] | undefined = offset_to_labels.get(offset); + + // Check whether we've encountered a data segment. + // If a single label that points to this segment is referred to from a data context we assume the segment is a data segment. + if (labels && labels.some(label => data_labels.has(label))) { + for (const [label_offset, labels] of offset_to_labels.entries()) { + if (label_offset > offset) { + // We create empty segments for all but the last label. + // The data will be in the last label's segment. + for (let i = 0; i < labels.length - 1; i++) { + segments.push({ + type: SegmentType.Data, + label: labels[i], + data: new ArrayBuffer(0), + }); + } + + segments.push({ + type: SegmentType.Data, + label: labels[labels.length - 1], + data: cursor.array_buffer(label_offset - offset), + }); + + break; + } + } + + instructions = undefined; + continue; + } + + // Parse as instruction. + if (labels == undefined) { + if (instructions == undefined) { + logger.warn(`Unlabelled instructions at ${offset}.`); + + instructions = []; + + segments.push({ + type: SegmentType.Instructions, + label: -1, + instructions, + }); + } + } else { + for (let i = 0; i < labels.length - 1; i++) { + segments.push({ + type: SegmentType.Instructions, + label: labels[i], + instructions: [], + }); + } + + instructions = []; + + segments.push({ + type: SegmentType.Instructions, + label: labels[labels.length - 1], + instructions, + }); + } + + // Parse the opcode. const main_opcode = cursor.u8(); let opcode_index; @@ -275,15 +341,30 @@ function parse_object_code(cursor: Cursor, lenient: boolean): Instruction[] { let opcode = OPCODES[opcode_index]; + // Parse the arguments. try { const args = parse_instruction_arguments(cursor, opcode); instructions.push(new Instruction(opcode, args)); + + // Check whether we can deduce a data segment label. + for (let i = 0; i < opcode.params.length; i++) { + const param_type = opcode.params[i].type; + const arg_value = args[i].value; + + if (param_type === Type.DLabel) { + data_labels.add(arg_value); + } + } } catch (e) { - logger.warn( - `Exception occurred while parsing arguments for instruction ${opcode.mnemonic}.`, - e - ); - instructions.push(new Instruction(opcode, [])); + if (lenient) { + logger.error( + `Exception occurred while parsing arguments for instruction ${opcode.mnemonic}.`, + e + ); + instructions.push(new Instruction(opcode, [])); + } else { + throw e; + } } } } catch (e) { @@ -294,7 +375,7 @@ function parse_object_code(cursor: Cursor, lenient: boolean): Instruction[] { } } - return instructions; + return segments; } function parse_instruction_arguments(cursor: Cursor, opcode: Opcode): Arg[] { @@ -320,13 +401,19 @@ function parse_instruction_arguments(cursor: Cursor, opcode: Opcode): Arg[] { case Type.Register: args.push({ value: cursor.u8(), size: 1 }); break; + case Type.ILabel: + args.push({ value: cursor.u16(), size: 2 }); + break; + case Type.DLabel: + args.push({ value: cursor.u16(), size: 2 }); + break; case Type.U8Var: { const arg_size = cursor.u8(); args.push(...cursor.u8_array(arg_size).map(value => ({ value, size: 1 }))); } break; - case Type.U16Var: + case Type.ILabelVar: { const arg_size = cursor.u8(); args.push(...cursor.u16_array(arg_size).map(value => ({ value, size: 2 }))); @@ -351,60 +438,84 @@ function parse_instruction_arguments(cursor: Cursor, opcode: Opcode): Arg[] { return args; } -function write_object_code(cursor: WritableCursor, instructions: Instruction[]): number { +function write_object_code( + cursor: WritableCursor, + segments: Segment[] +): { size: number; label_offsets: number[] } { const start_pos = cursor.position; + // Keep track of label offsets. + const label_offsets: number[] = []; - for (const instruction of instructions) { - const opcode = instruction.opcode; - - if (opcode.code_size === 2) { - cursor.write_u8(opcode.code >>> 8); + // Write instructions first. + for (const segment of segments) { + if (segment.label !== -1) { + label_offsets[segment.label] = cursor.position - start_pos; } - cursor.write_u8(opcode.code & 0xff); + if (segment.type === SegmentType.Instructions) { + for (const instruction of segment.instructions) { + const opcode = instruction.opcode; - for (let i = 0; i < opcode.params.length; i++) { - const param = opcode.params[i]; - const args = instruction.param_to_args[i]; - const [arg] = args; + if (opcode.size === 2) { + cursor.write_u8(opcode.code >>> 8); + } - switch (param.type) { - case Type.U8: - cursor.write_u8(arg.value); - break; - case Type.U16: - cursor.write_u16(arg.value); - break; - case Type.U32: - cursor.write_u32(arg.value); - break; - case Type.I32: - cursor.write_i32(arg.value); - break; - case Type.F32: - cursor.write_f32(arg.value); - break; - case Type.Register: - cursor.write_u8(arg.value); - break; - case Type.U8Var: - cursor.write_u8(args.length); - cursor.write_u8_array(args.map(arg => arg.value)); - break; - case Type.U16Var: - cursor.write_u8(args.length); - cursor.write_u16_array(args.map(arg => arg.value)); - break; - case Type.String: - cursor.write_string_utf16(arg.value, arg.size); - break; - default: - throw new Error( - `Parameter type ${Type[param.type]} (${param.type}) not implemented.` - ); + cursor.write_u8(opcode.code & 0xff); + + for (let i = 0; i < opcode.params.length; i++) { + const param = opcode.params[i]; + const args = instruction.param_to_args[i]; + const [arg] = args; + + switch (param.type) { + case Type.U8: + cursor.write_u8(arg.value); + break; + case Type.U16: + cursor.write_u16(arg.value); + break; + case Type.U32: + cursor.write_u32(arg.value); + break; + case Type.I32: + cursor.write_i32(arg.value); + break; + case Type.F32: + cursor.write_f32(arg.value); + break; + case Type.Register: + cursor.write_u8(arg.value); + break; + case Type.ILabel: + cursor.write_u16(arg.value); + break; + case Type.DLabel: + cursor.write_u16(arg.value); + break; + case Type.U8Var: + cursor.write_u8(args.length); + cursor.write_u8_array(args.map(arg => arg.value)); + break; + case Type.ILabelVar: + cursor.write_u8(args.length); + cursor.write_u16_array(args.map(arg => arg.value)); + break; + case Type.String: + cursor.write_string_utf16(arg.value, arg.size); + break; + default: + throw new Error( + `Parameter type ${Type[param.type]} (${ + param.type + }) not implemented.` + ); + } + } } + } else { + cursor.write_cursor(new ArrayBufferCursor(segment.data, cursor.endianness)); } } - return cursor.position - start_pos; + return { size: cursor.position - start_pos, label_offsets }; } diff --git a/src/data_formats/parsing/quest/index.test.ts b/src/data_formats/parsing/quest/index.test.ts index c221a84a..b4bf7739 100644 --- a/src/data_formats/parsing/quest/index.test.ts +++ b/src/data_formats/parsing/quest/index.test.ts @@ -90,8 +90,12 @@ function roundtrip_test(path: string, file_name: string, contents: Buffer): void expect(test_area_variant.id).toBe(orig_area_variant.id); } - expect(test_quest.instructions.length).toBe(orig_quest.instructions.length); - expect(test_quest.labels.size).toBe(orig_quest.labels.size); + expect(test_quest.object_code.length).toBe(orig_quest.object_code.length); + + for (let i = 0; i < orig_quest.object_code.length; i++) { + expect(test_quest.object_code[i].type).toBe(orig_quest.object_code[i].type); + expect(test_quest.object_code[i].label).toBe(orig_quest.object_code[i].label); + } }); } diff --git a/src/data_formats/parsing/quest/index.ts b/src/data_formats/parsing/quest/index.ts index 1b582196..79673204 100644 --- a/src/data_formats/parsing/quest/index.ts +++ b/src/data_formats/parsing/quest/index.ts @@ -1,6 +1,14 @@ import Logger from "js-logger"; import { Endianness } from "../.."; -import { AreaVariant, NpcType, ObjectType, Quest, QuestNpc, QuestObject } from "../../../domain"; +import { + AreaVariant, + Episode, + NpcType, + ObjectType, + Quest, + QuestNpc, + QuestObject, +} from "../../../domain"; import { area_store } from "../../../stores/AreaStore"; import { prs_compress } from "../../compression/prs/compress"; import { prs_decompress } from "../../compression/prs/decompress"; @@ -8,17 +16,17 @@ import { ArrayBufferCursor } from "../../cursor/ArrayBufferCursor"; import { Cursor } from "../../cursor/Cursor"; import { ResizableBufferCursor } from "../../cursor/ResizableBufferCursor"; import { Vec3 } from "../../vector"; -import { BinFile, Instruction, parse_bin, write_bin } from "./bin"; +import { BinFile, Instruction, InstructionSegment, parse_bin, SegmentType, write_bin } from "./bin"; import { DatFile, DatNpc, DatObject, parse_dat, write_dat } from "./dat"; -import { parse_qst, QstContainedFile, write_qst } from "./qst"; import { Opcode } from "./opcodes"; +import { parse_qst, QstContainedFile, write_qst } from "./qst"; const logger = Logger.get("data_formats/parsing/quest"); /** * High level parsing function that delegates to lower level parsing functions. * - * Always delegates to parseQst at the moment. + * Always delegates to parse_qst at the moment. */ export function parse_quest(cursor: Cursor, lenient: boolean = false): Quest | undefined { const qst = parse_qst(cursor); @@ -40,8 +48,6 @@ export function parse_quest(cursor: Cursor, lenient: boolean = false): Quest | u } } - // TODO: deal with missing/multiple DAT or BIN file. - if (!dat_file) { logger.error("File contains no DAT file."); return; @@ -63,21 +69,24 @@ export function parse_quest(cursor: Cursor, lenient: boolean = false): Quest | u let episode = 1; let area_variants: AreaVariant[] = []; - if (bin.labels.size) { - if (bin.labels.has(0)) { - const label_0_instructions = bin.get_label_instructions(0); + if (bin.object_code.length) { + let label_0_segment: InstructionSegment | undefined; - if (label_0_instructions) { - episode = get_episode(label_0_instructions); - area_variants = get_area_variants(dat, episode, label_0_instructions, lenient); - } else { - logger.warn(`Index ${bin.labels.get(0)} for label 0 is invalid.`); + for (const segment of bin.object_code) { + if (segment.type === SegmentType.Instructions && segment.label === 0) { + label_0_segment = segment; + break; } + } + + if (label_0_segment) { + episode = get_episode(label_0_segment.instructions); + area_variants = get_area_variants(dat, episode, label_0_segment.instructions, lenient); } else { - logger.warn(`Label 0 not found.`); + logger.warn(`No instruction for label 0 found.`); } } else { - logger.warn("File contains no labels."); + logger.warn("File contains no instruction labels."); } return new Quest( @@ -91,8 +100,7 @@ export function parse_quest(cursor: Cursor, lenient: boolean = false): Quest | u parse_obj_data(dat.objs), parse_npc_data(episode, dat.npcs), dat.unknowns, - bin.labels, - bin.instructions, + bin.object_code, bin.shop_items ); } @@ -110,8 +118,7 @@ export function write_quest_qst(quest: Quest, file_name: string): ArrayBuffer { quest.name, quest.short_description, quest.long_description, - quest.labels, - quest.instructions, + quest.object_code, quest.shop_items ) ); @@ -140,7 +147,7 @@ export function write_quest_qst(quest: Quest, file_name: string): ArrayBuffer { /** * Defaults to episode I. */ -function get_episode(func_0_instructions: Instruction[]): number { +function get_episode(func_0_instructions: Instruction[]): Episode { const set_episode = func_0_instructions.find( instruction => instruction.opcode === Opcode.set_episode ); @@ -149,11 +156,11 @@ function get_episode(func_0_instructions: Instruction[]): number { switch (set_episode.args[0].value) { default: case 0: - return 1; + return Episode.I; case 1: - return 2; + return Episode.II; case 2: - return 4; + return Episode.IV; } } else { logger.debug("Function 0 has no set_episode instruction."); diff --git a/src/data_formats/parsing/quest/opcodes.ts b/src/data_formats/parsing/quest/opcodes.ts index fcd6e64f..91330392 100644 --- a/src/data_formats/parsing/quest/opcodes.ts +++ b/src/data_formats/parsing/quest/opcodes.ts @@ -23,17 +23,25 @@ export enum Type { */ F32, /** - * Register reference + * Register reference. */ Register, /** - * Arbitrary amount of u8 arguments. + * Named reference to an instruction. + */ + ILabel, + /** + * Named reference to a data segment. + */ + DLabel, + /** + * Arbitrary amount of U8 arguments. */ U8Var, /** - * Arbitrary amount of u16 arguments. + * Arbitrary amount of ILabel arguments. */ - U16Var, + ILabelVar, /** * String of arbitrary size. */ @@ -53,7 +61,7 @@ export class Opcode { /** * Byte size of the instruction code, either 1 or 2. */ - readonly code_size: number; + readonly size: number; constructor( /** @@ -75,7 +83,7 @@ export class Opcode { */ readonly stack_params: Param[] ) { - this.code_size = this.code < 256 ? 1 : 2; + this.size = this.code < 256 ? 1 : 2; } static readonly nop = (OPCODES[0x00] = new Opcode(0x00, "nop", [], false, [])); @@ -87,7 +95,7 @@ export class Opcode { static readonly thread = (OPCODES[0x04] = new Opcode( 0x04, "thread", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -96,7 +104,7 @@ export class Opcode { static readonly va_call = (OPCODES[0x07] = new Opcode( 0x07, "va_call", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -291,182 +299,182 @@ export class Opcode { static readonly jmp = (OPCODES[0x28] = new Opcode( 0x28, "jmp", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); static readonly call = (OPCODES[0x29] = new Opcode( 0x29, "call", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); static readonly jmp_on = (OPCODES[0x2a] = new Opcode( 0x2a, "jmp_on", - [{ type: Type.U16 }, { type: Type.U8Var }], + [{ type: Type.ILabel }, { type: Type.U8Var }], false, [] )); static readonly jmp_off = (OPCODES[0x2b] = new Opcode( 0x2b, "jmp_off", - [{ type: Type.U16 }, { type: Type.U8Var }], + [{ type: Type.ILabel }, { type: Type.U8Var }], false, [] )); static readonly jmp_e = (OPCODES[0x2c] = new Opcode( 0x2c, "jmp_=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_e = (OPCODES[0x2d] = new Opcode( 0x2d, "jmpi_=", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly jmp_ne = (OPCODES[0x2e] = new Opcode( 0x2e, "jmp_!=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_ne = (OPCODES[0x2f] = new Opcode( 0x2f, "jmpi_!=", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly ujmp_g = (OPCODES[0x30] = new Opcode( 0x30, "ujmp_>", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly ujmpi_g = (OPCODES[0x31] = new Opcode( 0x31, "ujmpi_>", - [{ type: Type.Register }, { type: Type.U32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.U32 }, { type: Type.ILabel }], false, [] )); static readonly jmp_g = (OPCODES[0x32] = new Opcode( 0x32, "jmp_>", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_g = (OPCODES[0x33] = new Opcode( 0x33, "jmpi_>", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly ujmp_l = (OPCODES[0x34] = new Opcode( 0x34, "ujmp_<", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly ujmpi_l = (OPCODES[0x35] = new Opcode( 0x35, "ujmpi_<", - [{ type: Type.Register }, { type: Type.U32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.U32 }, { type: Type.ILabel }], false, [] )); static readonly jmp_l = (OPCODES[0x36] = new Opcode( 0x36, "jmp_<", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_l = (OPCODES[0x37] = new Opcode( 0x37, "jmpi_<", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly ujmp_ge = (OPCODES[0x38] = new Opcode( 0x38, "ujmp_>=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly ujmpi_ge = (OPCODES[0x39] = new Opcode( 0x39, "ujmpi_>=", - [{ type: Type.Register }, { type: Type.U32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.U32 }, { type: Type.ILabel }], false, [] )); static readonly jmp_ge = (OPCODES[0x3a] = new Opcode( 0x3a, "jmp_>=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_ge = (OPCODES[0x3b] = new Opcode( 0x3b, "jmpi_>=", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly ujmp_le = (OPCODES[0x3c] = new Opcode( 0x3c, "ujmp_<=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly ujmpi_le = (OPCODES[0x3d] = new Opcode( 0x3d, "ujmpi_<=", - [{ type: Type.Register }, { type: Type.U32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.U32 }, { type: Type.ILabel }], false, [] )); static readonly jmp_le = (OPCODES[0x3e] = new Opcode( 0x3e, "jmp_<=", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.ILabel }], false, [] )); static readonly jmpi_le = (OPCODES[0x3f] = new Opcode( 0x3f, "jmpi_<=", - [{ type: Type.Register }, { type: Type.I32 }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.I32 }, { type: Type.ILabel }], false, [] )); static readonly switch_jmp = (OPCODES[0x40] = new Opcode( 0x40, "switch_jmp", - [{ type: Type.Register }, { type: Type.U16Var }], + [{ type: Type.Register }, { type: Type.ILabelVar }], false, [] )); static readonly switch_call = (OPCODES[0x41] = new Opcode( 0x41, "switch_call", - [{ type: Type.Register }, { type: Type.U16Var }], + [{ type: Type.Register }, { type: Type.ILabelVar }], false, [] )); @@ -842,7 +850,7 @@ export class Opcode { "set_floor_handler", [], false, - [{ type: Type.U32 }, { type: Type.U16 }] + [{ type: Type.U32 }, { type: Type.ILabel }] )); static readonly clr_floor_handler = (OPCODES[0x96] = new Opcode( 0x96, @@ -876,14 +884,14 @@ export class Opcode { static readonly set_qt_failure = (OPCODES[0xa1] = new Opcode( 0xa1, "set_qt_failure", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); static readonly set_qt_success = (OPCODES[0xa2] = new Opcode( 0xa2, "set_qt_success", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -904,7 +912,7 @@ export class Opcode { static readonly set_qt_cancel = (OPCODES[0xa5] = new Opcode( 0xa5, "set_qt_cancel", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -937,7 +945,7 @@ export class Opcode { static readonly thread_stg = (OPCODES[0xb1] = new Opcode( 0xb1, "thread_stg", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -996,7 +1004,7 @@ export class Opcode { static readonly set_qt_exit = (OPCODES[0xba] = new Opcode( 0xba, "set_qt_exit", - [{ type: Type.U16 }], + [{ type: Type.ILabel }], false, [] )); @@ -1060,7 +1068,7 @@ export class Opcode { "set_quest_board_handler", [], false, - [{ type: Type.U32 }, { type: Type.U16 }, { type: Type.String }] + [{ type: Type.U32 }, { type: Type.ILabel }, { type: Type.String }] )); static readonly clear_quest_board_handler = (OPCODES[0xcc] = new Opcode( 0xcc, @@ -1755,7 +1763,7 @@ export class Opcode { static readonly get_npc_data = (OPCODES[0xf841] = new Opcode( 0xf841, "get_npc_data", - [{ type: Type.U16 }], + [{ type: Type.DLabel }], false, [] )); @@ -2819,10 +2827,11 @@ export class Opcode { { type: Type.U16 }, ] )); + // TODO: 3rd parameter is a string data reference. static readonly npc_action_string = (OPCODES[0xf8dc] = new Opcode( 0xf8dc, "npc_action_string", - [{ type: Type.Register }, { type: Type.Register }, { type: Type.U16 }], + [{ type: Type.Register }, { type: Type.Register }, { type: Type.DLabel }], false, [] )); @@ -2984,7 +2993,7 @@ export class Opcode { { type: Type.U32 }, { type: Type.U32 }, { type: Type.Register }, - { type: Type.U16 }, + { type: Type.DLabel }, ] )); static readonly particle2 = (OPCODES[0xf8f3] = new Opcode(0xf8f3, "particle2", [], false, [ @@ -3221,7 +3230,7 @@ export class Opcode { "set_palettex_callback", [], false, - [{ type: Type.Register }, { type: Type.U16 }] + [{ type: Type.Register }, { type: Type.ILabel }] )); static readonly activate_palettex = (OPCODES[0xf915] = new Opcode( 0xf915, @@ -3531,7 +3540,7 @@ export class Opcode { "prepare_statistic", [], false, - [{ type: Type.U32 }, { type: Type.U16 }, { type: Type.U16 }] + [{ type: Type.U32 }, { type: Type.ILabel }, { type: Type.ILabel }] )); static readonly keyword_detect = (OPCODES[0xf93f] = new Opcode( 0xf93f, diff --git a/src/domain/index.ts b/src/domain/index.ts index 42d0a8cf..a43bba43 100644 --- a/src/domain/index.ts +++ b/src/domain/index.ts @@ -1,11 +1,11 @@ import { action, computed, observable } from "mobx"; +import { Segment } from "../data_formats/parsing/quest/bin"; import { DatUnknown } from "../data_formats/parsing/quest/dat"; import { Vec3 } from "../data_formats/vector"; import { enum_values } from "../enums"; import { ItemType } from "./items"; import { NpcType } from "./NpcType"; import { ObjectType } from "./ObjectType"; -import { Instruction } from "../data_formats/parsing/quest/bin"; export * from "./items"; export * from "./NpcType"; @@ -152,8 +152,7 @@ export class Quest { * (Partial) raw DAT data that can't be parsed yet by Phantasmal. */ readonly dat_unknowns: DatUnknown[]; - readonly labels: Map; - readonly instructions: Instruction[]; + readonly object_code: Segment[]; readonly shop_items: number[]; constructor( @@ -167,8 +166,7 @@ export class Quest { objects: QuestObject[], npcs: QuestNpc[], dat_unknowns: DatUnknown[], - labels: Map, - instructions: Instruction[], + object_code: Segment[], shop_items: number[] ) { check_episode(episode); @@ -176,8 +174,7 @@ export class Quest { if (!objects || !(objects instanceof Array)) throw new Error("objs is required."); if (!npcs || !(npcs instanceof Array)) throw new Error("npcs is required."); if (!dat_unknowns) throw new Error("dat_unknowns is required."); - if (!labels) throw new Error("labels is required."); - if (!instructions) throw new Error("instructions is required."); + if (!object_code) throw new Error("object_code is required."); if (!shop_items) throw new Error("shop_items is required."); this.set_id(id); @@ -190,8 +187,7 @@ export class Quest { this.objects = objects; this.npcs = npcs; this.dat_unknowns = dat_unknowns; - this.labels = labels; - this.instructions = instructions; + this.object_code = object_code; this.shop_items = shop_items; } } diff --git a/src/scripting/Assembler.ts b/src/scripting/AssemblyAnalyser.ts similarity index 61% rename from src/scripting/Assembler.ts rename to src/scripting/AssemblyAnalyser.ts index ca12a68d..5b6e7deb 100644 --- a/src/scripting/Assembler.ts +++ b/src/scripting/AssemblyAnalyser.ts @@ -1,26 +1,24 @@ import { observable } from "mobx"; import { editor } from "monaco-editor"; import AssemblyWorker from "worker-loader!./assembly_worker"; -import { Instruction } from "../data_formats/parsing/quest/bin"; +import { Segment } from "../data_formats/parsing/quest/bin"; import { AssemblyChangeInput, NewAssemblyInput, ScriptWorkerOutput } from "./assembler_messages"; import { AssemblyError } from "./assembly"; import { disassemble } from "./disassembly"; -export class Assembler { +export class AssemblyAnalyser { @observable errors: AssemblyError[] = []; private worker = new AssemblyWorker(); - private instructions: Instruction[] = []; - private labels: Map = new Map(); + private object_code: Segment[] = []; constructor() { this.worker.onmessage = this.process_worker_message; } - disassemble(instructions: Instruction[], labels: Map): string[] { - this.instructions = instructions; - this.labels = labels; - const assembly = disassemble(instructions, labels); + disassemble(object_code: Segment[]): string[] { + this.object_code = object_code; + const assembly = disassemble(object_code); const message: NewAssemblyInput = { type: "new_assembly_input", assembly }; this.worker.postMessage(message); return assembly; @@ -38,15 +36,8 @@ export class Assembler { private process_worker_message = (e: MessageEvent): void => { const message: ScriptWorkerOutput = e.data; - if (message.type === "new_errors_output") { - this.instructions.splice(0, this.instructions.length, ...message.instructions); - - this.labels.clear(); - - for (const [l, i] of message.labels) { - this.labels.set(l, i); - } - + if (message.type === "new_object_code_output") { + this.object_code.splice(0, this.object_code.length, ...message.object_code); this.errors = message.errors; } }; diff --git a/src/scripting/assembler_messages.ts b/src/scripting/assembler_messages.ts index 6f103737..61f3b6c9 100644 --- a/src/scripting/assembler_messages.ts +++ b/src/scripting/assembler_messages.ts @@ -1,5 +1,5 @@ import { editor } from "monaco-editor"; -import { Instruction } from "../data_formats/parsing/quest/bin"; +import { Segment } from "../data_formats/parsing/quest/bin"; import { AssemblyError } from "./assembly"; export type ScriptWorkerInput = NewAssemblyInput | AssemblyChangeInput; @@ -14,11 +14,10 @@ export type AssemblyChangeInput = { readonly changes: editor.IModelContentChange[]; }; -export type ScriptWorkerOutput = NewErrorsOutput; +export type ScriptWorkerOutput = NewObjectCodeOutput; -export type NewErrorsOutput = { - readonly type: "new_errors_output"; - readonly instructions: Instruction[]; - readonly labels: Map; +export type NewObjectCodeOutput = { + readonly type: "new_object_code_output"; + readonly object_code: Segment[]; readonly errors: AssemblyError[]; }; diff --git a/src/scripting/assembly.test.ts b/src/scripting/assembly.test.ts index b23fee3e..ecadd542 100644 --- a/src/scripting/assembly.test.ts +++ b/src/scripting/assembly.test.ts @@ -1,8 +1,8 @@ +import { InstructionSegment, Opcode, SegmentType } from "../data_formats/parsing/quest/bin"; import { assemble } from "./assembly"; -import { Opcode } from "../data_formats/parsing/quest/bin"; test("", () => { - const { instructions, labels, errors } = assemble( + const { object_code, errors } = assemble( ` 0: set_episode 0 bb_map_designate 1, 2, 3, 4 @@ -17,46 +17,59 @@ test("", () => { expect(errors).toEqual([]); - expect(instructions.length).toBe(13); + expect(object_code.length).toBe(3); - expect(instructions[0].opcode).toBe(Opcode.set_episode); - expect(instructions[0].args).toEqual([{ value: 0, size: 4 }]); + const segment_0 = object_code[0] as InstructionSegment; - expect(instructions[1].opcode).toBe(Opcode.bb_map_designate); - expect(instructions[1].args).toEqual([ + expect(segment_0.type).toBe(SegmentType.Instructions); + expect(segment_0.instructions.length).toBe(9); + + expect(segment_0.instructions[0].opcode).toBe(Opcode.set_episode); + expect(segment_0.instructions[0].args).toEqual([{ value: 0, size: 4 }]); + + expect(segment_0.instructions[1].opcode).toBe(Opcode.bb_map_designate); + expect(segment_0.instructions[1].args).toEqual([ { value: 1, size: 1 }, { value: 2, size: 2 }, { value: 3, size: 1 }, { value: 4, size: 1 }, ]); - expect(instructions[2].opcode).toBe(Opcode.arg_pushl); - expect(instructions[2].args).toEqual([{ value: 0, size: 4 }]); - expect(instructions[3].opcode).toBe(Opcode.arg_pushw); - expect(instructions[3].args).toEqual([{ value: 150, size: 2 }]); - expect(instructions[4].opcode).toBe(Opcode.set_floor_handler); - expect(instructions[4].args).toEqual([]); + expect(segment_0.instructions[2].opcode).toBe(Opcode.arg_pushl); + expect(segment_0.instructions[2].args).toEqual([{ value: 0, size: 4 }]); + expect(segment_0.instructions[3].opcode).toBe(Opcode.arg_pushw); + expect(segment_0.instructions[3].args).toEqual([{ value: 150, size: 2 }]); + expect(segment_0.instructions[4].opcode).toBe(Opcode.set_floor_handler); + expect(segment_0.instructions[4].args).toEqual([]); - expect(instructions[5].opcode).toBe(Opcode.arg_pushl); - expect(instructions[5].args).toEqual([{ value: 1, size: 4 }]); - expect(instructions[6].opcode).toBe(Opcode.arg_pushw); - expect(instructions[6].args).toEqual([{ value: 151, size: 2 }]); - expect(instructions[7].opcode).toBe(Opcode.set_floor_handler); - expect(instructions[7].args).toEqual([]); + expect(segment_0.instructions[5].opcode).toBe(Opcode.arg_pushl); + expect(segment_0.instructions[5].args).toEqual([{ value: 1, size: 4 }]); + expect(segment_0.instructions[6].opcode).toBe(Opcode.arg_pushw); + expect(segment_0.instructions[6].args).toEqual([{ value: 151, size: 2 }]); + expect(segment_0.instructions[7].opcode).toBe(Opcode.set_floor_handler); + expect(segment_0.instructions[7].args).toEqual([]); - expect(instructions[8].opcode).toBe(Opcode.ret); - expect(instructions[8].args).toEqual([]); + expect(segment_0.instructions[8].opcode).toBe(Opcode.ret); + expect(segment_0.instructions[8].args).toEqual([]); - expect(instructions[9].opcode).toBe(Opcode.arg_pushl); - expect(instructions[9].args).toEqual([{ value: 1, size: 4 }]); - expect(instructions[10].opcode).toBe(Opcode.set_mainwarp); - expect(instructions[10].args).toEqual([]); + const segment_1 = object_code[1] as InstructionSegment; - expect(instructions[11].opcode).toBe(Opcode.ret); - expect(instructions[11].args).toEqual([]); + expect(segment_1.type).toBe(SegmentType.Instructions); + expect(segment_1.instructions.length).toBe(3); - expect(instructions[12].opcode).toBe(Opcode.ret); - expect(instructions[12].args).toEqual([]); + expect(segment_1.instructions[0].opcode).toBe(Opcode.arg_pushl); + expect(segment_1.instructions[0].args).toEqual([{ value: 1, size: 4 }]); + expect(segment_1.instructions[1].opcode).toBe(Opcode.set_mainwarp); + expect(segment_1.instructions[1].args).toEqual([]); - expect(labels).toEqual(new Map([[0, 0], [150, 9], [151, 12]])); + expect(segment_1.instructions[2].opcode).toBe(Opcode.ret); + expect(segment_1.instructions[2].args).toEqual([]); + + const segment_2 = object_code[2] as InstructionSegment; + + expect(segment_2.type).toBe(SegmentType.Instructions); + expect(segment_2.instructions.length).toBe(1); + + expect(segment_2.instructions[0].opcode).toBe(Opcode.ret); + expect(segment_2.instructions[0].args).toEqual([]); }); diff --git a/src/scripting/assembly.ts b/src/scripting/assembly.ts index 5779e9b5..54db8333 100644 --- a/src/scripting/assembly.ts +++ b/src/scripting/assembly.ts @@ -1,10 +1,13 @@ import { - Instruction, - OPCODES_BY_MNEMONIC, Arg, - Type, + Instruction, + InstructionSegment, Opcode, + OPCODES_BY_MNEMONIC, Param, + Segment, + SegmentType, + Type, } from "../data_formats/parsing/quest/bin"; export type AssemblyError = { @@ -18,179 +21,10 @@ export function assemble( assembly: string[], manual_stack: boolean = false ): { - instructions: Instruction[]; - labels: Map; + object_code: Segment[]; errors: AssemblyError[]; } { - const errors: AssemblyError[] = []; - const instructions: Instruction[] = []; - const labels = new Map(); - - let line_no = 1; - - for (const line of assembly) { - const match = line.match( - /^(?\s*)(?[^\s]+?:)?(?\s*)(?[a-z][a-z0-9_=<>!]*)?(?.*)$/ - ); - - if (!match || !match.groups || (match.groups.lbl == null && match.groups.op == null)) { - const left_trimmed = line.trimLeft(); - const trimmed = left_trimmed.trimRight(); - - if (trimmed.length) { - errors.push({ - line_no, - col: 1 + line.length - left_trimmed.length, - length: trimmed.length, - message: "Expected label or instruction.", - }); - } - } else { - const { lbl_ws, lbl, op_ws, op, args } = match.groups; - - if (lbl != null) { - const label = parseInt(lbl.slice(0, -1), 10); - - if (!isFinite(label) || !/^\d+:$/.test(lbl)) { - errors.push({ - line_no, - col: 1 + lbl_ws.length, - length: lbl.length, - message: "Invalid label name.", - }); - } else if (labels.has(label)) { - errors.push({ - line_no, - col: 1 + lbl_ws.length, - length: lbl.length - 1, - message: "Duplicate label.", - }); - } else { - labels.set(label, instructions.length); - } - } - - if (op != null) { - const opcode = OPCODES_BY_MNEMONIC.get(op); - - if (!opcode) { - errors.push({ - line_no, - col: 1 + lbl_ws.length + (lbl ? lbl.length : 0) + op_ws.length, - length: op.length, - message: "Unknown instruction.", - }); - } else { - const args_col = - 1 + - lbl_ws.length + - (lbl ? lbl.length : 0) + - op_ws.length + - (op ? op.length : 0); - - const arg_tokens: ArgToken[] = []; - const args_tokenization_ok = tokenize_args(args, args_col, arg_tokens); - - const ins_args: Arg[] = []; - - if (!args_tokenization_ok) { - const left_trimmed = args.trimLeft(); - const trimmed = args.trimRight(); - - errors.push({ - line_no, - col: args_col + args.length - left_trimmed.length, - length: trimmed.length, - message: "Instruction arguments expected.", - }); - } else { - const varargs = - opcode.params.findIndex( - p => p.type === Type.U8Var || p.type === Type.U16Var - ) !== -1; - - const param_count = - opcode.params.length + (manual_stack ? 0 : opcode.stack_params.length); - - if ( - varargs - ? arg_tokens.length < param_count - : arg_tokens.length !== param_count - ) { - const left_trimmed = line.trimLeft(); - errors.push({ - line_no, - col: 1 + line.length - left_trimmed.length, - length: left_trimmed.length, - message: `Expected${ - varargs ? " at least" : "" - } ${param_count} argument${param_count === 1 ? "" : "s"}, got ${ - arg_tokens.length - }.`, - }); - } else if (varargs || arg_tokens.length === opcode.params.length) { - parse_args(opcode.params, arg_tokens, ins_args, line_no, errors); - } else { - const stack_args: Arg[] = []; - parse_args( - opcode.stack_params, - arg_tokens, - stack_args, - line_no, - errors - ); - - for (let i = 0; i < opcode.stack_params.length; i++) { - const param = opcode.stack_params[i]; - const arg = stack_args[i]; - const col = arg_tokens[i].col; - const length = arg_tokens[i].arg.length; - - if (arg == null) { - continue; - } - - switch (param.type) { - case Type.U8: - case Type.Register: - instructions.push(new Instruction(Opcode.arg_pushb, [arg])); - break; - case Type.U16: - instructions.push(new Instruction(Opcode.arg_pushw, [arg])); - break; - case Type.U32: - case Type.I32: - case Type.F32: - instructions.push(new Instruction(Opcode.arg_pushl, [arg])); - break; - case Type.String: - instructions.push(new Instruction(Opcode.arg_pushs, [arg])); - break; - default: - errors.push({ - line_no, - col, - length, - message: `Type ${Type[param.type]} not implemented.`, - }); - } - } - } - } - - instructions.push(new Instruction(opcode, ins_args)); - } - } - } - - line_no++; - } - - return { - instructions, - labels, - errors, - }; + return new Assembler(assembly, manual_stack).assemble(); } type ArgToken = { @@ -198,250 +32,410 @@ type ArgToken = { arg: string; }; -function tokenize_args(arg_str: string, col: number, args: ArgToken[]): boolean { - if (arg_str.trim().length === 0) { - return true; +class Assembler { + private line_no!: number; + private object_code!: Segment[]; + private errors!: AssemblyError[]; + // Encountered labels. + private labels!: Set; + + constructor(private assembly: string[], private manual_stack: boolean) {} + + assemble(): { + object_code: Segment[]; + errors: AssemblyError[]; + } { + this.line_no = 1; + this.object_code = []; + this.errors = []; + this.labels = new Set(); + + for (const line of this.assembly) { + const match = line.match( + /^(?\s*)(?[^\s]+?:)?(?\s*)(?[a-z][a-z0-9_=<>!]*)?(?.*)$/ + ); + + if ( + !match || + !match.groups || + (match.groups.lbl == undefined && match.groups.op == undefined) + ) { + const left_trimmed = line.trimLeft(); + const trimmed = left_trimmed.trimRight(); + + if (trimmed.length) { + this.add_error({ + col: 1 + line.length - left_trimmed.length, + length: trimmed.length, + message: "Expected label or instruction.", + }); + } + } else { + const { lbl_ws, lbl, op_ws, op, args } = match.groups; + + if (lbl != undefined) { + this.parse_label(lbl, lbl_ws); + } + + if (op != undefined) { + this.parse_instruction( + 1 + lbl_ws.length + (lbl ? lbl.length : 0) + op_ws.length, + op, + args + ); + } + } + + this.line_no++; + } + + return { + object_code: this.object_code, + errors: this.errors, + }; } - let match: RegExpMatchArray | null; + private add_instruction(opcode: Opcode, args: Arg[]): void { + const { instructions } = this.object_code[ + this.object_code.length - 1 + ] as InstructionSegment; - if (args.length === 0) { - match = arg_str.match(/^(?\s+)(?"([^"\\]|\\.)*"|[^\s,]+)\s*/); - } else { - match = arg_str.match(/^(?,\s*)(?"([^"\\]|\\.)*"|[^\s,]+)\s*/); + instructions.push(new Instruction(opcode, args)); } - if (!match || !match.groups) { - return false; - } else { - const { arg_ws, arg } = match.groups; - args.push({ - col: col + arg_ws.length, - arg, + private add_error({ + col, + length, + message, + }: { + col: number; + length: number; + message: string; + }): void { + this.errors.push({ + line_no: this.line_no, + col, + length, + message, }); - - return tokenize_args(arg_str.slice(match[0].length), col + match[0].length, args); } -} -function parse_args( - params: Param[], - arg_tokens: ArgToken[], - args: Arg[], - line: number, - errors: AssemblyError[] -): void { - for (let i = 0; i < params.length; i++) { - const param = params[i]; - const arg_token = arg_tokens[i]; - const arg_str = arg_token.arg; - const col = arg_token.col; - const length = arg_str.length; + private parse_label(lbl: string, lbl_ws: string): void { + const label = parseInt(lbl.slice(0, -1), 10); - switch (param.type) { - case Type.U8: - parse_uint(arg_str, 1, args, line, col, errors); - break; - case Type.U16: - parse_uint(arg_str, 2, args, line, col, errors); - break; - case Type.U32: - parse_uint(arg_str, 4, args, line, col, errors); - break; - case Type.I32: - parse_sint(arg_str, 4, args, line, col, errors); - break; - case Type.F32: - parse_float(arg_str, args, line, col, errors); - break; - case Type.Register: - parse_register(arg_str, args, line, col, errors); - break; - case Type.String: - parse_string(arg_str, args, line, col, errors); - break; - case Type.U8Var: - parse_uint_varargs(arg_tokens, i, 1, args, line, errors); - return; - case Type.U16Var: - parse_uint_varargs(arg_tokens, i, 2, args, line, errors); - return; - default: - errors.push({ - line_no: line, - col, - length, - message: `Type ${Type[param.type]} not implemented.`, + if (!isFinite(label) || !/^\d+:$/.test(lbl)) { + this.add_error({ + col: 1 + lbl_ws.length, + length: lbl.length, + message: "Invalid label name.", + }); + } else { + if (this.labels.has(label)) { + this.add_error({ + col: 1 + lbl_ws.length, + length: lbl.length - 1, + message: "Duplicate label.", }); + } + + this.object_code.push({ + type: SegmentType.Instructions, + label, + instructions: [], + }); + } + } + + private parse_instruction(col: number, op: string, args: string): void { + const opcode = OPCODES_BY_MNEMONIC.get(op); + + if (!opcode) { + this.add_error({ + col, + length: op.length, + message: "Unknown instruction.", + }); + } else { + const args_col = col + (op ? op.length : 0); + + const arg_tokens: ArgToken[] = []; + const args_tokenization_ok = this.tokenize_args(args, args_col, arg_tokens); + + const ins_args: Arg[] = []; + + if (!args_tokenization_ok) { + const left_trimmed = args.trimLeft(); + const trimmed = args.trimRight(); + + this.add_error({ + col: args_col + args.length - left_trimmed.length, + length: trimmed.length, + message: "Instruction arguments expected.", + }); + } else { + const varargs = + opcode.params.findIndex( + p => p.type === Type.U8Var || p.type === Type.ILabelVar + ) !== -1; + + const param_count = + opcode.params.length + (this.manual_stack ? 0 : opcode.stack_params.length); + + if (varargs ? arg_tokens.length < param_count : arg_tokens.length !== param_count) { + this.add_error({ + col, + length: op.length + args.trimRight().length, + message: `Expected${varargs ? " at least" : ""} ${param_count} argument${ + param_count === 1 ? "" : "s" + }, got ${arg_tokens.length}.`, + }); + } else if (varargs || arg_tokens.length === opcode.params.length) { + this.parse_args(opcode.params, arg_tokens, ins_args); + } else { + const stack_args: Arg[] = []; + this.parse_args(opcode.stack_params, arg_tokens, stack_args); + + for (let i = 0; i < opcode.stack_params.length; i++) { + const param = opcode.stack_params[i]; + const arg = stack_args[i]; + const col = arg_tokens[i].col; + const length = arg_tokens[i].arg.length; + + if (arg == undefined) { + continue; + } + + switch (param.type) { + case Type.U8: + case Type.Register: + this.add_instruction(Opcode.arg_pushb, [arg]); + break; + case Type.U16: + case Type.ILabel: + case Type.DLabel: + this.add_instruction(Opcode.arg_pushw, [arg]); + break; + case Type.U32: + case Type.I32: + case Type.F32: + this.add_instruction(Opcode.arg_pushl, [arg]); + break; + case Type.String: + this.add_instruction(Opcode.arg_pushs, [arg]); + break; + default: + this.add_error({ + col, + length, + message: `Type ${Type[param.type]} not implemented.`, + }); + } + } + } + } + + this.add_instruction(opcode, ins_args); + } + } + + private tokenize_args(arg_str: string, col: number, args: ArgToken[]): boolean { + if (arg_str.trim().length === 0) { + return true; + } + + let match: RegExpMatchArray | null; + + if (args.length === 0) { + match = arg_str.match(/^(?\s+)(?"([^"\\]|\\.)*"|[^\s,]+)\s*/); + } else { + match = arg_str.match(/^(?,\s*)(?"([^"\\]|\\.)*"|[^\s,]+)\s*/); + } + + if (!match || !match.groups) { + return false; + } else { + const { arg_ws, arg } = match.groups; + args.push({ + col: col + arg_ws.length, + arg, + }); + + return this.tokenize_args(arg_str.slice(match[0].length), col + match[0].length, args); + } + } + + private parse_args(params: Param[], arg_tokens: ArgToken[], args: Arg[]): void { + for (let i = 0; i < params.length; i++) { + const param = params[i]; + const arg_token = arg_tokens[i]; + const arg_str = arg_token.arg; + const col = arg_token.col; + const length = arg_str.length; + + switch (param.type) { + case Type.U8: + this.parse_uint(arg_str, 1, args, col); + break; + case Type.U16: + case Type.ILabel: + case Type.DLabel: + this.parse_uint(arg_str, 2, args, col); + break; + case Type.U32: + this.parse_uint(arg_str, 4, args, col); + break; + case Type.I32: + this.parse_sint(arg_str, 4, args, col); + break; + case Type.F32: + this.parse_float(arg_str, args, col); + break; + case Type.Register: + this.parse_register(arg_str, args, col); + break; + case Type.String: + this.parse_string(arg_str, args, col); + break; + case Type.U8Var: + this.parse_uint_varargs(arg_tokens, i, 1, args); + return; + case Type.ILabelVar: + this.parse_uint_varargs(arg_tokens, i, 2, args); + return; + default: + this.add_error({ + col, + length, + message: `Type ${Type[param.type]} not implemented.`, + }); + break; + } + } + } + + private parse_uint(arg_str: string, size: number, args: Arg[], col: number): void { + const bit_size = 8 * size; + const value = parseInt(arg_str, 10); + const max_value = Math.pow(2, bit_size) - 1; + + if (!/^\d+$/.test(arg_str)) { + this.add_error({ + col, + length: arg_str.length, + message: `Expected unsigned integer.`, + }); + } else if (value > max_value) { + this.add_error({ + col, + length: arg_str.length, + message: `${bit_size}-Bit unsigned integer can't be greater than ${max_value}.`, + }); + } else { + args.push({ + value, + size, + }); + } + } + + private parse_sint(arg_str: string, size: number, args: Arg[], col: number): void { + const bit_size = 8 * size; + const value = parseInt(arg_str, 10); + const min_value = -Math.pow(2, bit_size - 1); + const max_value = Math.pow(2, bit_size - 1) - 1; + + if (!/^-?\d+$/.test(arg_str)) { + this.add_error({ + col, + length: arg_str.length, + message: `Expected signed integer.`, + }); + } else if (value < min_value) { + this.add_error({ + col, + length: arg_str.length, + message: `${bit_size}-Bit signed integer can't be less than ${min_value}.`, + }); + } else if (value > max_value) { + this.add_error({ + col, + length: arg_str.length, + message: `${bit_size}-Bit signed integer can't be greater than ${max_value}.`, + }); + } else { + args.push({ + value, + size, + }); + } + } + + private parse_float(arg_str: string, args: Arg[], col: number): void { + const value = parseFloat(arg_str); + + if (!Number.isFinite(value)) { + this.add_error({ + col, + length: arg_str.length, + message: `Expected floating point number.`, + }); + } else { + args.push({ + value, + size: 4, + }); + } + } + + private parse_register(arg_str: string, args: Arg[], col: number): void { + const value = parseInt(arg_str.slice(1), 10); + + if (!/^r\d+$/.test(arg_str)) { + this.add_error({ + col, + length: arg_str.length, + message: `Expected register reference.`, + }); + } else if (value > 255) { + this.add_error({ + col, + length: arg_str.length, + message: `Invalid register reference, expected r0-r255.`, + }); + } else { + args.push({ + value, + size: 1, + }); + } + } + + private parse_string(arg_str: string, args: Arg[], col: number): void { + if (!/^"([^"\\]|\\.)*"$/.test(arg_str)) { + this.add_error({ + col, + length: arg_str.length, + message: `Expected string.`, + }); + } else { + const value = JSON.parse(arg_str); + args.push({ + value, + size: 2 + 2 * value.length, + }); + } + } + + private parse_uint_varargs( + arg_tokens: ArgToken[], + index: number, + size: number, + args: Arg[] + ): void { + for (; index < arg_tokens.length; index++) { + const arg_token = arg_tokens[index]; + const col = arg_token.col; + this.parse_uint(arg_token.arg, size, args, col); } } } - -function parse_uint( - arg_str: string, - size: number, - args: Arg[], - line: number, - col: number, - errors: AssemblyError[] -): void { - const bit_size = 8 * size; - const value = parseInt(arg_str, 10); - const max_value = Math.pow(2, bit_size) - 1; - - if (!/^\d+$/.test(arg_str)) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Expected unsigned integer.`, - }); - } else if (value > max_value) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `${bit_size}-Bit unsigned integer can't be greater than ${max_value}.`, - }); - } else { - args.push({ - value, - size, - }); - } -} - -function parse_sint( - arg_str: string, - size: number, - args: Arg[], - line: number, - col: number, - errors: AssemblyError[] -): void { - const bit_size = 8 * size; - const value = parseInt(arg_str, 10); - const min_value = -Math.pow(2, bit_size - 1); - const max_value = Math.pow(2, bit_size - 1) - 1; - - if (!/^-?\d+$/.test(arg_str)) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Expected signed integer.`, - }); - } else if (value < min_value) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `${bit_size}-Bit signed integer can't be less than ${min_value}.`, - }); - } else if (value > max_value) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `${bit_size}-Bit signed integer can't be greater than ${max_value}.`, - }); - } else { - args.push({ - value, - size, - }); - } -} - -function parse_float( - arg_str: string, - args: Arg[], - line: number, - col: number, - errors: AssemblyError[] -): void { - const value = parseFloat(arg_str); - - if (!Number.isFinite(value)) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Expected floating point number.`, - }); - } else { - args.push({ - value, - size: 4, - }); - } -} - -function parse_register( - arg_str: string, - args: Arg[], - line: number, - col: number, - errors: AssemblyError[] -): void { - const value = parseInt(arg_str.slice(1), 10); - - if (!/^r\d+$/.test(arg_str)) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Expected register reference.`, - }); - } else if (value > 255) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Invalid register reference, expected r0-r255.`, - }); - } else { - args.push({ - value, - size: 1, - }); - } -} - -function parse_string( - arg_str: string, - args: Arg[], - line: number, - col: number, - errors: AssemblyError[] -): void { - if (!/^"([^"\\]|\\.)*"$/.test(arg_str)) { - errors.push({ - line_no: line, - col, - length: arg_str.length, - message: `Expected string.`, - }); - } else { - const value = JSON.parse(arg_str); - args.push({ - value, - size: 2 + 2 * value.length, - }); - } -} - -function parse_uint_varargs( - arg_tokens: ArgToken[], - index: number, - size: number, - args: Arg[], - line: number, - errors: AssemblyError[] -): void { - for (; index < arg_tokens.length; index++) { - const arg_token = arg_tokens[index]; - const col = arg_token.col; - parse_uint(arg_token.arg, size, args, line, col, errors); - } -} diff --git a/src/scripting/assembly_worker.ts b/src/scripting/assembly_worker.ts index d099cf79..9545c2ec 100644 --- a/src/scripting/assembly_worker.ts +++ b/src/scripting/assembly_worker.ts @@ -1,4 +1,4 @@ -import { NewErrorsOutput, ScriptWorkerInput } from "./assembler_messages"; +import { NewObjectCodeOutput, ScriptWorkerInput } from "./assembler_messages"; import { assemble } from "./assembly"; const ctx: Worker = self as any; @@ -65,8 +65,8 @@ function process_messages(): void { } } - const response: NewErrorsOutput = { - type: "new_errors_output", + const response: NewObjectCodeOutput = { + type: "new_object_code_output", ...assemble(lines), }; ctx.postMessage(response); diff --git a/src/scripting/disassembly.ts b/src/scripting/disassembly.ts index 2e1f26fb..e1969c47 100644 --- a/src/scripting/disassembly.ts +++ b/src/scripting/disassembly.ts @@ -1,48 +1,49 @@ -import { Arg, Instruction, Param, Type } from "../data_formats/parsing/quest/bin"; +import { Arg, Param, Segment, SegmentType, Type } from "../data_formats/parsing/quest/bin"; /** - * @param manual_stack If true, will ouput stack management instructions (argpush variants). Otherwise stack management instructions will not be output and their arguments will be output as arguments to the instruction that pops them from the stack. + * @param manual_stack If true, will output stack management instructions (argpush variants). Otherwise the arguments of stack management instructions will be output as arguments to the instruction that pops them from the stack. */ -export function disassemble( - instructions: Instruction[], - labels: Map, - manual_stack: boolean = false -): string[] { +export function disassemble(object_code: Segment[], manual_stack: boolean = false): string[] { const lines: string[] = []; - const index_to_label = new Map([...labels.entries()].map(([l, i]) => [i, l])); - const stack: Arg[] = []; - for (let i = 0; i < instructions.length; ++i) { - const ins = instructions[i]; - const label = index_to_label.get(i); + for (const segment of object_code) { + if (segment.type === SegmentType.Data) { + continue; + } - if (!manual_stack && ins.opcode.push_stack) { - stack.push(...ins.args); - } else { - let args = args_to_strings(ins.opcode.params, ins.args); + if (segment.label !== -1) { + lines.push(`${segment.label}:`); + } - if (!manual_stack) { - args.push( - ...args_to_strings( - ins.opcode.stack_params, - stack.splice( - Math.max(0, stack.length - ins.opcode.stack_params.length), - ins.opcode.stack_params.length + for (const instruction of segment.instructions) { + if (!manual_stack && instruction.opcode.push_stack) { + stack.push(...instruction.args); + } else { + let args = args_to_strings(instruction.opcode.params, instruction.args); + + if (!manual_stack) { + args.push( + ...args_to_strings( + instruction.opcode.stack_params, + stack.splice( + Math.max(0, stack.length - instruction.opcode.stack_params.length), + instruction.opcode.stack_params.length + ) ) - ) + ); + } + + lines.push( + " " + + instruction.opcode.mnemonic + + (args.length ? " " + args.join(", ") : "") ); } - - if (label != null) { - lines.push(`${label}:`); - } - - lines.push(" " + ins.opcode.mnemonic + (args.length ? " " + args.join(", ") : "")); } } - // Ensure newline. + // Ensure newline at the end. if (lines.length) { lines.push(""); } @@ -64,7 +65,7 @@ function args_to_strings(params: Param[], args: Arg[]): string[] { switch (type) { case Type.U8Var: - case Type.U16Var: + case Type.ILabelVar: for (; i < args.length; i++) { arg_strings.push(args[i].value.toString()); } diff --git a/src/ui/quest_editor/AssemblyEditorComponent.tsx b/src/ui/quest_editor/AssemblyEditorComponent.tsx index 91c480fe..59891837 100644 --- a/src/ui/quest_editor/AssemblyEditorComponent.tsx +++ b/src/ui/quest_editor/AssemblyEditorComponent.tsx @@ -3,7 +3,7 @@ import { editor, languages, MarkerSeverity } from "monaco-editor"; import React, { Component, createRef, ReactNode } from "react"; import { AutoSizer } from "react-virtualized"; import { OPCODES } from "../../data_formats/parsing/quest/bin"; -import { Assembler } from "../../scripting/Assembler"; +import { AssemblyAnalyser } from "../../scripting/AssemblyAnalyser"; import { quest_editor_store } from "../../stores/QuestEditorStore"; import { Action } from "../../undo"; import styles from "./AssemblyEditorComponent.css"; @@ -130,7 +130,7 @@ type MonacoProps = { class MonacoComponent extends Component { private div_ref = createRef(); private editor?: editor.IStandaloneCodeEditor; - private assembler?: Assembler; + private assembler?: AssemblyAnalyser; private disposers: (() => void)[] = []; render(): ReactNode { @@ -149,7 +149,7 @@ class MonacoComponent extends Component { wrappingIndent: "indent", }); - this.assembler = new Assembler(); + this.assembler = new AssemblyAnalyser(); this.disposers.push( this.dispose, @@ -182,7 +182,7 @@ class MonacoComponent extends Component { const quest = quest_editor_store.current_quest; if (quest && this.editor && this.assembler) { - const assembly = this.assembler.disassemble(quest.instructions, quest.labels); + const assembly = this.assembler.disassemble(quest.object_code); const model = editor.createModel(assembly.join("\n"), "psoasm"); quest_editor_store.script_undo.action = new Action( diff --git a/test/resources/quest27_e.bin b/test/resources/quest27_e.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d72d20aab4c820ee6dc66b492ad0d2af3107f18 GIT binary patch literal 81173 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 F{{uwpWl;bC literal 0 HcmV?d00001 diff --git a/test/resources/quest27_e.qst b/test/resources/quest27_e.qst new file mode 100644 index 0000000000000000000000000000000000000000..1646d3c7d660f014d6c8c34ee7acb1b4743df517 GIT binary patch literal 111056 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á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