Chief-NET

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Chief-NET » Архив » Пойнтеры, часть 3


Пойнтеры, часть 3

Сообщений 1 страница 8 из 8

1

Во вложении к сообщению проект документации по указателям для сайта.
Что хотелось бы от остальных участников команды.
Саша, Марат, посмотрите своим взглядом. Может быть увидите ошибки и неточности. Также хотелось бы от вас предложение для доки на платформу SNES или иную. Я бы прилохматил и добавил.
Володя, твоё мнение также важно. :)

Отредактировано Mefistotel (2014-11-09 12:39:37)

2

Для изменения указателя на 4-х байтный, необходимо изменить инструкцию PEA на другую, записывающую четыре байта в стек, а не два.

На самом деле команда pea ложит в стёк 4 байта, а не два, независимо от того сколько байт в операнде. Таким образом в стёк попадает 0x000000D2.

ля изменения указателя на 4-х байтный, необходимо изменить инструкцию PEA на другую, записывающую четыре байта в стек, а не два. В роме меняем машинный код с 487A00D24E71 на 2F3C000FFE60 (инструкция Move) и получаем:
MOVE 00 0F FE 60
Эта процедура занимает также 6 байтов, то есть 2 байта 2F3C – это код инструкции Move, а 00 0F FE 60 – наш новый 4-х байтный указатель, который был выбран исходя из свободного места в роме (диапазон адресов 0xFFE60-0xFFFFF).

Уточнение: не просто move, а move #$xxxxxxxx,-(sp). Также можно не убирать команду pea, а немного изменить её на
http://savepic.ru/6272174.png

3

Такую операцию можно проделать со всеми строками в любых играх, имеющую схожую процедуру загрузки указателей. Также вместо PEA может быть инструкция LEA.

Я думаю, это игра всего лишь исключение. Скорее всего в оригинале была длинная запись pea, которую заменили на короткую. И в других играх такое не пройдёт.

4

Спасиб, правлю. :)
********подправил.
Эх, на СНЕС бы примерчик не помешал. Но это можно после публикации добавлять.

Отредактировано Mefistotel (2014-11-10 14:44:32)

5

Добавил документацию на сайт. Пока не публиковал.

6

Так документацию выглядет на сайте.
Ссылка

7

PEA #$00D2, -(sp) NOP

Здесь не нужно указывать -(sp). PEA всегда помещает данные в стек.

8

PEA #$00D2, -(sp) NOP

Здесь не нужно указывать -(sp). PEA всегда помещает данные в стек.

Убрал.


Вы здесь » Chief-NET » Архив » Пойнтеры, часть 3