Как стать автором
Обновить
22
-1
Наумов Роман @himysay

Пользователь

Отправить сообщение

Прошу прощения, не очень понял вопрос, но мне кажется вы путаетесь где то в сексциях кода, возможно семпл лежит в банке который не включен. На самом деле без разницы где он в PRG лежит главное вызвать собственно порты модуляции APU

Позже попробую обязательно так сделать, тут мне важно было рабочий вариант сделать. Спасибо.

Тут вынуждено, в вашем случае 0 внутри цикла необработается. То есть x=1 dex x=0 и уже зеро флаг будет установлен и алгоритм дальше пойдет. Если x не нужен так и кручу в обратном направлении

Больше саморазвитие

Вам спасибо за замечание, но тут ключевое функционал а не перфекционизм, можно конечно всё по солиду разложить, сделать фабричный метод, и DI это Я сделаю чуть позже, в планах сделать полноценный дизассемблер с поддержкой маперов. Что касается обработки ошибки, там пока в ней нет необходимости.

Да именно просто номер строки в пхп шторме, а так как минимум внутренний указатель адреса должен быть в любом случае, но хочу прежде написать простой скрипт ассемблера.

В упор не вижу где в десятичном виде адреса команд?

Могу предложить что zeropage в 8-ми битных процессорах был именно для оптимизации, всё переменные отправлялись туда и имели приоритетный доступ. Если провести аналогии то так же можно хранить и строковые константы, а можно не хранить а использовать как последовательность байт. Да и даже в ассемблере 6502, строка вообще не кретична, более кретична например карта уровня и битовая маска коллизий, или же работа с последовательным портом, или отрисовка спрайтов которую приходиться оптимизировать с помощью циклов.

В корне просто надо понять что маппер переключает банки памяти, а управляется за частую серийными портами. Если смотреть на тот что в статье, надо все значения с диапазона завернуть на начальный адресс, и потом 5-7 вызовов подряд взять последний бит. Которые записать последовательно и получить байт и уже переключать память, и исполнять байт-код в соответствующих страницах. Но надо учитывать что каждый маппер это своя реализация интерпретации его, например ммс3 ещё надо учитывать векторы прерывания IRQ, которые им генерируются. Но честно я голову ломал неделю как заюзать маппер, самое сложное была конфигурации линкера

Я больше практик, но если уж разрабатывать компилятор, надо делать статический анализатор,который будет разбирать код на части и проверять синтаксис на прекомпиляции, и не просто регулярками а формируя стэк вызова тех или иных функций и смотреть их порядок вызовов, тоже касается конструкций ты, элсе и так далее, тоже касается типов. В любом случае всё это надо закладывать изначально ибо в будущем придёшь к Си подобному языку, ибо JS, TS то же синтаксически похож на си++

Согласен, хорошая книга, но там нет информации по использованию мапперов, по этому не включил в ссылки в конце. А так часто сам от туда черпаю информацию. И еще в просторах интернета...

Так что это один из 6-ти регистров процессора 6502

Потому что перевод по всей видимости дословный

Интересно, ни разу не встречал такого поведения, но зато постоянно с другим поведением кажущимся неправильным но когда углубляешься в флаги становится более понятно что к чему. В переключение nametable для коллизий сейчас проблема. Для первого к примеру можно сделать ADC $20 и это сработает с 20 - 23 младший байт. Но при определении что герой находиться на 2-й таблице вроде сделать бы ADC $24 и вот не могу никак найти как это сделать)) просто есть идея сэкономить и брать просто номер спрайта с таблице имён и по нему определять коллизии на фоновые платформы. Для первой таблице работает, для второй никак, там ещё особенности в адресации PPU могут вызывать как прокрутку так и может переключить nametable. Вот и не могу это победить никак)

Благодарю, поправил!

Я просто разбил код на подпрограммы которые не превышают данный лимит. У меня был к стати момент когда я этот лимит обходил конструкцией с несколькими JMP )) сначала JMP перескакивает метку в середине, и если надо в начало вернуться то делаем Branch на метку где был jmp в середине на начало ))) На самом деле не знаю про такой баг, знаю что сравнение с 0 и при декременте может не особо очевидно работать. Возможно это один и тот же баг.

Спасибо! На самом деле я пока сам больше использую переменные в zeropage, но так как zeropage не резиновая надо будет в некоторых участках использовать pha/pla ну или "TXA/PHA/TYA/PHA ..Какая то логика.. PLA/TAY/PLA/TAX ... продолжение логики". Так же сегодня столкнулся с тем что секция RODATA переполнена а значит пришло время использовать мапер пока выбрал MMC3. При этом я так понял он может вызывать прерывание irq по счетчику строк, во многих игр статус бар реализован как часть фона который не прокручивается. Данные карт и коллизий можно положит в переключаемую память PRG.

Да согласен особого скила объяснять нет, но есть желание поделиться знаниями, вдруг пригодится, Я сам искал информацию как реализовать, в итоге только сотни статей по духу а вот были игры и у них была система камер. В итоге где то подсмотрел где то допилил. Где то разобрался что nametable не 32х32 а 4х255 и в итоге допилил формулу определения плитки, опять же анимация сменой атрибута плитки из 4-х спрайтов, коллизии на спрайт фона, что бы с экономить место в RODATA и ещё много моментов которые вот просто так не описаны, Я конечно постараюсь писать более понятно, надеюсь у меня это получится.

В первую очередь бороться надо с причинами а не с "симптомами". А все причины в корне это неудовлетворение своих первичных потребностей: физиологических (сон, еда, секс), экзистенциальных (безопасность), социальных (принадлежность к определенным социальным и рабочим группам), потребности в уважение (карьерный рост, уважение, статус), потребности в саморазвитие.
Тут можно сразу различить всего 2 корневые причины выгорания:
1. Не реализованы физиологические потребности, проблемы в личной жизни и так далее.
2. Не реализованы все остальные за исключением физиологических потребностей.
Работа в свою очередь должна соответствовать и удовлетворять эти потребности:

  • Безопасность - Стабильная зарплата

  • Социальная потребность - Хороший коллектив, дружеские отношения.

  • Потребность в уважение - карьера, уважение.

  • Саморазвитие - рост, познания чего либо.

Итого если посмотреть на большинство современных компаний, то это большинство никогда не будет соответствовать этим требованиям, потому что в реальности:

  1. Безопасности - нет чувства стабильности, обещают златые горы а в итоге 80% премии и серые зарплаты.

  2. Социальная потребность - В основном коллективы разделены на группы, это естественно и правильно, но часто эти группы объединяются против кого то, что собственно разрушает все коллектив, провоцирует конфликты.

  3. Потребность в уважение - Уважение, карьерный и зарплатный рост, уж очень редко, 1 раз за 12 лет работы повысили ЗП на 1238 рублей что бы на руки получал на то что договаривались

  4. Саморазвитие - Заканчивается после 3 месяцев, когда задачи становятся однотипными.

Итог, те кто работают с людьми должны больше уделять внимания классической психологии, и не придумывать что то типа "отдыхать", "бегать" или ещё что то. Всё просто когда поголовно выгорают сотрудники, первый вопрос должен быть а что им не хватает?...

Большое спасибо за Ваш комментарий, экспериментально Я подошёл к этому но не стал писать дабы не ошибиться и не внести смуту )) Пунктуацию постараюсь поправить.

1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность