Работа с HEX

Генератор поддерживает возможность использования блока hex-end. В основном акцентируется работа для хранения данных (буфера). Для использования достаточно вызвать метод hex. Если передать 1 параметр, то генератор создаст блок с указанным количеством байт. Если 2, то будет создан блок с указанным количеством строк и колонок (column_count * row_count байт):

public class TEST : Thread {

    public override void START( LabelJump label ) {

        Comment = "1 parameter:";
        hex( 10 );

        Comment = "2 parameters:";
        hex( 6, 3 );

        end_thread();
    }

}

Разница в основном заключается только в форматировании блока. Вот так получится в результате:

//------------- THREAD TEST ---------------
:TEST
03A4: name_thread 'TEST'

// 1 parameter:
hex
00 00 00 00 00 00 00 00 00 00 
end

// 2 parameters:
hex
00 00 00 00 00 00 
00 00 00 00 00 00 
00 00 00 00 00 00 
end
004E: end_thread

Если в блоке нужно выполнять машинный код, то нужно указать в параметре строку с содержимым:

public class TEST : Thread {

    public override void START( LabelJump label ) {

        hex( @"
04 00 02 0800 04 01
04 00 02 $PLAYER_CHAR 01 @get_offset
" );

        end_thread();
    }

}

Всё это будет использовано генератором без изменений:

//------------- THREAD TEST ---------------
:TEST
03A4: name_thread 'TEST'
hex

04 00 02 0800 04 01
04 00 02 $PLAYER_CHAR 01 @get_offset

end
004E: end_thread

Это одно из немногих мест, где генератор не проводит проверку на валидность кода, поэтому использовать возможность нужно аккуратно и с умом.

Last updated