Содержание
Тип указывается в окне создания/редактирования брейкпоинта.
Брейкпоинт можно создать и без указания типа. В любой момент его можно отредактировать.
Типы Read (чтение), Write (запись) и Execute (выполнение) могут быть активны одновременно. Тип Forbid (запрет) выставляется отдельно, отменяя все остальные типы.
Список инструкций, активирующих Read и Write брейкпоинты, смотри в разделе с инструкциями процессора. Некоторые инструкции, например INC и DEC, способны вызывать срабатывание как Read, так и Write брейкпоинтов, из-за механики работы этих инструкций.
Причина кроется в подсветке брейкпоинта в списке, условие которого было выполнено. Если создать 2 отдельных брейкпоинта с одинаковым условием на адрес, и разделив между ними условия Read и Write, то при срабатывании брейкпоинта ты сразу поймешь какой из них сработал по синему выделению.
Но если ты создашь один брейкпоинт с условиями Read и Write одновременно, он будет подсвечен независимо от того, какое из этих двух условий было выполнено.
Понять это можно будет только по инструкции, которая вызвала срабатывание брейкпоинта. Поэтому лучше не выставлять эти 2 условия в одном брейкпоинте одновременно.
Выбери тип брейкпоинта для просмотра информации по нему.
Read | Write | Execute | Forbid |
Условие на чтение из адреса. Брейкпоинт сработает при попытке процессора считать байт из адреса, указанного в условии.
С помощью условия Read можно понять каким образом байт, записанный в некий адрес, влияет на игру, определив код, который считывает этот байт. Следовательно, можно определить за что отвечает данный адрес.
Read брейкпоинт отображается с флагом R.
Условие на запись в адрес. Брейкпоинт сработает при попытке процессора записать байт в адрес, указанный в условии.
С помощью условия Write можно найти, например, запись начального количества жизней, здоровья, таймеров. Также Write брейкпоинт поможет найти код, который изменяет это количество в процессе игры.
Write брейкпоинт отображается с флагом W.
Условие на выполнение инструкции по адресу. Брейкпоинт сработает при попытке процессора выполнить инструкцию, расположенную по адресу, указанному в условии брейкпоинта.
С помощью условия Execute можно выяснить предназначение незнакомой подпрограммы, определив игровой момент, при котором код этой подпрограммы будет задействован. Также может использоваться в качестве закладок, чтобы остановить игру до того, как срабатывает брейкпоинт на интересующем адресе RAM, чтобы подробнее изучить предшествующий код.
Тип Execute недоступен для условия на тип памяти PPU Memory и Sprite Memory. Если поставить Execute, а затем изменить память с CPU Memory на другой тип, условие Execute будет деактивировано при сохранении.
Чтобы быстро добавить Execute брейкпоинт по нужному адресу, дважды кликни по адресу слева от инструкции. В появившемся окне уже будет стоять галочка на Execute, достаточно сохранить предложенный брейкпоинт.
Дополнительное условие K==#xx в поле ввода Condition, которое добавляется автоматически при создании Execute брейкпоинта, означает условие на PRG банк под номером #$xx. Номер банка указан слева от адреса инструкции.
Execute брейкпоинт отображается с флагом X.
Для Execute брейкпоинта в поле ввода адреса можно вводить сокращения RST, NMI (или VBL) и IRQ вместо адресов обработчиков сооветствующих прерываний процессора. При сохранении брейкпоинта адрес будет автоматически заменен на нужный.
Эти сокращения можно вводить и для любых других типов условий брейкпоинта, однако смысл это делать есть только для Execute, чтобы изучить код этих обработчиков.
Если маппер игры позволяет переключать PRG банки, то при наличии дополнительного условия K==#xx во время ввода сокращений следует правильно указать номер банка, или же удалить это условие, иначе брейкпоинт не будет срабатывать там, где это было задуманно.
Запрещает инструкциям, находящимся по адресам, указанных в условии Forbid брейкпоинта, вызывать срабатывание Read, Write и Execute брейкпоинтов. Если условие некого брейкпоинта выполняется, но в то же время существует Forbid брейкпоинт на адрес расположения этой инструкции процессора, срабатывание по данному адресу будет проигнорировано и эмуляция продолжится.
Forbid не блокирует срабатывание прочих типов брейкпоинтов, которые описаны в отдельной статье.
С помощью условия Forbid можно отключить лишние срабатывания брейкпоинтов в определенных местах. Это значительно упрощает поиск дополнительных срабатываний брейкпоинта, особенно когда тот срабатывает ежекадрово и/или мест срабатываний довольно много.
К примеру, если некий Read брейкпоинт срабатывает на инструкциях, находящихся по адресам $8765 и $9876, то при создании Forbid брейкпоинта на адрес $8765 (или на диапазон адресов, включающий $8765), Read брейкпоинт станет срабатывать только на адресе $9876. Если поставить Forbid еще и на $9876, Read брейкпоинт вообще перестанет срабатывать на данный момент, что позволит тебе найти еще какие-то срабатывания, продолжив играть в обычном режиме со все еще активированным Read брейкпоинтом.
Можно быстро добавить Forbid брейкпоинт точно также, как и Execute, дважды кликнув по адресу слева от инструкции. В появившемся окне нужно выставить условие Forbid перед сохранением брейкпоинта.
Forbid брейкпоинт отображается с флагом F.