Structure of the JSON object for the test config files:
-------------------------------------------------------

"rom" (string)
    Path of the ROM to be loaded for testing

"transfer_files" (array of strings)
    Path(s) of the file(s) to be transferred after emulation has started

"target" (object)
    Program properties: "name" -> string (ASCII name of the program, @ is theta) ; "isASM" -> boolean.

"delay_after_key" (integer, 0<x<10000)
    The number of ms to wait for after each pressed key

"delay_after_step" (integer, 0<x<10000)
    The number of ms to wait for after each sequence step

"sequence" (array of strings)
    Sequential list of commands.
    Format: "command|arg", with commands and arguments being:
        action|x (with x being one of: launch (to launch the target program), reset (to reset the emulation), useClassic (to use CLASSIC and not MathPrint)
        delay|num (with num being a number of milliseconds to wait for)
        hash|hashName (the hash param's key (string), as defined later in your JSON)
        hashWait|hashName (the hash param's key (string), as defined later in your JSON)
        key|keyName (with keyName being one of the ones in the source code, see autotester.cpp, valid_keys)
        hold|keyName (with keyName being one of the ones in the source code, see autotester.cpp, valid_keys)
        release|keyName (with keyName being one of the ones in the source code, see autotester.cpp, valid_keys)
        sendCSC|keyName[|keyName...] (with keyName being one of the ones in the source code, see autotester.cpp, valid_keys)

"hashes" (array of objects)
    each object's key corresponds to the name of the hash (params).
    each object has the following properties:
        - "description" (string)
            Just to explain what this hash is for
        - "start" (string of number in decimal or hexadecimal if prefixed by 0x)
            The pointer/address, or the name of a few common locations: "vram_start", "vram2_start", "ram_start", "textShadow", "cmdShadow", "pixelShadow", "pixelShadow2", "cmdPixelShadow "plotSScreen", "saveSScreen", "UserMem", "CursorImage"
        - "size" (number (decimal only), or string of number in decimal or hexadecimal if prefixed by 0x)
            The length of the area that will be hashed. The number itself or string of a few common sizes: "vram_8_size", "vram_16_size", "ram_size"
        - "expected_CRCs" (array of strings (in hex, without a prefix)): one or several expected/valid CRCs
        - "timeout" (optional: positive integer): if a hashWait action is used, sets the maximum ms to wait for

