Автор Тема: [NES] Мой NES ASM Компилятор  (Прочитано 6379 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« : 08 Октябрь 2017, 04:42:59 »
Короче, я создал, собственный NES ASM компилятор. В теме:
https://www.emu-land.net/forum/index.php/topic,78955.0.html
оно уже, освещалось. Я подумал, бы о том, какие были бы пожелания. Может он, не понимает каких нибудь недокументированных команд? Которые, не помешало бы ему знать.
К примеру существует, стандартный NES ASM, на котором многие, уже и пишут. Но так ли хорош, этот кашерный асм? И не связывает ли он руки проггеру, в самых неожиданных местах? Запрещая что либо делать? Даже слишком элементарное?

И ещё вопрос, к знающим людям. Как в макро нес асемблере, писалась бы, как бы вот такая по смыслу команда?

.DB $DC

Тотько длинная. Со смыслом:

.DB "DE 4A 56F 08A"

Т.е. команда, которая, бы просто, втискивала в код, строку из любых байт?

Добавлено позже:
Я имею, ввиду эту самую команду, правильно оформленную, по синтаксису.
И уже буквально, следующим сообщением, ассемблер, будет её знать.

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #1 : 08 Октябрь 2017, 19:19:35 »
Но так ли хорош, этот кашерный асм?
Да.
Как в макро нес асемблере, писалась бы, как бы вот такая по смыслу команда?
Скачайте asm6.zip и в readme изучите директиву HEX.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #2 : 08 Октябрь 2017, 22:30:26 »
запили поддержку структур (как в Си), и цены компилю не будет  :cool:
Там логика в принцыпе элементарна

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3593
    • Twitter
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #3 : 09 Октябрь 2017, 01:23:21 »
поддержка блекджека, шлюх и многократно вложенных макросов - и я перейду на этот компилятор.. ну еще релатив-локал ссылки, описатели процедур, в пределах которых можно делать локальные ссылки, использование макро структур в качестве токенов в любом месте кода, а не только как отдельный элемент (не только как строку текста, а и как элемент массива в числе прочих обычных элементов)... поддержка релатив орг директив, и форснутых орг директив, которые бы вписывали код по заданному адресу в выходном файле, поддержку списков символов для каждого файла, чтобы не приходилось асмить кучу сорсов на каждый отдельный бинарник... поддержку банков и мапперов денди лол а еще к этому символьный отладчик, который сам сопоставляет место в сорсе со смещением в откомпилированном файле и может сделать там бряку....

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #4 : 09 Октябрь 2017, 06:06:00 »
поддержка блекджека, шлюх и многократно вложенных макросов - и я перейду на этот компилятор.. ну еще релатив-локал ссылки, описатели процедур, в пределах которых можно делать локальные ссылки, использование макро структур в качестве токенов в любом месте кода, а не только как отдельный элемент (не только как строку текста, а и как элемент массива в числе прочих обычных элементов)... поддержка релатив орг директив, и форснутых орг директив, которые бы вписывали код по заданному адресу в выходном файле, поддержку списков символов для каждого файла, чтобы не приходилось асмить кучу сорсов на каждый отдельный бинарник... поддержку банков и мапперов денди лол а еще к этому символьный отладчик, который сам сопоставляет место в сорсе со смещением в откомпилированном файле и может сделать там бряку....

Давайте, я на этот вопрос, отвечу неожиданно (для проггера) просто. Надо просто взять, чужой уже готовый компилятор, какого нибудь, не имеющего отношения к реальному рейтингу C++.
И перевести его выходной exe асм - на nes asm. Получилась бы не ваша - не наша.


запили поддержку структур (как в Си), и цены компилю не будет  Там логика в принцыпе элементарна

Я о таком, подобном естественно думал. Типа, чтобы собственные макросы можно было бы писать, внутри самой программы.
Но сейчас, меня интересовали бы вопросы, основопологающие, реальные. Я как реальный программист, рассуждал бы о реальном. Я бы спрашивал только из срвнения одного Ассемблера с другим асемблером.


Скачайте asm6.zip и в readme изучите директиву HEX

А нельзя, её просто назвать как команду. Это было бы нужно, для совместимостей исходников под разные асмы.


Добавлено позже:
Следовало бы, заметить вообще, для начала, элементарное. Что я и заметил сам. Настоящий nes ром, может быть только фиксированных размеров. Не зависимо от длинны програмного кода, нес файл, может быть не менее определённого, минимального числа килобайт. Я естественно, собираюсь приближать проект до состояния этих возможностей, не зависимо от знаний реальной архитектуры.

А может ли асм asm6.zip, при набирании, в нём каких нибудь, всего трёх команд, в итоге создать функционабельный ром? Без слишком большого пристрастия к знаниям архитектуры?
« Последнее редактирование: 09 Октябрь 2017, 06:19:17 от Ximial »

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #5 : 16 Июнь 2018, 21:01:37 »
 Добавил свою утилиту в виде jpg-zip-WinRar архива.
Программу корректор кода из под NES-дизассемблера.
Чистит выходящий из него код от мусора для дальнейшего компилирования его на представленном мною ассемблере. Архив с программой находится в картинке.

Добавлено позже:
Jpg файл откроется как архив программой WinRar.

Оффлайн Dario

  • Пользователь
  • Сообщений: 4
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #6 : 24 Июль 2018, 07:26:04 »
Цитата
В результате получится фрагмент компилированного кода, с именем output.cod.
Лучше сделать директиву для задания имени выходного файла. Например, в кроссассемблере SjAsm+ для ZX Spectrum используется SAVEBIN "output.cod", EntryPoint, CodeSize.

Необязательно, но хорошо было бы в дополнение к raw коду генерить (при указании соотв. ключа в командной строке) и ром, который можно запустить в эмуле, хотя бы простой без маппера. Настройки вроде горизонтального/вертикального отражения, размеров CHR и PRG и т.д. задавать директивами в начале файла, а в конце - директивы с указанием адресов (меток) обработчиков RESET, NMI и IRQ. Данные для CHR брать из графического файла, BMP или PNG. Тогда можно было бы легко собрать HelloWorld, ну а потом переходить к чему-нибудь посложнее.

Относительно архитектуры - я изучаю здесь: http://dendy.migera.ru/nes/g00.html и https://wiki.nesdev.com/
Пытаюсь сделать компилятор Бейсика для NES, но пока без особых результатов.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #7 : 24 Июль 2018, 12:48:22 »
Ximial, почему не 7z?
вирусню прячешь в картинке? >:(

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #8 : 24 Июль 2018, 13:50:06 »
вот тоже интересно :) хотя вирус тотал ток 2 ноунейма дал срабатывания.

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #9 : 31 Июль 2018, 23:53:39 »
Оно написано на Delphi 7. А у него любой exe с помощью Noda да иной раз и Avasta как будто вирусный.

Добавлено позже:
Да и много ли толку в директивах имени выходного файла когда мне понятно что исходный дебагер-дизассемблер не знаком с мапперами, не отличает графику и музыку рома от программного кода.
Если этим дизасмом и пользоваться то нужно делать начало дезассемблирования в грамотном месте. Для чего нужно обрезать исходный нес от начала файла.

Добавлено позже:
SeregaZ: Скачай редактор уровней для игры Litl Mermid. Антивирус будет спокоин.
Это сдесь недалеко в этом же разделе форума.
« Последнее редактирование: 01 Август 2018, 00:06:17 от Ximial »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #10 : 01 Август 2018, 11:17:39 »
дело не в этом, а в том что приложение в посте в виде изображения - что несколько настраивает на пессимистичный лад. по правилам хорошего тона приложение следует выкладывать в какомнить zip архиве.

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #11 : 14 Август 2018, 07:32:52 »
Мне это уже в каждой теме надо писать.
Что отправка со смартфона не поддерживает файлы любого типа а только картинки. И поэтому к картинке приклеен архив. И в итоге в таком виде отправление проходит.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2427
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #12 : 14 Август 2018, 08:22:29 »
Это полностью твоя проблема. Не получается выложить с телефона - сходи к другу/соседу/на почту и выложи файл с компьютера. Или попроси чтобы кто-то перевыложил твой файл, а потом измени своё сообщение с новой ссылкой. Что за гнилые отмазки? :neznayu: (или ты собрался приучать форумчан к этим #$%*$%#ым картинкоархивам?)

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #13 : 14 Август 2018, 18:28:29 »
Не знаю... Я не волшебство. Как это целиком, полностью и только?...

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #14 : 04 Ноябрь 2018, 13:09:11 »
Добавил пару новых версий.

Добавлено позже:
Во второй версии, ничего нового кроме возможности писать комментарий после знаков *** между строк кода.

В третьей, я подозреваю ошибки но они связанны с включением новых команд.
Пока исправлять некогда.

Как меня и просили сделал возможность подключать к проекту битмап. Но я сделал чтобы подключалась только пикселная его информация.
Директиву для создания обособленного имени выходного файла также сделал.
Что касается синтаксиса добавления строки байт, типа:
.DB "45 FE"... Общем заморачиваться не стал и сделал ещё в своём синтаксисе, вот так:
.DB# 57 68;

Кажется у третьей версии, как я заподозрил может быть что-то не так с новой командой "Block" которая должна генерировать строку энного размера из ff байтов.

Добавлено позже:
Так же сделал компилятору возможность работать в режиме патчтера. Т.е. проект компилятора не создаст свой файл, а пропатчтит своим проектом какой нибудь nes-файл.

Добавлено позже:
Что касается дебагинга уже существующего дизассемблера Картэза Ральфа. Я посмотрел. И от начала Nes-файла он дэбагит правильно хотя и вместе с заголовком но смещения кода в сторону неправильной трансляции - нет. Во всяком случае при дэбагинге с самого начала файла. А в случае с фрагментами асма в середине - я так и не знаю.
Набросал пять команд своего дэбагера, а дальше делать не стал. Стало лень.
« Последнее редактирование: 04 Ноябрь 2018, 13:43:26 от Ximial »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4470
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #15 : 04 Ноябрь 2018, 16:50:44 »
Так и не научился нормально файлы выкладывать?

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #16 : 04 Ноябрь 2018, 17:20:31 »
Я пока свои сайты не научился делать увожаемый...

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #17 : 04 Ноябрь 2018, 20:55:00 »
Исправил ошибки в двух командах.
Остальные ошибки пока не выяснил.
Долго это.

Добавлено позже:
Пока исправил ошибку с новой командой ".DB#" и "Block".

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #18 : 06 Ноябрь 2018, 21:50:42 »
Опять нашёл ошибки:
SBC #$x- транслируется с ошибкой
LDX $x,Y - транслируется с ошибкой
ADC ($x,X) - вообще отсутствовала
AND $xx,Y - присутствовала но не работала

Когда смогу обновлю загрузку.

Добавлено позже:
И вообще получается непонятная картина.
Я создаю новый РОМ, идеально пустой, с правильным заголовком, сразу после заголовка пишу несколько команд (размер Рома остаётся прежним) и на fuse дебагере - этого кода вообще будто нет.
На остальных эмуляторах ром идёт как нормальный.
В других случаях на дебагере вообще не тот код который я писал а какой-то абстрактный.
« Последнее редактирование: 06 Ноябрь 2018, 22:01:07 от Ximial »

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3593
    • Twitter
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #19 : 06 Ноябрь 2018, 22:04:17 »
у меня стойкое ощущение, что этот человек сумасшедший. fuse вроде всегда был мумулятором спектрума лол...

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #20 : 07 Ноябрь 2018, 18:20:41 »
Я вроде не ошибся с названием. Эмулятор вроде назывался Fuse и на нем и до этого играли денди дампы. И никаких дополнительных платформ он не объединял.
Короче я говорил про тот эмулятор у которого есть дэбагер, который показывает карту уровня (картинку) и активные спрайты, работающую оперативную память...

Добавлено позже:
Дебаггер-код здорового рома он показывал. А в моем случае или код показывался длиннее и обстрактнее или он был весь показан как отсутствующий.

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #21 : 07 Ноябрь 2018, 18:44:33 »
Исправил ошибки и обновил версию компилятора.

Добавлено позже:
Добавил несколько простых команд позволяющих легко создавать новые, пустые Dendy-РОМы. Которые могут быть загружены в эмулятор. Пара пустых  nes-проэктов присутствует. Проект нового пустого РОМа создаётся отдельно а далее он должен дописываться следующим проектом. Так как у РОМов нельзя менять размер. Поэтому писать ассемблер-код в них надо поверх в виде нанесения патча или кряка.

Добавлено позже:
Опять ошибку нашол:
Команда: ADC ($x),Y - отсутствовала
Команда: ADC $xx,Y - нуждалась в доработке.
С исправлениями игра Battle City по крайней мере уже обратно транслировалась.

Добавлено позже:
Че-то раздел «Ромхакинг и программирование» уже отсутствует в форуме...
« Последнее редактирование: 07 Ноябрь 2018, 22:34:00 от Ximial »

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #22 : 07 Ноябрь 2018, 22:46:46 »
Нашёл раздел таки.

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #23 : 07 Ноябрь 2018, 23:01:50 »
Исправленные версии. Теперь единиц здоровья по моему у них достаточно.
У пары ромов обратную трансляцию выполнили верно.

Оффлайн Йобан Матич

  • Emu-Land Team
  • Сообщений: 2593
  • Пол: Мужской
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #24 : 07 Ноябрь 2018, 23:06:00 »
Зачем выкладывать в каких-то хитровыкрученных форматах, если можно просто прикрепить архив?

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4470
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #25 : 08 Ноябрь 2018, 01:13:59 »
или кряка
Взламывать свой же РОМ, лол?

Йобан Матич,
аффтар насколько завис во времена Денди просто. До сих пор одни оправдания и никакой конкретики, почему он так делает. Какой-то мифический телефон ему не даёт, хотя программу он как-то пишет.

Оффлайн UnderCrops

  • Пользователь
  • Сообщений: 326
  • Пол: Мужской
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #26 : 08 Ноябрь 2018, 01:20:18 »
Давно пора переименовать этот форум на "сообщество, которому все не так".

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3593
    • Twitter
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #27 : 08 Ноябрь 2018, 01:52:27 »
ребята, вы разговариваете с сумасшедшим, может даже это чей-то нейросетевой бот. у него нет смысла в текстах. а фактчекинг дает сбои лол

Оффлайн Ximial

  • Пользователь
  • Сообщений: 113
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #28 : 08 Ноябрь 2018, 16:59:10 »
Йобан Матич: А почему-бы не подзацеплять кого-то в женских темах? С контекстом соответствующим? А то у меня че-то ощущение давно не доброе...
 Если хорошего сказать - нечего, нужно ли вообще писать?
Можно и язык не знать.

CaH4e3: Встречают по одежке, а проводить давно уже хочется другим людям и сразу!
Не поздно ли о уме спрашивать из поговорки?
Я вас тоже не в том подозреваю.

Добавлено позже:
Yoti: Мне перед вами, тоже оправдываться? Музыка слух ласкает?
Вы с кем об этом пакте договаривались с тех и спрашивайте.
Глубоко копается вам чёто больно. У своих детей надо в носу ковырять.
« Последнее редактирование: 08 Ноябрь 2018, 17:49:52 от Ximial »

Оффлайн Йобан Матич

  • Emu-Land Team
  • Сообщений: 2593
  • Пол: Мужской
    • Просмотр профиля
[NES] Мой NES ASM Компилятор
« Ответ #29 : 08 Ноябрь 2018, 18:14:23 »
А почему-бы не подзацеплять кого-то в женских темах?
Там в зипе выкладывают.

CaH4e3,