Форум Эму-Россия
http://forum.emu-russia.net/

Использование всех адресов Zero Page
http://forum.emu-russia.net/viewtopic.php?f=214&t=5074
Страница 1 из 1

Автор:  VEG [ 08 ноя 2013, 23:16 ]
Заголовок сообщения:  Использование всех адресов Zero Page

Изучаю ассемблер 6502. В одном из учебников встретилось такое:
Цитата:
$0000-$00FF – “Нулевая страница” (Zero Page) – используется для системных целей (для программ предпочтительны адреса $10-$9F, прочие лучше не трогать). Процессор имеет отдельные инструкции, обеспечивающие быстрый доступ к нулевой странице.

Но почему — не объясняется. Я же вижу, что в том же Battle City первые 16 байт активно используются. Так есть ли подводные камни, или всё-таки можно использовать любые адреса в Zero Page для своих целей?

Автор:  GManiac [ 09 ноя 2013, 01:16 ]
Заголовок сообщения:  Re: Использование всех адресов Zero Page

Можно, игры это и делают. Нулевая страница укорачивает размер инструкции и ускоряет её выполнение.
Почему не советуют пользоваться нулевой страницей: обычно учебники по ассемблеру пишут с предположением, что есть некая ОС, которая занимает какую-то часть памяти, а пользователь пишет свою программу, которая бы работала под управлением ОСи. В таком случае действительно ОС скорей всего использовала бы нулевую страницу, и юзеру не рекомендуется туда лезть. Но в приставках не ОСи.

Автор:  VEG [ 09 ноя 2013, 17:40 ]
Заголовок сообщения:  Re: Использование всех адресов Zero Page

Спасибо за информацию. Будем значит вовсю использовать :)

Автор:  org [ 10 ноя 2013, 15:38 ]
Заголовок сообщения:  Re: Использование всех адресов Zero Page

Обычно на нулевой странице хранятся всякие однобайтовые переменные, которые влияют на логику игры (типа флагов, очков, координат героя итп.)

Первая страница понятное дело для стека.

А вторая страница обычно используется для DMA пересылки спрайтов (каждый Vblank). Рефрешить спрайтовую память PPU необходимо потому что она постоянно "утекает" (там используется специальный тип памяти, что-то типа DRAM, но без рефреш-логики)

Ну а остальная WRAM (work RAM, так называется RAM в NES) используется для разнообразных буферов, типа карты уровня, врагов, итп.

Но это не обязательное распределение памяти, просто разработчики так обычно делали. Но вообще можно использовать как хочешь, главное не забывай что первая страница для стека и она "заворачивается" при переполнении (слишком много вложенных JSR делать нельзя)

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/